aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver
diff options
context:
space:
mode:
authorLibravatar OszkarSemerath <oszka@152.66.252.189>2017-06-10 19:05:05 +0200
committerLibravatar OszkarSemerath <oszka@152.66.252.189>2017-06-10 19:05:05 +0200
commit60f01f46ba232ed6416054f0a6115cb2a9b70b4e (patch)
tree5edf8aeb07abc51f3fec63bbd15c926e1de09552 /Solvers/VIATRA-Solver
parentInitial commit, migrating from SVN (diff)
downloadVIATRA-Generator-60f01f46ba232ed6416054f0a6115cb2a9b70b4e.tar.gz
VIATRA-Generator-60f01f46ba232ed6416054f0a6115cb2a9b70b4e.tar.zst
VIATRA-Generator-60f01f46ba232ed6416054f0a6115cb2a9b70b4e.zip
Migrating Additional projects
Diffstat (limited to 'Solvers/VIATRA-Solver')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.classpath11
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.gitignore4
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.project40
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.settings/org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguage.prefs27
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/META-INF/MANIFEST.MF26
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/build.properties9
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/patterns/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/queries/TypeAnalysis.vql223
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/plugin.xml14
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/Modality.java22
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend78
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend46
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/TypeAnalysis.xtend92
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/ContainmentIndexer.xtend41
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeIndexer.xtend194
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend102
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/InvalidIndexer.xtend53
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend244
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternProvider.xtend96
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDeclarationIndexer.xtend154
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend185
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationRefinementGenerator.xtend93
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RepairGenerator.xtend18
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeIndexer.xtend16
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeIndexerWithPreliminaryTypeAnalysis.xtend97
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeRefinementGenerator.xtend95
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeRefinementWithPreliminaryTypeAnalysis.xtend105
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/UnfinishedIndexer.xtend85
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/GoalConstraintProvider.xtend18
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend209
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/util/ParseUtil.xtend89
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.classpath8
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.gitignore4
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.project34
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/META-INF/MANIFEST.MF15
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/build.properties4
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2Logic.xtend21
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2PartialInterpretation.xtend130
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend146
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.classpath9
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.gitignore2
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.project34
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/META-INF/MANIFEST.MF27
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/build.properties10
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/BinaryElementRelationLink.java77
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/NaryRelationLink.java40
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/NaryRelationLinkElement.java50
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialConstantInterpretation.java52
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialFunctionInterpretation.java52
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java251
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialRelationInterpretation.java126
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialTypeInterpratation.java88
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialinterpretationFactory.java114
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialinterpretationPackage.java1237
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/RelationLink.java18
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/UnaryElementRelationLink.java50
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/BinaryElementRelationLinkImpl.java217
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/NaryRelationLinkElementImpl.java163
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/NaryRelationLinkImpl.java150
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialConstantInterpretationImpl.java158
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialFunctionInterpretationImpl.java158
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialInterpretationImpl.java619
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialRelationInterpretationImpl.java337
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialTypeInterpratationImpl.java231
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationFactoryImpl.java183
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java635
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/RelationLinkImpl.java39
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/UnaryElementRelationLinkImpl.java157
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/util/PartialinterpretationAdapterFactory.java282
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/util/PartialinterpretationSwitch.java302
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.aird2710
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore76
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.genmodel49
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/plugin.properties4
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/plugin.xml17
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend112
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/Descriptor.xtend214
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/FurtherNodeDescriptorWithEquivalenceCounter.xtend16
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/NeighbourhoodWithTraces.xtend11
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2Hash.xtend25
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2ImmutableTypeLattice.xtend24
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2ImmutableTypeLatticeWithEquivalenceCounter.xtend56
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2NeighbourhoodRepresentation.xtend345
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/IdentifierBasedStateCoderFactory.xtend129
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/NeighbourhoodBasedStateCoderFactory.xtend206
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/visualisation/PartialInterpretation2Gml.xtend136
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.classpath9
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.gitignore2
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.project34
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/META-INF/MANIFEST.MF23
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/build.properties5
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ModelGenerationMethodBasedGlobalConstraint.xtend11
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend205
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend42
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/diversity/StateCodeCoverageComparator.xtend8
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java372
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend85
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend30
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ScopeObjective.xtend41
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SolutionStoreWithCopy.xtend35
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SolutionStoreWithDiversityDescriptor.xtend77
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/UnfinishedMultiplicityObjective.xtend37
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/UnfinishedWFObjective.xtend56
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/WF2ObjectiveConverter.xtend36
107 files changed, 13982 insertions, 0 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.classpath b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.classpath
new file mode 100644
index 00000000..d9c5bef5
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.classpath
@@ -0,0 +1,11 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
4 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
5 <classpathentry kind="src" path="src"/>
6 <classpathentry kind="src" path="xtend-gen"/>
7 <classpathentry kind="src" path="patterns"/>
8 <classpathentry kind="src" path="vql-gen"/>
9 <classpathentry kind="src" path="src-gen/"/>
10 <classpathentry kind="output" path="bin"/>
11</classpath>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.gitignore b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.gitignore
new file mode 100644
index 00000000..8ae4e44d
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.gitignore
@@ -0,0 +1,4 @@
1/bin/
2/src-gen/
3/vql-gen/
4/xtend-gen/
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.project b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.project
new file mode 100644
index 00000000..386eda9e
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.project
@@ -0,0 +1,40 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.viatra.query.tooling.ui.projectbuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.jdt.core.javabuilder</name>
20 <arguments>
21 </arguments>
22 </buildCommand>
23 <buildCommand>
24 <name>org.eclipse.pde.ManifestBuilder</name>
25 <arguments>
26 </arguments>
27 </buildCommand>
28 <buildCommand>
29 <name>org.eclipse.pde.SchemaBuilder</name>
30 <arguments>
31 </arguments>
32 </buildCommand>
33 </buildSpec>
34 <natures>
35 <nature>org.eclipse.pde.PluginNature</nature>
36 <nature>org.eclipse.jdt.core.javanature</nature>
37 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
38 <nature>org.eclipse.viatra.query.projectnature</nature>
39 </natures>
40</projectDescription>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.settings/org.eclipse.jdt.core.prefs b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..295926d9
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
1eclipse.preferences.version=1
2org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4org.eclipse.jdt.core.compiler.compliance=1.8
5org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.settings/org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguage.prefs b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.settings/org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguage.prefs
new file mode 100644
index 00000000..5b3dcb93
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/.settings/org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguage.prefs
@@ -0,0 +1,27 @@
1BuilderConfiguration.is_project_specific=true
2autobuilding=true
3eclipse.preferences.version=1
4generateGeneratedAnnotation=false
5generateSuppressWarnings=true
6generatedAnnotationComment=
7includeDateInGenerated=false
8outlet.DEFAULT_OUTPUT.cleanDirectory=false
9outlet.DEFAULT_OUTPUT.cleanupDerived=true
10outlet.DEFAULT_OUTPUT.createDirectory=true
11outlet.DEFAULT_OUTPUT.derived=true
12outlet.DEFAULT_OUTPUT.directory=./vql-gen
13outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
14outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
15outlet.DEFAULT_OUTPUT.keepLocalHistory=true
16outlet.DEFAULT_OUTPUT.override=true
17outlet.DEFAULT_OUTPUT.sourceFolder.patterns.directory=
18outlet.DEFAULT_OUTPUT.sourceFolder.patterns.ignore=
19outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=
20outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.ignore=
21outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=
22outlet.DEFAULT_OUTPUT.sourceFolder.src.ignore=
23outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=
24outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.ignore=
25outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=
26targetJavaVersion=JAVA5
27useJavaCompilerCompliance=true
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/META-INF/MANIFEST.MF b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..8f0e037a
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: Logic2viatra
4Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatraquery;singleton:=true
5Bundle-Version: 1.0.0.qualifier
6Export-Package: hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra,
7 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries,
8 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.util
9Require-Bundle: hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0",
10 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;bundle-version="1.0.0",
11 hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0",
12 hu.bme.mit.inf.dslreasoner.viatra2logic;bundle-version="1.0.0",
13 com.google.guava,
14 org.eclipse.xtext.xbase.lib,
15 org.eclipse.xtend.lib,
16 org.eclipse.xtend.lib.macro,
17 org.eclipse.viatra.query.runtime;bundle-version="1.5.0",
18 org.eclipse.viatra.query.runtime.base.itc;bundle-version="1.5.0",
19 org.eclipse.viatra.query.patternlanguage;bundle-version="1.5.0",
20 org.eclipse.viatra.query.patternlanguage.emf;bundle-version="1.5.0",
21 com.google.inject;bundle-version="3.0.0",
22 org.eclipse.xtext;bundle-version="2.10.0",
23 org.eclipse.viatra.transformation.runtime.emf;bundle-version="1.5.0",
24 org.eclipse.xtext.xbase;bundle-version="2.10.0"
25Bundle-RequiredExecutionEnvironment: JavaSE-1.8
26Import-Package: org.apache.log4j
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/build.properties b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/build.properties
new file mode 100644
index 00000000..585df5ce
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/build.properties
@@ -0,0 +1,9 @@
1bin.includes = META-INF/,\
2 .,\
3 plugin.xml
4source.. = src/,\
5 patterns/,\
6 vql-gen/,\
7 xtend-gen/,\
8 src-gen/
9output.. = bin/
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/patterns/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/queries/TypeAnalysis.vql b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/patterns/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/queries/TypeAnalysis.vql
new file mode 100644
index 00000000..ebab542c
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/patterns/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/queries/TypeAnalysis.vql
@@ -0,0 +1,223 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries
2
3import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
4import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
5import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
6
7/**
8 * Direct supertypes of a type.
9 */
10private pattern supertypeDirect(subtype : Type, supertype : Type) {
11 Type.supertypes(subtype, supertype);
12}
13
14/**
15 * All supertypes of a type.
16 */
17
18private pattern supertypePlus(subtype: Type, supertype: Type) {
19 find supertypeDirect+(subtype,supertype);
20}
21
22private pattern supertypeStar(subtype: Type, supertype: Type) {
23 subtype == supertype;
24} or {
25 find supertypePlus(subtype,supertype);
26}
27
28pattern hasDefinedSupertype(type:Type) {
29 find supertypeStar(type,superType);
30 TypeDefinition(superType);
31}
32
33pattern dontHaveDefinedSupertype(type:TypeDeclaration) {
34 neg find hasDefinedSupertype(type);
35}
36
37///////////////////////
38// New element types
39///////////////////////
40
41/**
42 * A new element can has 'type' as a dynamic type iff
43 * (1) 'type' is concrete and
44 * (2) 'type' does not have defined supertype
45 * (including the case when 'type' itself is defined).
46 */
47private pattern possibleNewElementDynamicType(type:TypeDeclaration) {
48 Type.isAbstract(type,false);
49 find dontHaveDefinedSupertype(type);
50}
51///**
52// * The type of a new element can be refined from 'previous' to 'refined'.
53// */
54//private pattern newElementTypeRefinementPath(previous:TypeDeclaration, refined:TypeDeclaration) {
55// find possibleNewElementDynamicType(previous);
56// find possibleNewElementDynamicType(refined);
57// find supertypePlus(refined,previous);
58//}
59
60/**
61 * New element can be created with type 'type' iff it can has 'type' as a dynamic type.
62 */
63pattern newElementTypeConstructor(type:TypeDeclaration) {
64 find possibleNewElementDynamicType(type);
65}
66
67/**
68 * New element can be refined to type 'refined' iff
69 * (1) type is concrete
70 * (2) the new type cover each existing type of the previous state, i.e.
71 * (2') it does not have type that:
72 */
73
74pattern newElementTypeRefinementTarget(refined: TypeDeclaration) {
75 find possibleNewElementDynamicType(refined);
76}
77
78private pattern incompatibleType(type:TypeDeclaration, incompatible:TypeDeclaration) {
79 LogicProblem.types(problem,type);
80 LogicProblem.types(problem,incompatible);
81 neg find supertypeStar(type, incompatible);
82}
83
84pattern incompatibleSuperType(type:TypeDeclaration, incompatibleType1:TypeDeclaration, incompatibleType2:TypeDeclaration) {
85 find incompatibleType(type, incompatibleType1);
86 find incompatibleType(type, incompatibleType2);
87 find supertypePlus(incompatibleType1, incompatibleType2);
88}
89
90pattern incompatibleTopType(type:TypeDeclaration, incompatible:TypeDeclaration) {
91 find incompatibleType(type, incompatible);
92 neg find incompatibleSuperType(type, incompatible, _);
93}
94
95pattern newElementTypeRefinementNegativeConstraint(refined:TypeDeclaration, inhibitor:TypeDeclaration) {
96 find incompatibleTopType(refined, inhibitor);
97} or {
98 find possibleNewElementDynamicType(refined);
99 refined == inhibitor;
100}
101
102pattern newElementMayTypeNegativeConstraint(mayType: TypeDeclaration, inhibitor: TypeDeclaration) {
103 find incompatibleTopType(mayType, inhibitor);
104}
105
106///////////////////////
107// Old element types
108///////////////////////
109
110//TODO old element types
111
112//private pattern typeInterpretation(problem:LogicProblem, interpetation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialTypeInterpratation) {
113// find interpretation(problem,interpetation);
114// LogicProblem.types(problem,type);
115// PartialInterpretation.partialtypeinterpratation(interpetation,typeInterpretation);
116// PartialTypeInterpratation.interpretationOf(typeInterpretation,type);
117//}
118//
119//pattern directInstanceOf(problem:LogicProblem, interpetation:PartialInterpretation, element:DefinedElement, type:Type) {
120// find interpretation(problem,interpetation);
121// find mustExist(problem,interpetation,element);
122// LogicProblem.types(problem,type);
123// TypeDefinition.elements(type,element);
124//} or {
125// find mustExist(problem,interpetation,element);
126// find typeInterpretation(problem,interpetation,type,typeInterpretation);
127// PartialTypeInterpratation.elements(typeInterpretation,element);
128//}
129//
130//
131//
132///// Complex type reasoning patterns ///
133////
134//// In a valid type system, for each element e there is exactly one type T where
135//// 1: T(e) - but we dont know this for type declaration
136//// 2: For the dynamic type D and another type T, where D(e) && D-->T, T(e) is true.
137//// 2e: A type hierarchy is invalid, if there is a supertype T for a dynamic type D which does no contains e:
138//// D(e) && D-->T && !T(e)
139//// 3: There is no T' that T'->T and T'(e)
140//// 3e: A type hierarcy is invalid, if there is a type T for a dynamic type D, which contains e, but not subtype of T:
141//// D(e) && ![T--->D] && T(e)
142//// 4: T is not abstract
143//// Such type T is called Dynamic type of e, while other types are called static types.
144////
145//// The following patterns checks the possible dynamic types for an element
146//
147//pattern wellformedType(problem: LogicProblem, interpretation:PartialInterpretation, dynamic:Type, element:DefinedElement) {
148// // 1: T(e)
149// find directInstanceOf(problem,interpretation,element,dynamic);
150// // 2e is not true: D(e) && D-->T && !T(e)
151// neg find dynamicTypeNotSubtypeOfADefinition(problem,interpretation,element,dynamic);
152// // 3e is not true: D(e) && ![T--->D] && T(e)
153// neg find dynamicTypeIsSubtypeOfANonDefinition(problem,interpretation,element,dynamic);
154// // 4: T is not abstract
155// Type.isAbstract(dynamic,false);
156//}
157//
158//pattern possibleDynamicType(problem: LogicProblem, interpretation:PartialInterpretation, dynamic:Type, element:DefinedElement)
159//// case 1: element is defined at least once
160//{
161// LogicProblem.types(problem,dynamic);
162// // select a random definition 'randomType'
163// find directInstanceOf(problem,interpretation,element,randomType);
164// // dynamic is a subtype of 'randomType'
165// find supertypeStar(dynamic,randomType);
166// // 2e is not true: D(e) && D-->T && !T(e)
167// neg find dynamicTypeNotSubtypeOfADefinition(problem,interpretation,element,dynamic);
168// // 3e is not true: D(e) && ![T--->D] && T(e)
169// neg find dynamicTypeIsSubtypeOfANonDefinition(problem,interpretation,element,dynamic);
170// // 4: T is not abstract
171// Type.isAbstract(dynamic,false);
172//} or
173//// case 2: element is not defined anywhere
174//{
175// find mayExist(problem,interpretation,element);
176// // there is no definition
177// neg find directInstanceOf(problem,interpretation,element,_);
178// // 2e is not true: D(e) && D-->T && !T(e)
179// // because non of the definition contains element, the type cannot have defined supertype
180// LogicProblem.types(problem,dynamic);
181// PartialInterpretation.problem(interpretation,problem);
182// neg find typeWithDefinedSupertype(dynamic);
183// // 3e is not true: D(e) && ![T--->D] && T(e)
184// // because there is no definition, dynamic covers all definition
185// // 4: T is not abstract
186// Type.isAbstract(dynamic,false);
187//}
188//
189///**
190// * supertype -------> element <------- otherSupertype
191// * A A
192// * | |
193// * wrongDynamic -----------------------------X
194// */
195//private pattern dynamicTypeNotSubtypeOfADefinition(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, wrongDynamic : Type) {
196// find directInstanceOf(problem,interpretation,element,supertype);
197// find directInstanceOf(problem,interpretation,element,otherSupertype);
198// find supertypeStar(wrongDynamic,supertype);
199// neg find supertypeStar(wrongDynamic,otherSupertype);
200//}
201//
202//
203///**
204// * supertype -------> element <---X--- otherSupertype
205// * A A
206// * | |
207// * wrongDynamic -----------------------------+
208// */
209//private pattern dynamicTypeIsSubtypeOfANonDefinition(problem: LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, wrongDynamic:Type) {
210// find directInstanceOf(problem,interpretation,element,supertype);
211// neg find elementInTypeDefinition(element,otherSupertype);
212// find supertypeStar(wrongDynamic, supertype);
213// find supertypeStar(wrongDynamic, otherSupertype);
214//}
215//
216//private pattern elementInTypeDefinition(element:DefinedElement, definition:TypeDefinition) {
217// TypeDefinition.elements(definition,element);
218//}
219//
220//private pattern typeWithDefinedSupertype(type:TypeDeclaration) {
221// find supertypeStar(type,definedSupertype);
222// TypeDefinition(definedSupertype);
223//}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/plugin.xml b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/plugin.xml
new file mode 100644
index 00000000..05e00983
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/plugin.xml
@@ -0,0 +1,14 @@
1<?xml version="1.0" encoding="UTF-8"?><plugin>
2 <extension id="hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.TypeAnalysis" point="org.eclipse.viatra.query.runtime.queryspecification">
3 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.TypeAnalysis" id="hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.TypeAnalysis">
4 <query-specification fqn="hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.hasDefinedSupertype"/>
5 <query-specification fqn="hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.dontHaveDefinedSupertype"/>
6 <query-specification fqn="hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.newElementTypeConstructor"/>
7 <query-specification fqn="hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.newElementTypeRefinementTarget"/>
8 <query-specification fqn="hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.incompatibleSuperType"/>
9 <query-specification fqn="hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.incompatibleTopType"/>
10 <query-specification fqn="hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.newElementTypeRefinementNegativeConstraint"/>
11 <query-specification fqn="hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.newElementMayTypeNegativeConstraint"/>
12 </group>
13 </extension>
14</plugin>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/Modality.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/Modality.java
new file mode 100644
index 00000000..d2132cea
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/Modality.java
@@ -0,0 +1,22 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra;
2
3public enum Modality {
4 MUST, MAY, CURRENT;
5 public boolean isMust() {
6 return this == MUST;
7 }
8 public boolean isMay() {
9 return this == MAY;
10 }
11 public boolean isCurrent() {
12 return this == CURRENT;
13 }
14 public boolean isMustOrCurrent() {
15 return isMust() || isCurrent();
16 }
17 public Modality getDual() {
18 if(this.isCurrent()) return CURRENT;
19 else if(this.isMust())return MAY;
20 else return MUST;
21 }
22}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
new file mode 100644
index 00000000..1653226d
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend
@@ -0,0 +1,78 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider
7import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.GoalConstraintProvider
8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.RefinementRuleProvider
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
10import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
11import java.util.Collection
12import java.util.LinkedHashMap
13import java.util.List
14import org.eclipse.viatra.query.runtime.api.GenericPatternMatch
15import org.eclipse.viatra.query.runtime.api.IQuerySpecification
16import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
17import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
18import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRule
19import org.eclipse.xtend.lib.annotations.Data
20import org.eclipse.viatra.query.runtime.api.IPatternMatch
21
22class ModelGenerationStatistics {
23 public var long transformationExecutionTime = 0
24 synchronized def addExecutionTime(long amount) {
25 transformationExecutionTime+=amount
26 }
27 public var long PreliminaryTypeAnalisisTime = 0
28}
29@Data class ModelGenerationMethod {
30 ModelGenerationStatistics statistics
31
32 Collection<? extends BatchTransformationRule<?,?>> objectRefinementRules
33 Collection<? extends BatchTransformationRule<?,?>> relationRefinementRules
34
35 List<MultiplicityGoalConstraintCalculator> unfinishedMultiplicities
36 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWF
37
38 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidWF
39}
40enum TypeInferenceMethod {
41 Generic, PreliminaryAnalysis
42}
43
44class ModelGenerationMethodProvider {
45 private val PatternProvider patternProvider = new PatternProvider
46 private val RefinementRuleProvider refinementRuleProvider = new RefinementRuleProvider
47 private val GoalConstraintProvider goalConstraintProvider = new GoalConstraintProvider
48
49 public def ModelGenerationMethod createModelGenerationMethod(
50 LogicProblem logicProblem,
51 PartialInterpretation emptySolution,
52 Iterable<PQuery> existingQueries,
53 ReasonerWorkspace workspace,
54 boolean nameNewElements,
55 TypeInferenceMethod typeInferenceMethod
56 ) {
57 val statistics = new ModelGenerationStatistics
58 val queries = patternProvider.generateQueries(logicProblem,emptySolution,statistics,existingQueries,workspace,typeInferenceMethod)
59
60 val //LinkedHashMap<Pair<Relation, ? extends Type>, BatchTransformationRule<GenericPatternMatch, ViatraQueryMatcher<GenericPatternMatch>>>
61 objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(queries,nameNewElements,statistics)
62 val relationRefinementRules = refinementRuleProvider.createRelationRefinementRules(queries,statistics)
63
64 val unfinishedMultiplicities = goalConstraintProvider.getUnfinishedMultiplicityQueries(queries)
65 val unfinishedWF = queries.getUnfinishedWFQueries.values
66
67 val invalidWF = queries.getInvalidWFQueries.values
68
69 return new ModelGenerationMethod(
70 statistics,
71 objectRefinementRules.values,
72 relationRefinementRules.values,
73 unfinishedMultiplicities,
74 unfinishedWF,
75 invalidWF
76 )
77 }
78}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend
new file mode 100644
index 00000000..e05160d0
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/MultiplicityGoalConstraintCalculator.xtend
@@ -0,0 +1,46 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra
2
3import org.eclipse.emf.common.notify.Notifier
4import org.eclipse.viatra.query.runtime.api.IQuerySpecification
5import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine
6import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
7import org.eclipse.viatra.query.runtime.emf.EMFScope
8
9class MultiplicityGoalConstraintCalculator {
10 val String targetRelationName;
11 val IQuerySpecification<?> querySpecification;
12 var ViatraQueryMatcher<?> matcher;
13
14 public new(String targetRelationName, IQuerySpecification<?> querySpecification) {
15 this.targetRelationName = targetRelationName
16 this.querySpecification = querySpecification
17 this.matcher = null
18 }
19
20 public new(MultiplicityGoalConstraintCalculator other) {
21 this.targetRelationName = other.targetRelationName
22 this.querySpecification = other.querySpecification
23 this.matcher = null
24 }
25
26 def public getName() {
27 targetRelationName
28 }
29
30 def public init(Notifier notifier) {
31 val engine = ViatraQueryEngine.on(new EMFScope(notifier))
32 matcher = querySpecification.getMatcher(engine)
33 }
34
35 def public calculateValue() {
36 var res = 0
37 val allMatches = this.matcher.allMatches
38 for(match : allMatches) {
39 //println(targetRelationName+ " missing multiplicity: "+match.get(3))
40 val missingMultiplicity = match.get(4) as Integer
41 res += missingMultiplicity
42 }
43 //println(targetRelationName+ " all missing multiplicities: "+res)
44 return res
45 }
46} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/TypeAnalysis.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/TypeAnalysis.xtend
new file mode 100644
index 00000000..395aba85
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/TypeAnalysis.xtend
@@ -0,0 +1,92 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra
2
3import org.eclipse.xtend.lib.annotations.Data
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
5import java.util.List
6import java.util.Map
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
8import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
9import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine
10import org.eclipse.viatra.query.runtime.emf.EMFScope
11import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.NewElementTypeConstructorMatcher
12import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.NewElementTypeRefinementTargetMatcher
13import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.NewElementTypeRefinementNegativeConstraintMatcher
14import java.util.ArrayList
15import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.DontHaveDefinedSupertypeMatcher
16import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
17import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
18import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries.NewElementMayTypeNegativeConstraintMatcher
19
20@Data class TypeRefinementPrecondition {
21 Type targetType
22 List<? extends Type> inhibitorTypes
23}
24
25/**
26 * Collection of all possible element creation and type refinement rules for defined and undefined elements.
27 */
28@Data class TypeAnalysisResult {
29 /////////////////
30 // New elements
31 /////////////////
32 /**
33 * New elements can be created using with the following types.
34 */
35 List<? extends Type> possibleNewDynamicTypes
36 /**
37 * <b>(A,B)</b> in <b>possibleNewTypeRefinements</b>: a new element <b>x</b> can be refined to A <=> <b>x</b> has all types listed in B.
38 */
39 List<TypeRefinementPrecondition> possibleNewTypeRefinements
40 /**
41 * A new element may have type A if it already has types
42 */
43 Map<? extends Type,TypeRefinementPrecondition> mayNewTypePreconditions
44
45 /////////////////
46 // Old elements
47 /////////////////
48
49 /**
50 * <b>(A,B)</b> in <b>possibleNewTypeRefinements</b>: a new element <b>x</b> can be refined to A <=> <b>x</b> has all types listed in B.
51 */
52 Map<DefinedElement,TypeRefinementPrecondition> possibleOldTypeRefinements
53 /**
54 * A new element may have type A if it already has types
55 */
56 Map<? extends Type,Map<DefinedElement,TypeRefinementPrecondition>> mayOldTypePreconditions
57}
58
59class TypeAnalysis {
60
61 def TypeAnalysisResult performTypeAnalysis(LogicProblem problem, PartialInterpretation interpretation) {
62 val viatraEngine = ViatraQueryEngine.on(new EMFScope(problem))
63 val negativeMatcher = NewElementTypeRefinementNegativeConstraintMatcher.on(viatraEngine)
64
65 val possibleNewDynamicTypes = NewElementTypeConstructorMatcher.on(viatraEngine).allValuesOftype
66
67 val possibleNewTypeRefinementTargets = NewElementTypeRefinementTargetMatcher.on(viatraEngine).allValuesOfrefined
68 val possibleNewTypeRefinements = new ArrayList
69 for(possibleNewTypeRefinementTarget : possibleNewTypeRefinementTargets) {
70 val inhibitorTypes = negativeMatcher.getAllValuesOfinhibitor(possibleNewTypeRefinementTarget)
71 possibleNewTypeRefinements += new TypeRefinementPrecondition(
72 possibleNewTypeRefinementTarget,
73 inhibitorTypes.toList)
74 }
75
76 val possibleTypes = DontHaveDefinedSupertypeMatcher.on(viatraEngine).allValuesOftype
77 val newElementMayTypeMatcher = NewElementMayTypeNegativeConstraintMatcher.on(viatraEngine)
78
79 val mayNewTypePreconditions = possibleTypes.toInvertedMap[type |
80 val inhibitorTypes = newElementMayTypeMatcher.getAllValuesOfinhibitor(type as TypeDeclaration)
81 return new TypeRefinementPrecondition(type,inhibitorTypes.toList)
82 ]
83
84 return new TypeAnalysisResult(
85 possibleNewDynamicTypes.toList,
86 possibleNewTypeRefinements,
87 mayNewTypePreconditions,
88 emptyMap,
89 emptyMap
90 )
91 }
92} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/ContainmentIndexer.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/ContainmentIndexer.xtend
new file mode 100644
index 00000000..02e58c9b
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/ContainmentIndexer.xtend
@@ -0,0 +1,41 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
4import java.util.Collection
5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
6import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
7import java.util.Map
8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
9
10class ContainmentIndexer {
11 val PatternGenerator base;
12
13 new(PatternGenerator base) {
14 this.base = base
15 }
16
17 def isContainmentRelation(Relation relation, LogicProblem problem) {
18 problem.containmentHierarchies.exists[it.containmentRelations.contains(relation)]
19 }
20
21 def transformContainment(LogicProblem problem, Collection<Relation> relations,Map<String,PQuery> fqn2PQuery)
22 '''
23 private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
24 find mustContains4(_,_,source,target);
25 }
26
27 private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
28 source: DefinedElement, target: DefinedElement)
29 «FOR reference : relations.filter[isContainmentRelation(problem)] SEPARATOR 'or\n'»
30 { «base.referRelation(reference,"source","target",Modality.MUST,fqn2PQuery)» }
31 «ENDFOR»
32
33 private pattern mustTransitiveContains(source,target) {
34 find mustContains2+(source,target);
35 }
36 '''
37 def referMustContaint(String source, String target)
38 '''find mustContains4(problem,interpretation,«source»,«target»);'''
39 def referTransitiveMustContains(String source, String target)
40 '''find mustTransitiveContains(source,target);'''
41}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeIndexer.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeIndexer.xtend
new file mode 100644
index 00000000..fbbd9fb5
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeIndexer.xtend
@@ -0,0 +1,194 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
5import org.eclipse.emf.ecore.EClass
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeAnalysisResult
9
10class GenericTypeIndexer implements TypeIndexer {
11 val PatternGenerator base;
12
13 new(PatternGenerator base) {
14 this.base = base
15 }
16 override requiresTypeAnalysis() { false }
17
18 public override getRequiredQueries() '''
19 private pattern newELement(interpretation: PartialInterpretation, element: DefinedElement) {
20 PartialInterpretation.newElements(interpretation,element);
21 }
22
23 private pattern typeInterpretation(problem:LogicProblem, interpetation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialTypeInterpratation) {
24 find interpretation(problem,interpetation);
25 LogicProblem.types(problem,type);
26 PartialInterpretation.partialtypeinterpratation(interpetation,typeInterpretation);
27 PartialTypeInterpratation.interpretationOf(typeInterpretation,type);
28 }
29
30 private pattern directInstanceOf(problem:LogicProblem, interpetation:PartialInterpretation, element:DefinedElement, type:Type) {
31 find interpretation(problem,interpetation);
32 find mustExist(problem,interpetation,element);
33 LogicProblem.types(problem,type);
34 TypeDefinition.elements(type,element);
35 } or {
36 find mustExist(problem,interpetation,element);
37 find typeInterpretation(problem,interpetation,type,typeInterpretation);
38 PartialTypeInterpratation.elements(typeInterpretation,element);
39 }
40
41 /**
42 * Direct supertypes of a type.
43 */
44 private pattern supertypeDirect(subtype : Type, supertype : Type) {
45 Type.supertypes(subtype, supertype);
46 }
47
48 /**
49 * All supertypes of a type.
50 */
51 private pattern supertypeStar(subtype: Type, supertype: Type) {
52 subtype == supertype;
53 } or {
54 find supertypeDirect+(subtype,supertype);
55 }
56
57 /// Complex type reasoning patterns ///
58 //
59 // In a valid type system, for each element e there is exactly one type T where
60 // 1: T(e) - but we dont know this for type declaration
61 // 2: For the dynamic type D and another type T, where D(e) && D-->T, T(e) is true.
62 // 2e: A type hierarchy is invalid, if there is a supertype T for a dynamic type D which does no contains e:
63 // D(e) && D-->T && !T(e)
64 // 3: There is no T' that T'->T and T'(e)
65 // 3e: A type hierarcy is invalid, if there is a type T for a dynamic type D, which contains e, but not subtype of T:
66 // D(e) && ![T--->D] && T(e)
67 // 4: T is not abstract
68 // Such type T is called Dynamic type of e, while other types are called static types.
69 //
70 // The following patterns checks the possible dynamic types for an element
71
72 private pattern wellformedType(problem: LogicProblem, interpretation:PartialInterpretation, dynamic:Type, element:DefinedElement) {
73 // 1: T(e)
74 find directInstanceOf(problem,interpretation,element,dynamic);
75 // 2e is not true: D(e) && D-->T && !T(e)
76 neg find dynamicTypeNotSubtypeOfADefinition(problem,interpretation,element,dynamic);
77 // 3e is not true: D(e) && ![T--->D] && T(e)
78 neg find dynamicTypeIsSubtypeOfANonDefinition(problem,interpretation,element,dynamic);
79 // 4: T is not abstract
80 Type.isAbstract(dynamic,false);
81 }
82
83 private pattern possibleDynamicType(problem: LogicProblem, interpretation:PartialInterpretation, dynamic:Type, element:DefinedElement)
84 // case 1: element is defined at least once
85 {
86 LogicProblem.types(problem,dynamic);
87 // select a random definition 'randomType'
88 find directInstanceOf(problem,interpretation,element,randomType);
89 // dynamic is a subtype of 'randomType'
90 find supertypeStar(dynamic,randomType);
91 // 2e is not true: D(e) && D-->T && !T(e)
92 neg find dynamicTypeNotSubtypeOfADefinition(problem,interpretation,element,dynamic);
93 // 3e is not true: D(e) && ![T--->D] && T(e)
94 neg find dynamicTypeIsSubtypeOfANonDefinition(problem,interpretation,element,dynamic);
95 // 4: T is not abstract
96 Type.isAbstract(dynamic,false);
97 } or
98 // case 2: element is not defined anywhere
99 {
100 find mayExist(problem,interpretation,element);
101 // there is no definition
102 neg find directInstanceOf(problem,interpretation,element,_);
103 // 2e is not true: D(e) && D-->T && !T(e)
104 // because non of the definition contains element, the type cannot have defined supertype
105 LogicProblem.types(problem,dynamic);
106 PartialInterpretation.problem(interpretation,problem);
107 neg find typeWithDefinedSupertype(dynamic);
108 // 3e is not true: D(e) && ![T--->D] && T(e)
109 // because there is no definition, dynamic covers all definition
110 // 4: T is not abstract
111 Type.isAbstract(dynamic,false);
112 }
113
114 /**
115 * supertype -------> element <------- otherSupertype
116 * A A
117 * | |
118 * wrongDynamic -----------------------------X
119 */
120 private pattern dynamicTypeNotSubtypeOfADefinition(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, wrongDynamic : Type) {
121 find directInstanceOf(problem,interpretation,element,supertype);
122 find directInstanceOf(problem,interpretation,element,otherSupertype);
123 find supertypeStar(wrongDynamic,supertype);
124 neg find supertypeStar(wrongDynamic,otherSupertype);
125 }
126
127 /**
128 * supertype -------> element <---X--- otherSupertype
129 * A A
130 * | |
131 * wrongDynamic -----------------------------+
132 */
133 private pattern dynamicTypeIsSubtypeOfANonDefinition(problem: LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, wrongDynamic:Type) {
134 find directInstanceOf(problem,interpretation,element,supertype);
135 neg find elementInTypeDefinition(element,otherSupertype);
136 TypeDefinition(otherSupertype);
137 find supertypeStar(wrongDynamic, supertype);
138 find supertypeStar(wrongDynamic, otherSupertype);
139 }
140
141 private pattern elementInTypeDefinition(element:DefinedElement, definition:TypeDefinition) {
142 TypeDefinition.elements(definition,element);
143 }
144
145 private pattern typeWithDefinedSupertype(type:Type) {
146 find supertypeStar(type,definedSupertype);
147 TypeDefinition(definedSupertype);
148 }
149 '''
150
151 public override generateInstanceOfQueries(LogicProblem problem, PartialInterpretation emptySolution,TypeAnalysisResult typeAnalysisResult) {
152 '''
153 «FOR type:problem.types»
154 «problem.generateMustInstenceOf(type)»
155 «problem.generateMayInstanceOf(type)»
156 «ENDFOR»
157 '''
158 }
159
160 private def patternName(Type type, Modality modality)
161 '''«modality.toString.toLowerCase»InstanceOf«base.canonizeName(type.name)»'''
162
163 private def generateMustInstenceOf(LogicProblem problem, Type type) {
164 '''
165 /**
166 * An element must be an instance of type "«type.name»".
167 */
168 private pattern «patternName(type,Modality.MUST)»(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
169 Type.name(type,"«type.name»");
170 find directInstanceOf(problem,interpretation,element,type);
171 }
172 '''
173 }
174
175 private def generateMayInstanceOf(LogicProblem problem, Type type) {
176 '''
177 /**
178 * An element may be an instance of type "«type.name»".
179 */
180 private pattern «patternName(type,Modality.MAY)»(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
181 Type.name(type,"«type.name»");
182 find possibleDynamicType(problem,interpretation,dynamic,element);
183 find supertypeStar(dynamic,type);
184 }
185 '''
186 }
187
188 public override referInstanceOf(Type type, Modality modality, String variableName) {
189 '''find «patternName(type,modality)»(problem,interpretation,«variableName»);'''
190 }
191 public override referInstanceOf(EClass type, Modality modality, String variableName) {
192 '''find «modality.toString.toLowerCase»InstanceOf«base.canonizeName('''class «type.name»''')»(problem,interpretation,«variableName»);'''
193 }
194} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend
new file mode 100644
index 00000000..4b7af959
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend
@@ -0,0 +1,102 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.InverseRelationAssertion
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
7import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
9import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeAnalysisResult
10import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
11import java.util.HashMap
12
13class GenericTypeRefinementGenerator extends TypeRefinementGenerator {
14 public new(PatternGenerator base) {
15 super(base)
16 }
17 override requiresTypeAnalysis() { false }
18
19 override generateRefineObjectQueries(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult) {
20 val containment = p.containmentHierarchies.head
21 val newObjectTypes = p.types.filter(TypeDeclaration).filter[!isAbstract]
22 val inverseRelations = new HashMap
23 p.annotations.filter(InverseRelationAssertion).forEach[
24 inverseRelations.put(it.inverseA,it.inverseB)
25 inverseRelations.put(it.inverseB,it.inverseA)
26 ]
27 return '''
28 «FOR type:newObjectTypes»
29 «IF(containment.typesOrderedInHierarchy.contains(type))»
30 «FOR containmentRelation : containment.containmentRelations.filter[canBeContainedByRelation(it,type)]»
31 «IF inverseRelations.containsKey(containmentRelation)»
32 pattern «this.patternName(containmentRelation,inverseRelations.get(containmentRelation),type)»(
33 problem:LogicProblem, interpretation:PartialInterpretation,
34 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation ,typeInterpretation:PartialTypeInterpratation,
35 container:DefinedElement)
36 {
37 find interpretation(problem,interpretation);
38 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39 PartialTypeInterpratation.interpretationOf.name(typeInterpretation,"«type.name»");
40 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
41 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"«containmentRelation.name»");
42 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
43 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"«inverseRelations.get(containmentRelation).name»");
44 «base.typeIndexer.referInstanceOf((containmentRelation.parameters.get(0) as ComplexTypeReference).referred,Modality.MUST,"container")»
45 «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")»
46 «base.relationDeclarationIndexer.referRelation(containmentRelation as RelationDeclaration,"container","newObject",Modality.MAY)»
47 find mustExist(problem, interpretation, container);
48 neg find mustExist(problem, interpretation, newObject);
49 }
50 «ELSE»
51 pattern «this.patternName(containmentRelation,null,type)»(
52 problem:LogicProblem, interpretation:PartialInterpretation,
53 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialTypeInterpratation,
54 container:DefinedElement)
55 {
56 find interpretation(problem,interpretation);
57 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58 PartialTypeInterpratation.interpretationOf.name(typeInterpretation,"«type.name»");
59 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
60 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"«containmentRelation.name»");
61 «base.typeIndexer.referInstanceOf((containmentRelation.parameters.get(0) as ComplexTypeReference).referred,Modality.MUST,"container")»
62 «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")»
63 «base.relationDeclarationIndexer.referRelation(containmentRelation as RelationDeclaration,"container","newObject",Modality.MAY)»
64 find mustExist(problem, interpretation, container);
65 neg find mustExist(problem, interpretation, newObject);
66 }
67 «ENDIF»
68 «ENDFOR»
69 «ELSE»
70 pattern createObject_«this.patternName(null,null,type)»(
71 problem:LogicProblem, interpretation:PartialInterpretation,
72 typeInterpretation:PartialTypeInterpratation)
73 {
74 find interpretation(problem,interpretation);
75 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
76 PartialTypeInterpratation.interpretationOf.name(type,"«type.name»");
77 «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")»
78 find mayExist(problem, interpretation, newObject);
79 neg find mustExist(problem, interpretation, newObject);
80 }
81 «ENDIF»
82 «ENDFOR»
83 '''
84 }
85
86 override generateRefineTypeQueries(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult) {
87 return '''
88 «FOR type : p.types.filter(TypeDeclaration).filter[!it.isAbstract]»
89 pattern refineTypeTo_«base.canonizeName(type.name)»(problem:LogicProblem, interpretation:PartialInterpretation, object: DefinedElement) {
90 find interpretation(problem,interpretation);
91 find mustExist(problem, interpretation, object);
92 «base.typeIndexer.referInstanceOf(type,Modality.MAY,"object")»
93 neg «base.typeIndexer.referInstanceOf(type,Modality.MUST,"object")»
94 }
95 «ENDFOR»
96 '''
97 }
98
99 override getRefineTypeQueryNames(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult) {
100 p.types.filter(TypeDeclaration).toInvertedMap['''refineTypeTo_«base.canonizeName(it.name)»''']
101 }
102} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/InvalidIndexer.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/InvalidIndexer.xtend
new file mode 100644
index 00000000..d9ede2a8
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/InvalidIndexer.xtend
@@ -0,0 +1,53 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
4import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransformedViatraWellformednessConstraint
5import java.util.Map
6import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
7
8import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.lookup
9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
10import java.util.LinkedHashMap
11import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
12
13class InvalidIndexer {
14 val PatternGenerator patternGenerator
15
16 public new(PatternGenerator patternGenerator) {
17 this.patternGenerator = patternGenerator
18 }
19
20 public def getWFQueryName(RelationDefinition query) '''invalidWFQuery_«patternGenerator.canonizeName(query.name)»'''
21
22 public def generateInvalidatedByWfQueries(LogicProblem problem, Map<String,PQuery> fqn2PQuery) {
23 val wfQueries = problem.assertions.map[it.annotations]
24 .flatten
25 .filter(TransformedViatraWellformednessConstraint)
26 .map[it.query]
27 '''
28 «FOR wfQuery: wfQueries»
29 pattern invalidatedBy_«patternGenerator.canonizeName(wfQuery.target.name)»(problem:LogicProblem, interpretation:PartialInterpretation,
30 «FOR param : wfQuery.patternFullyQualifiedName.lookup(fqn2PQuery).parameters SEPARATOR ', '»var_«param.name»«ENDFOR»)
31 {
32 «patternGenerator.relationDefinitionIndexer.referPattern(
33 wfQuery.patternFullyQualifiedName.lookup(fqn2PQuery),
34 wfQuery.patternFullyQualifiedName.lookup(fqn2PQuery).parameters.map['''var_«it.name»'''],
35 Modality.MUST,
36 true,false)»
37 }
38 «ENDFOR»
39 '''
40 }
41
42 public def getInvalidateByWfQueryNames(LogicProblem problem) {
43 val wfQueries = problem.assertions.map[it.annotations]
44 .flatten
45 .filter(TransformedViatraWellformednessConstraint)
46 .map[it.query]
47 val map = new LinkedHashMap
48 for(wfQuery : wfQueries) {
49 map.put(wfQuery.target, '''invalidatedBy_«patternGenerator.canonizeName(wfQuery.target.name)»''')
50 }
51 return map
52 }
53}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend
new file mode 100644
index 00000000..291b605b
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend
@@ -0,0 +1,244 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
5import java.util.Map
6import org.eclipse.emf.ecore.EReference
7import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
8import org.eclipse.xtend.lib.annotations.Accessors
9import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery
10import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
11import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
12import org.eclipse.emf.ecore.EAttribute
13import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
15import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeInferenceMethod
16import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeAnalysisResult
17import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.LowerMultiplicityAssertion
18import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransformedViatraWellformednessConstraint
19import java.util.HashMap
20import java.util.HashSet
21import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.InverseRelationAssertion
22import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
23import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.DefinedByDerivedFeature
24
25class PatternGenerator {
26 @Accessors(PUBLIC_GETTER) val TypeIndexer typeIndexer //= new TypeIndexer(this)
27 @Accessors(PUBLIC_GETTER) val RelationDeclarationIndexer relationDeclarationIndexer = new RelationDeclarationIndexer(this)
28 @Accessors(PUBLIC_GETTER) val RelationDefinitionIndexer relationDefinitionIndexer = new RelationDefinitionIndexer(this)
29 @Accessors(PUBLIC_GETTER) val ContainmentIndexer containmentIndexer = new ContainmentIndexer(this)
30 @Accessors(PUBLIC_GETTER) val InvalidIndexer invalidIndexer = new InvalidIndexer(this)
31 @Accessors(PUBLIC_GETTER) val UnfinishedIndexer unfinishedIndexer = new UnfinishedIndexer(this)
32 @Accessors(PUBLIC_GETTER) val TypeRefinementGenerator typeRefinementGenerator //= new RefinementGenerator(this)
33 @Accessors(PUBLIC_GETTER) val RelationRefinementGenerator relationRefinementGenerator = new RelationRefinementGenerator(this)
34
35 public new(TypeInferenceMethod typeInferenceMethod) {
36 if(typeInferenceMethod == TypeInferenceMethod.Generic) {
37 this.typeIndexer = new GenericTypeIndexer(this)
38 this.typeRefinementGenerator = new GenericTypeRefinementGenerator(this)
39 } else if(typeInferenceMethod == TypeInferenceMethod.PreliminaryAnalysis) {
40 this.typeIndexer = new TypeIndexerWithPreliminaryTypeAnalysis(this)
41 this.typeRefinementGenerator = new TypeRefinementWithPreliminaryTypeAnalysis(this)
42 } else {
43 this.typeIndexer = null
44 this.typeRefinementGenerator = null
45 throw new IllegalArgumentException('''Unknown type indexing technique : «typeInferenceMethod.name»''')
46 }
47 }
48
49 public def requiresTypeAnalysis() {
50 typeIndexer.requiresTypeAnalysis || typeRefinementGenerator.requiresTypeAnalysis
51 }
52
53 public dispatch def referRelation(
54 RelationDeclaration referred,
55 String sourceVariable,
56 String targetVariable,
57 Modality modality,
58 Map<String,PQuery> fqn2PQuery)
59 {
60 return this.relationDeclarationIndexer.referRelation(referred,sourceVariable,targetVariable,modality)
61 }
62 public dispatch def referRelation(
63 RelationDefinition referred,
64 String sourceVariable,
65 String targetVariable,
66 Modality modality,
67 Map<String,PQuery> fqn2PQuery)
68 {
69 val pattern = referred.annotations.filter(TransfomedViatraQuery).head.patternFullyQualifiedName.lookup(fqn2PQuery)
70 return this.relationDefinitionIndexer.referPattern(pattern,#[sourceVariable,targetVariable],modality,true,false)
71 }
72
73 def public referRelationByName(EReference reference,
74 String sourceVariable,
75 String targetVariable,
76 Modality modality)
77 {
78 '''find «modality.name.toLowerCase»InRelation«canonizeName('''inreference «reference.name» «reference.EContainingClass.name»''')
79 »(problem,interpretation,«sourceVariable»,«targetVariable»);'''
80 }
81
82 def public CharSequence referAttributeByName(EAttribute attribute,
83 String sourceVariable,
84 String targetVariable,
85 Modality modality)
86 {
87 throw new UnsupportedOperationException
88 }
89
90 public def canonizeName(String name) {
91 name.split(' ').join('_')
92 }
93
94 public def lowerMultiplicities(LogicProblem problem) {
95 problem.assertions.map[annotations].flatten.filter(LowerMultiplicityAssertion).filter[!it.relation.isDerived]
96 }
97 public def wfQueries(LogicProblem problem) {
98 problem.assertions.map[it.annotations]
99 .flatten
100 .filter(TransformedViatraWellformednessConstraint)
101 .map[it.query]
102 }
103 public def getContainments(LogicProblem p) {
104 return p.containmentHierarchies.head.containmentRelations
105 }
106 public def getInverseRelations(LogicProblem p) {
107 val inverseRelations = new HashMap
108 p.annotations.filter(InverseRelationAssertion).forEach[
109 inverseRelations.put(it.inverseA,it.inverseB)
110 inverseRelations.put(it.inverseB,it.inverseA)
111 ]
112 return inverseRelations
113 }
114 public def isRepresentative(Relation relation, Relation inverse) {
115 if(inverse == null) {
116 return true
117 } else {
118 relation.name.compareTo(inverse.name)<1
119 }
120 }
121
122 public def isDerived(Relation relation) {
123 relation.annotations.exists[it instanceof DefinedByDerivedFeature]
124 }
125 public def getDerivedDefinition(RelationDeclaration relation) {
126 relation.annotations.filter(DefinedByDerivedFeature).head.query
127 }
128
129 public def transformBaseProperties(
130 LogicProblem problem,
131 PartialInterpretation emptySolution,
132 Map<String,PQuery> fqn2PQuery,
133 TypeAnalysisResult typeAnalysisResult
134 ) {
135
136 return '''
137 import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
138 import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
139 import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
140
141 //////////
142 // 0. Util
143 //////////
144 private pattern interpretation(problem:LogicProblem, interpetation:PartialInterpretation) {
145 PartialInterpretation.problem(interpetation,problem);
146 }
147
148 /////////////////////////
149 // 0.1 Existance
150 /////////////////////////
151 private pattern mustExist(problem:LogicProblem, interpetation:PartialInterpretation, element:DefinedElement) {
152 find interpretation(problem,interpetation);
153 LogicProblem.elements(problem,element);
154 } or {
155 find interpretation(problem,interpetation);
156 PartialInterpretation.newElements(interpetation,element);
157 }
158
159 private pattern mayExist(problem:LogicProblem, interpetation:PartialInterpretation, element:DefinedElement) {
160 find mustExist(problem,interpetation,element);
161 } or {
162 find interpretation(problem,interpetation);
163 neg find closeWorld(interpetation);
164 PartialInterpretation.openWorldElementPrototype(interpetation,element);
165 }
166
167 private pattern closeWorld(interpetation:PartialInterpretation) {
168 PartialInterpretation.maxNewElements(interpetation,0);
169 }
170
171 ////////////////////////
172 // 0.2 Equivalence
173 ////////////////////////
174 pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
175 find mayExist(problem,interpretation,a);
176 find mayExist(problem,interpretation,b);
177 a == b;
178 }
179
180 ////////////////////////
181 // 0.3 Required Patterns by TypeIndexer
182 ////////////////////////
183 «typeIndexer.requiredQueries»
184
185 //////////
186 // 1. Problem-Specific Base Indexers
187 //////////
188 // 1.1 Type Indexers
189 //////////
190 «typeIndexer.generateInstanceOfQueries(problem,emptySolution,typeAnalysisResult)»
191
192 //////////
193 // 1.2 Relation Declaration Indexers
194 //////////
195 «relationDeclarationIndexer.generateRelationIndexers(problem,problem.relations.filter(RelationDeclaration),fqn2PQuery)»
196
197 //////////
198 // 1.3 Relation Definition Indexers
199 //////////
200 «relationDefinitionIndexer.generateRelationDefinitions(problem,problem.relations.filter(RelationDefinition),fqn2PQuery)»
201
202 //////////
203 // 1.4 Containment Indexer
204 //////////
205 «containmentIndexer.transformContainment(problem,problem.relations,fqn2PQuery)»
206
207 //////////
208 // 2. Invalidation Indexers
209 //////////
210 // 2.1 Invalidated by WF Queries
211 //////////
212 «invalidIndexer.generateInvalidatedByWfQueries(problem,fqn2PQuery)»
213
214 //////////
215 // 3. Unfinishedness Indexers
216 //////////
217 // 3.1 Unfinishedness Measured by Multiplicity
218 //////////
219 «unfinishedIndexer.generateUnfinishedMultiplicityQueries(problem,fqn2PQuery)»
220
221 //////////
222 // 3.2 Unfinishedness Measured by WF Queries
223 //////////
224 «unfinishedIndexer.generateUnfinishedWfQueries(problem,fqn2PQuery)»
225
226 //////////
227 // 4. Refinement Indexers
228 //////////
229 // 4.1 Object constructors
230 //////////
231 «typeRefinementGenerator.generateRefineObjectQueries(problem,emptySolution,typeAnalysisResult)»
232
233 //////////
234 // 4.2 Type refinement
235 //////////
236 «typeRefinementGenerator.generateRefineTypeQueries(problem,emptySolution,typeAnalysisResult)»
237
238 //////////
239 // 4.3 Relation refinement
240 //////////
241 «relationRefinementGenerator.generateRefineReference(problem)»
242 '''
243 }
244}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternProvider.xtend
new file mode 100644
index 00000000..dac5630b
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternProvider.xtend
@@ -0,0 +1,96 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
6import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
7import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationStatistics
8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeAnalysis
9import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeAnalysisResult
10import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeInferenceMethod
11import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.util.ParseUtil
12import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
13import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
14import java.util.Map
15import org.eclipse.viatra.query.runtime.api.IPatternMatch
16import org.eclipse.viatra.query.runtime.api.IQuerySpecification
17import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
18import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
19import org.eclipse.xtend.lib.annotations.Data
20
21import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
22
23@Data class GeneratedPatterns {
24 public Map<Relation, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidWFQueries
25 public Map<Relation, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWFQueries
26 public Map<Relation, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedMulticiplicityQueries
27 public Map<ObjectCreationPrecondition, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> refineObjectQueries
28 public Map<? extends Type, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> refineTypeQueries
29 public Map<Pair<RelationDeclaration, Relation>, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> refinerelationQueries
30}
31
32class PatternProvider {
33 val ParseUtil parseUtil = new ParseUtil
34 val TypeAnalysis typeAnalysis = new TypeAnalysis
35
36 public def generateQueries(
37 LogicProblem problem,
38 PartialInterpretation emptySolution,
39 ModelGenerationStatistics statistics,
40 Iterable<PQuery> existingQueries,
41 ReasonerWorkspace workspace,
42 TypeInferenceMethod typeInferenceMethod
43 ) {
44 val fqn2Query = existingQueries.toMap[it.fullyQualifiedName]
45 val PatternGenerator patternGenerator = new PatternGenerator(typeInferenceMethod)
46 val typeAnalysisResult = if(patternGenerator.requiresTypeAnalysis) {
47 val startTime = System.nanoTime
48 val result = typeAnalysis.performTypeAnalysis(problem,emptySolution)
49 val typeAnalysisTime = System.nanoTime - startTime
50 statistics.PreliminaryTypeAnalisisTime = typeAnalysisTime
51 result
52 } else {
53 null
54 }
55 val baseIndexerFile = patternGenerator.transformBaseProperties(problem,emptySolution,fqn2Query,typeAnalysisResult)
56 writeQueries(baseIndexerFile,"GeneratedQueries",workspace)
57 val generatedQueries = parseUtil.parse(baseIndexerFile)
58 val runtimeQueries = calclulateRuntimeQueries(patternGenerator,problem,emptySolution,typeAnalysisResult,generatedQueries);
59 return runtimeQueries
60 }
61
62 private def writeQueries(CharSequence content, String name,ReasonerWorkspace workspace) {
63 if(workspace!=null) {
64 workspace.writeText('''«name».vql_deactivated''',content)
65 }
66 }
67
68 private def GeneratedPatterns calclulateRuntimeQueries(
69 PatternGenerator patternGenerator,
70 LogicProblem problem,
71 PartialInterpretation emptySolution,
72 TypeAnalysisResult typeAnalysisResult,
73 Map<String, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> queries
74 ) {
75 val Map<Relation, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>>
76 invalidWFQueries = patternGenerator.invalidIndexer.getInvalidateByWfQueryNames(problem).mapValues[it.lookup(queries)]
77 val Map<Relation, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>>
78 unfinishedWFQueries = patternGenerator.unfinishedIndexer.getUnfinishedWFQueryNames(problem).mapValues[it.lookup(queries)]
79 val Map<Relation, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>>
80 unfinishedMultiplicityQueries = patternGenerator.unfinishedIndexer.getUnfinishedMultiplicityQueries(problem).mapValues[it.lookup(queries)]
81 val Map<ObjectCreationPrecondition, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>>
82 refineObjectsQueries = patternGenerator.typeRefinementGenerator.getRefineObjectQueryNames(problem,emptySolution,typeAnalysisResult).mapValues[it.lookup(queries)]
83 val Map<? extends Type, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>>
84 refineTypeQueries = patternGenerator.typeRefinementGenerator.getRefineTypeQueryNames(problem,emptySolution,typeAnalysisResult).mapValues[it.lookup(queries)]
85 val Map<Pair<RelationDeclaration, Relation>, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>>
86 refineRelationQueries = patternGenerator.relationRefinementGenerator.getRefineRelationQueries(problem).mapValues[it.lookup(queries)]
87 return new GeneratedPatterns(
88 invalidWFQueries,
89 unfinishedWFQueries,
90 unfinishedMultiplicityQueries,
91 refineObjectsQueries,
92 refineTypeQueries,
93 refineRelationQueries
94 )
95 }
96}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDeclarationIndexer.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDeclarationIndexer.xtend
new file mode 100644
index 00000000..e6d92cc6
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDeclarationIndexer.xtend
@@ -0,0 +1,154 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.UpperMultiplicityAssertion
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeReference
8import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
9import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
10import java.util.HashMap
11import java.util.List
12import java.util.Map
13import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
14
15import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
16
17class RelationDeclarationIndexer {
18 val PatternGenerator base;
19
20 new(PatternGenerator base) {
21 this.base = base
22 }
23
24 public def generateRelationIndexers(LogicProblem problem, Iterable<RelationDeclaration> relations, Map<String,PQuery> fqn2PQuery) {
25 val upperMultiplicities = new HashMap
26 problem.annotations.filter(UpperMultiplicityAssertion).forEach[
27 upperMultiplicities.put(it.relation,it.upper)
28 ]
29
30 return '''
31 «FOR relation : relations»
32 «IF base.isDerived(relation)»
33 «generateDerivedMustRelation(problem,relation,base.getDerivedDefinition(relation).patternFullyQualifiedName.lookup(fqn2PQuery))»
34 «generateDerivedMayRelation(problem,relation,base.getDerivedDefinition(relation).patternFullyQualifiedName.lookup(fqn2PQuery))»
35 «ELSE»
36 «generateMustRelation(problem,relation)»
37 «generateMayRelation(problem,relation,upperMultiplicities,base.getContainments(problem),base.getInverseRelations(problem),fqn2PQuery)»
38 «ENDIF»
39 «ENDFOR»
40 '''
41 }
42
43 def private patternName(RelationDeclaration r, Modality modality) {
44 '''«modality.name.toLowerCase»InRelation«base.canonizeName(r.name)»'''
45 }
46
47 public def referRelation(
48 RelationDeclaration referred,
49 String sourceVariable,
50 String targetVariable,
51 Modality modality)
52 '''find «referred.patternName(modality)»(problem,interpretation,«sourceVariable»,«targetVariable»);'''
53
54 def generateMustRelation(LogicProblem problem, RelationDeclaration relation) '''
55 /**
56 * Matcher for detecting tuples t where []«relation.name»(source,target)
57 */
58 private pattern «relation.patternName(Modality.MUST)»(
59 problem:LogicProblem, interpretation:PartialInterpretation,
60 source: DefinedElement, target:DefinedElement)
61 {
62 find interpretation(problem,interpretation);
63 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"«relation.name»");
65 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
66 BinaryElementRelationLink.param1(link,source);
67 BinaryElementRelationLink.param2(link,target);
68 }
69 '''
70 def generateMayRelation(LogicProblem problem, RelationDeclaration relation,
71 Map<Relation, Integer> upperMultiplicities,
72 List<Relation> containments,
73 HashMap<Relation, Relation> inverseRelations,
74 Map<String,PQuery> fqn2PQuery)
75 {
76 return '''
77 /**
78 * Matcher for detecting tuples t where <>«relation.name»(source,target)
79 */
80 private pattern «relation.patternName(Modality.MAY)»(
81 problem:LogicProblem, interpretation:PartialInterpretation,
82 source: DefinedElement, target:DefinedElement)
83 {
84 find interpretation(problem,interpretation);
85 // The two endpoint of the link have to exist
86 find mayExist(problem, interpretation, source);
87 find mayExist(problem, interpretation, target);
88 // Type consistency
89 «transformTypeConsistency(relation.parameters.get(0),"source")»
90 «transformTypeConsistency(relation.parameters.get(1),"target")»
91 «IF upperMultiplicities.containsKey(relation)»
92 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
93 // the upper bound of the multiplicity should be considered.
94 numberOfExistingReferences == count «referRelation(relation,"source","_",Modality.MUST)»
95 check(numberOfExistingReferences < «upperMultiplicities.get(relation)»);
96 «ENDIF»
97 «IF inverseRelations.containsKey(relation) && upperMultiplicities.containsKey(inverseRelations.get(relation))»
98 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
99 // the upper bound of the opposite reference multiplicity should be considered.
100 numberOfExistingOppositeReferences == count «base.referRelation(inverseRelations.get(relation),"target","_",Modality.MUST,fqn2PQuery)»
101 check(numberOfExistingOppositeReferences < «upperMultiplicities.get(inverseRelations.get(relation))»);
102 «ENDIF»
103 «IF containments.contains(relation)»
104 // The reference is containment, then a new reference cannot be create if:
105 // 1. Multiple parents
106 neg «base.containmentIndexer.referMustContaint("_","target")»
107 // 2. Circle in the containment hierarchy
108 neg «base.containmentIndexer.referTransitiveMustContains("target","source")»
109 «ENDIF»
110 «IF inverseRelations.containsKey(relation) && containments.contains(inverseRelations.get(relation))»
111 // The eOpposite of the reference is containment, then a referene cannot be created if
112 // 1. Multiple parents
113 neg «base.containmentIndexer.referMustContaint("source","_")»
114 // 2. Circle in the containment hierarchy
115 neg «base.containmentIndexer.referTransitiveMustContains("source","target")»
116 «ENDIF»
117 } or {
118 «relation.referRelation("source","target",Modality.MUST)»
119 }
120 '''
121 }
122
123 def generateDerivedMustRelation(LogicProblem problem, RelationDeclaration relation, PQuery definition) '''
124 /**
125 * Matcher for detecting tuples t where []«relation.name»(source,target)
126 */
127 private pattern «relation.patternName(Modality.MUST)»(
128 problem:LogicProblem, interpretation:PartialInterpretation,
129 source: DefinedElement, target:DefinedElement)
130 {
131 «base.relationDefinitionIndexer.referPattern(definition,#["source","target"],Modality::MUST,true,false)»
132 }
133 '''
134 def generateDerivedMayRelation(LogicProblem problem, RelationDeclaration relation, PQuery definition) '''
135 /**
136 * Matcher for detecting tuples t where []«relation.name»(source,target)
137 */
138 private pattern «relation.patternName(Modality.MAY)»(
139 problem:LogicProblem, interpretation:PartialInterpretation,
140 source: DefinedElement, target:DefinedElement)
141 {
142 «base.relationDefinitionIndexer.referPattern(definition,#["source","target"],Modality::MAY,true,false)»
143 }
144 '''
145
146 protected def CharSequence transformTypeConsistency(TypeReference reference, String name) {
147 if(reference instanceof ComplexTypeReference) {
148 this.base.typeIndexer.referInstanceOf(reference.referred,Modality.MAY,name)
149 } else {
150 return '''// Primitive type of «name» is already enforced'''
151 }
152
153 }
154} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend
new file mode 100644
index 00000000..7792eccb
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend
@@ -0,0 +1,185 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
4import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
5import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery
6import java.util.Map
7import org.eclipse.emf.ecore.EAttribute
8import org.eclipse.emf.ecore.EReference
9import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey
10import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey
11import org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint
12import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable
13import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality
14import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter
15import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Inequality
16import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall
17import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.BinaryTransitiveClosure
18import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue
19import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall
20import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint
21import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
22
23import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
24import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey
25import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
26
27class RelationDefinitionIndexer {
28 val PatternGenerator base;
29
30 new(PatternGenerator base) {
31 this.base = base
32 }
33
34 public def generateRelationDefinitions(
35 LogicProblem problem,
36 Iterable<RelationDefinition> relations,
37 Map<String,PQuery> fqn2PQuery) {
38 val relation2PQuery = relations.toInvertedMap[
39 annotations.filter(TransfomedViatraQuery).head.patternFullyQualifiedName.lookup(fqn2PQuery)
40 ]
41
42 return '''
43 «FOR relation : relations»
44 // Must, May and Current queries for «relation.name»
45 «relation.transformPattern(relation.lookup(relation2PQuery), Modality.MUST)»
46 «relation.transformPattern(relation.lookup(relation2PQuery), Modality.MAY)»
47 «relation.transformPattern(relation.lookup(relation2PQuery), Modality.CURRENT)»
48 «ENDFOR»
49 '''
50 }
51
52 private def relationDefinitionName(RelationDefinition relation, Modality modality)
53 '''«modality.name.toLowerCase»InRelation_«base.canonizeName(relation.name)»'''
54
55 private def canonizeName(PVariable v) {
56 return '''«IF v.referringConstraints.size == 1»_«ENDIF»var_«v.name.replaceAll("\\W","")»'''
57 }
58
59 private def transformPattern(RelationDefinition relation, PQuery p, Modality modality) {
60 try {
61 return '''
62 private pattern «relationDefinitionName(relation,modality)»(
63 problem:LogicProblem, interpretation:PartialInterpretation,
64 «FOR param : p.parameters SEPARATOR ', '»var_«param.name»«ENDFOR»)
65 «FOR body : p.disjunctBodies.bodies SEPARATOR "or"»{
66 find interpretation(problem,interpretation);
67 «FOR constraint : body.constraints»
68 «constraint.transformConstraint(modality)»
69 «ENDFOR»
70 }«ENDFOR»
71 '''
72 } catch(UnsupportedOperationException e) {
73 throw new UnsupportedOperationException('''Can not transform pattern "«p.fullyQualifiedName»"!''',e)
74 }
75 }
76
77 private def toMustMay(Modality modality) {
78 if(modality == Modality::MAY) return Modality::MAY
79 else return Modality::MUST
80 }
81
82 def public referPattern(PQuery p, String[] variables, Modality modality, boolean positive, boolean transitive) '''
83 «IF !positive»neg «ENDIF»find «modality.name.toLowerCase»InRelation_pattern_«p.fullyQualifiedName.replace('.','_')»«IF transitive»+«ENDIF»(problem,interpretation,«variables.join(',')»);
84 '''
85
86 private dispatch def transformConstraint(TypeConstraint constraint, Modality modality) {
87 val touple = constraint.variablesTuple
88 if(touple.size == 1) {
89 val inputKey = constraint.equivalentJudgement.inputKey
90 if(inputKey instanceof EClassTransitiveInstancesKey) {
91 return base.typeIndexer.referInstanceOf(inputKey.emfKey,modality.toMustMay,
92 constraint.getVariableInTuple(0).canonizeName)
93 } else if(inputKey instanceof EDataTypeInSlotsKey){
94 return '''// type constraint is enforced by construction'''
95 }
96
97 } else if(touple.size == 2){
98 val key = (constraint.equivalentJudgement.inputKey as EStructuralFeatureInstancesKey).emfKey
99 if(key instanceof EReference) {
100 return base.referRelationByName(
101 key,
102 constraint.getVariableInTuple(0).canonizeName,
103 constraint.getVariableInTuple(1).canonizeName,
104 modality.toMustMay)
105 } else if (key instanceof EAttribute) {
106 return '''// attribute reference omitted'''//base.referRelationByName()
107 } else throw new UnsupportedOperationException('''unknown key: «key.class»''')
108 } else {
109 throw new UnsupportedOperationException()
110 }
111 }
112
113 private dispatch def transformConstraint(Equality equality, Modality modality) {
114 val a = equality.who
115 val b = equality.withWhom
116 transformEquality(modality.toMustMay, a, b)
117 }
118
119 private def CharSequence transformEquality(Modality modality, PVariable a, PVariable b) {
120 if(modality.isMustOrCurrent) '''«a.canonizeName» == «b.canonizeName»;'''
121 else '''find mayEquivalent(problem, interpretation, «a.canonizeName», «b.canonizeName»);'''
122 }
123
124 private dispatch def transformConstraint(Inequality inequality, Modality modality) {
125 val a = inequality.who
126 val b = inequality.withWhom
127 if(modality.isCurrent) {
128 return '''«a.canonizeName» != «b.canonizeName»;'''
129 } else if(modality.isMust) {
130 return '''neg find mayEquivalent(problem, interpretation, «a.canonizeName», «b.canonizeName»);'''
131 } else {
132 return '''«a.canonizeName» != «b.canonizeName»;'''
133 }
134 }
135
136 private dispatch def transformConstraint(NegativePatternCall pcall, Modality modality) {
137 val params = (0..<pcall.actualParametersTuple.size).map[index |
138 val variable = pcall.actualParametersTuple.get(index) as PVariable
139 return variable.canonizeName
140 ]
141 return referPattern(pcall.referredQuery,params,modality.dual,false,false)
142 }
143
144 private dispatch def transformConstraint(PositivePatternCall pcall, Modality modality) {
145 val params = (0..<pcall.variablesTuple.size).map[index |
146 val variable = pcall.variablesTuple.get(index) as PVariable
147 return variable.canonizeName
148 ]
149 return referPattern(pcall.referredQuery,params,modality,true,false)
150 }
151 private dispatch def transformConstraint(BinaryTransitiveClosure pcall, Modality modality) {
152 val params = (0..1).map[index |
153 val variable = pcall.getVariableInTuple(index) as PVariable
154 return variable.canonizeName
155 ]
156 return referPattern(pcall.referredQuery,params,modality,true,true)
157 }
158 private dispatch def transformConstraint(ExportedParameter e, Modality modality) {
159 return '''// «e.parameterName» is exported'''
160 }
161 private dispatch def transformConstraint(ConstantValue c, Modality modality) {
162 val target = c.supplierKey
163
164 var String targetString;
165 var String additionalDefinition;
166 if(target instanceof Enum<?>) {
167 targetString = '''const_«target.name»_«target.declaringClass.simpleName»'''
168 additionalDefinition = '''DefinedElement.name(«targetString»,"«target.name» «target.declaringClass.simpleName»"); LogicProblem.elements(problem,«targetString»);'''
169 } else if(target instanceof Integer) {
170 targetString = target.toString
171 additionalDefinition = ''''''
172 } else throw new UnsupportedOperationException('''Unknown constant type: «target.class»''')
173
174 val source = c.variablesTuple
175 var String sourceName
176 if(source.size == 1)
177 sourceName = (source.get(0) as PVariable).canonizeName
178 else throw new UnsupportedOperationException("unknown source")
179 return '''«sourceName» == «targetString»;«additionalDefinition»''';
180 }
181
182 private dispatch def transformConstraint(PConstraint c, Modality modality) {
183 throw new UnsupportedOperationException('''Unknown constraint type: "«c.class.name»"!''')
184 }
185} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationRefinementGenerator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationRefinementGenerator.xtend
new file mode 100644
index 00000000..7b175227
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationRefinementGenerator.xtend
@@ -0,0 +1,93 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
7import java.util.LinkedList
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
9
10class RelationRefinementGenerator {
11 PatternGenerator base;
12 public new(PatternGenerator base) {
13 this.base = base
14 }
15
16 def CharSequence generateRefineReference(LogicProblem p) {
17 return '''
18 «FOR relationRefinement: this.getRelationRefinements(p)»
19 pattern «relationRefinementQueryName(relationRefinement.key,relationRefinement.value)»(
20 problem:LogicProblem, interpretation:PartialInterpretation,
21 relationIterpretation:PartialRelationInterpretation«IF relationRefinement.value != null», oppositeInterpretation:PartialRelationInterpretation«ENDIF»,
22 from: DefinedElement, to: DefinedElement)
23 {
24 find interpretation(problem,interpretation);
25 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
26 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"«relationRefinement.key.name»");
27 «IF relationRefinement.value != null»
28 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
29 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"«relationRefinement.value.name»");
30 «ENDIF»
31 find mustExist(problem, interpretation, from);
32 find mustExist(problem, interpretation, to);
33 «base.typeIndexer.referInstanceOf((relationRefinement.key.parameters.get(0) as ComplexTypeReference).referred, Modality::MUST,"from")»
34 «base.typeIndexer.referInstanceOf((relationRefinement.key.parameters.get(1) as ComplexTypeReference).referred, Modality::MUST,"to")»
35 «base.relationDeclarationIndexer.referRelation(relationRefinement.key,"from","to",Modality.MAY)»
36 neg «base.relationDeclarationIndexer.referRelation(relationRefinement.key,"from","to",Modality.MUST)»
37 }
38 «ENDFOR»
39 '''
40 }
41
42 def String relationRefinementQueryName(RelationDeclaration relation, Relation inverseRelation) {
43 '''«IF inverseRelation != null
44 »refineRelation_«base.canonizeName(relation.name)»_and_«base.canonizeName(inverseRelation.name)»«
45 ELSE
46 »refineRelation_«base.canonizeName(relation.name)»«ENDIF»'''
47 }
48
49 def referRefinementQuery(RelationDeclaration relation, Relation inverseRelation, String relInterpretationName,
50 String inverseInterpretationName, String sourceName, String targetName)
51 '''find «this.relationRefinementQueryName(relation,inverseRelation)»(problem, interpretation, «relInterpretationName», «IF inverseRelation != null»inverseInterpretationName, «ENDIF»«sourceName», «targetName»);'''
52
53 def getRefineRelationQueries(LogicProblem p) {
54// val containmentRelations = p.containmentHierarchies.map[containmentRelations].flatten.toSet
55// p.relations.filter(RelationDeclaration).filter[!containmentRelations.contains(it)].toInvertedMap['''refineRelation_«base.canonizeName(it.name)»''']
56 /*
57 val res = new LinkedHashMap
58 for(relation: getRelationRefinements(p)) {
59 if(inverseRelations.containsKey(relation)) {
60 val name = '''refineRelation_«base.canonizeName(relation.name)»_and_«base.canonizeName(inverseRelations.get(relation).name)»'''
61 res.put(relation -> inverseRelations.get(relation),name)
62 } else {
63 val name = '''refineRelation_«base.canonizeName(relation.name)»'''
64 res.put(relation -> null,name)
65 }
66 }
67 return res*/
68
69 getRelationRefinements(p).toInvertedMap[relationRefinementQueryName(it.key,it.value)]
70 }
71
72
73 def getRelationRefinements(LogicProblem p) {
74 val inverses = base.getInverseRelations(p)
75 val containments = base.getContainments(p)
76 val list = new LinkedList
77 for(relation : p.relations.filter(RelationDeclaration)) {
78 if(!containments.contains(relation)) {
79 if(inverses.containsKey(relation)) {
80 val inverse = inverses.get(relation)
81 if(!containments.contains(inverse)) {
82 if(base.isRepresentative(relation,inverse)) {
83 list += (relation -> inverse)
84 }
85 }
86 } else {
87 list += (relation -> null)
88 }
89 }
90 }
91 return list
92 }
93} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RepairGenerator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RepairGenerator.xtend
new file mode 100644
index 00000000..30fe5878
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RepairGenerator.xtend
@@ -0,0 +1,18 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
4
5class RepairGenerator {
6 val PatternGenerator base;
7 new(PatternGenerator base) {
8 this.base = base
9 }
10
11 def generateRepairUnfinishedMultiplicityPatterns(LogicProblem problem) {
12 //val refinements = base.relationRefinementGenerator.getRelationRefinements(problem)
13 //val unfinisedLowerMultiplicities = base.get
14 }
15 def getRepairUnfinishedMultiplicityPatterns() {
16
17 }
18} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeIndexer.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeIndexer.xtend
new file mode 100644
index 00000000..6c450664
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeIndexer.xtend
@@ -0,0 +1,16 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
5import org.eclipse.emf.ecore.EClass
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeAnalysisResult
9
10interface TypeIndexer {
11 public def CharSequence getRequiredQueries()
12 public def boolean requiresTypeAnalysis()
13 public def CharSequence generateInstanceOfQueries(LogicProblem problem,PartialInterpretation emptySolution,TypeAnalysisResult typeAnalysisResult)
14 public def CharSequence referInstanceOf(Type type, Modality modality, String variableName)
15 public def CharSequence referInstanceOf(EClass type, Modality modality, String variableName)
16} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeIndexerWithPreliminaryTypeAnalysis.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeIndexerWithPreliminaryTypeAnalysis.xtend
new file mode 100644
index 00000000..3c49c323
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeIndexerWithPreliminaryTypeAnalysis.xtend
@@ -0,0 +1,97 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
4import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
5import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeAnalysisResult
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
8import org.eclipse.emf.ecore.EClass
9import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeRefinementPrecondition
10import java.util.Collections
11
12class TypeIndexerWithPreliminaryTypeAnalysis implements TypeIndexer{
13 val PatternGenerator base;
14
15 new(PatternGenerator base) {
16 this.base = base
17 }
18 override requiresTypeAnalysis() { true }
19
20 override getRequiredQueries() '''
21 private pattern typeInterpretation(problem:LogicProblem, interpetation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialTypeInterpratation) {
22 find interpretation(problem,interpetation);
23 LogicProblem.types(problem,type);
24 PartialInterpretation.partialtypeinterpratation(interpetation,typeInterpretation);
25 PartialTypeInterpratation.interpretationOf(typeInterpretation,type);
26 }
27
28 private pattern directInstanceOf(problem:LogicProblem, interpetation:PartialInterpretation, element:DefinedElement, type:Type) {
29 find interpretation(problem,interpetation);
30 LogicProblem.types(problem,type);
31 TypeDefinition.elements(type,element);
32 } or {
33 find interpretation(problem,interpetation);
34 find typeInterpretation(problem,interpetation,type,typeInterpretation);
35 PartialTypeInterpratation.elements(typeInterpretation,element);
36 }
37 '''
38
39 override generateInstanceOfQueries(LogicProblem problem, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult) {
40 val mayNewTypePreconditions = typeAnalysisResult.mayNewTypePreconditions
41
42 return '''
43 «FOR type:problem.types»
44 «problem.generateMustInstenceOf(type)»
45 «problem.generateMayInstanceOf(type,mayNewTypePreconditions.get(type))»
46 «ENDFOR»
47 '''
48 }
49
50 private def patternName(Type type, Modality modality)
51 '''«modality.toString.toLowerCase»InstanceOf«base.canonizeName(type.name)»'''
52
53 private def generateMustInstenceOf(LogicProblem problem, Type type) {
54 '''
55 /**
56 * An element must be an instance of type "«type.name»".
57 */
58 private pattern «patternName(type,Modality.MUST)»(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59 Type.name(type,"«type.name»");
60 find directInstanceOf(problem,interpretation,element,type);
61 }
62 '''
63 }
64
65 private def generateMayInstanceOf(LogicProblem problem, Type type, TypeRefinementPrecondition precondition) {
66 val inhibitorTypes = if(precondition!=null) {
67 precondition.inhibitorTypes
68 } else {
69 null
70 }
71 '''
72 /**
73 * An element may be an instance of type "«type.name»".
74 */
75 private pattern «patternName(type,Modality.MAY)»(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
76 «IF inhibitorTypes != null»{
77 find interpretation(problem,interpretation);
78 PartialInterpretation.newElements(interpretation,element);
79 «FOR inhibitorType : inhibitorTypes»
80 neg «referInstanceOf(inhibitorType,Modality.MUST,"element")»
81 «ENDFOR»
82 } or {
83 find interpretation(problem,interpretation);
84 PartialInterpretation.openWorldElementPrototype(interpetation,element);
85 } or
86 «ENDIF»
87 { «referInstanceOf(type,Modality.MUST,"element")» }
88 '''
89 }
90
91 public override referInstanceOf(Type type, Modality modality, String variableName) {
92 '''find «patternName(type,modality)»(problem,interpretation,«variableName»);'''
93 }
94 public override referInstanceOf(EClass type, Modality modality, String variableName) {
95 '''find «modality.toString.toLowerCase»InstanceOf«base.canonizeName('''class «type.name»''')»(problem,interpretation,«variableName»);'''
96 }
97} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeRefinementGenerator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeRefinementGenerator.xtend
new file mode 100644
index 00000000..a9ce9d73
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeRefinementGenerator.xtend
@@ -0,0 +1,95 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeAnalysisResult
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
8import java.util.Map
9import org.eclipse.xtend.lib.annotations.Data
10import java.util.HashMap
11import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.InverseRelationAssertion
12import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
13import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
14import java.util.LinkedHashMap
15import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
16import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.ContainmentHierarchy
17
18@Data
19class ObjectCreationPrecondition {
20 Relation containmentRelation
21 Relation inverseContainment
22 Type newType
23}
24
25abstract class TypeRefinementGenerator {
26 val protected PatternGenerator base;
27 public new(PatternGenerator base) {
28 this.base = base
29 }
30
31 public def boolean requiresTypeAnalysis()
32 public def CharSequence generateRefineObjectQueries(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult)
33 public def CharSequence generateRefineTypeQueries(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult)
34 public def Map<? extends Type, String> getRefineTypeQueryNames(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult)
35
36 public def getRefineObjectQueryNames(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult) {
37 val Map<ObjectCreationPrecondition,String> objectCreationQueries = new LinkedHashMap
38 val containment = p.containmentHierarchies.head
39 val inverseRelations = new HashMap
40 p.annotations.filter(InverseRelationAssertion).forEach[
41 inverseRelations.put(it.inverseA,it.inverseB)
42 inverseRelations.put(it.inverseB,it.inverseA)
43 ]
44 for(type: p.types.filter(TypeDeclaration).filter[!it.isAbstract]) {
45 if(containment.typeInContainment(type)) {
46 for(containmentRelation : containment.containmentRelations.filter[canBeContainedByRelation(it,type)]) {
47 if(inverseRelations.containsKey(containmentRelation)) {
48 objectCreationQueries.put(
49 new ObjectCreationPrecondition(containmentRelation,inverseRelations.get(containmentRelation),type),
50 this.patternName(containmentRelation,inverseRelations.get(containmentRelation),type))
51 } else {
52 objectCreationQueries.put(
53 new ObjectCreationPrecondition(containmentRelation,null,type),
54 patternName(containmentRelation,null,type))
55 }
56 }
57 } else {
58 objectCreationQueries.put(
59 new ObjectCreationPrecondition(null,null,type),
60 this.patternName(null,null,type))
61 }
62 }
63 return objectCreationQueries
64 }
65
66 protected def canBeContainedByRelation(Relation r, Type t) {
67 if(r.parameters.size==2) {
68 val param = r.parameters.get(1)
69 if(param instanceof ComplexTypeReference) {
70 val allSuperTypes = t.transitiveClosureStar[it.supertypes]
71 for(superType : allSuperTypes) {
72 if(param.referred == superType) return true
73 }
74 }
75 }
76 return false
77 }
78
79 private def typeInContainment(ContainmentHierarchy hierarchy, Type type) {
80 val allSuperTypes = type.transitiveClosureStar[it.supertypes]
81 return allSuperTypes.exists[hierarchy.typesOrderedInHierarchy.contains(it)]
82 }
83
84 protected def String patternName(Relation containmentRelation, Relation inverseContainment, Type newType) {
85 if(containmentRelation != null) {
86 if(inverseContainment != null) {
87 '''createObject_«base.canonizeName(newType.name)»_by_«base.canonizeName(containmentRelation.name)»_with_«base.canonizeName(inverseContainment.name)»'''
88 } else {
89 '''createObject_«base.canonizeName(newType.name)»_by_«base.canonizeName(containmentRelation.name)»'''
90 }
91 } else {
92 '''createObject_«base.canonizeName(newType.name)»'''
93 }
94 }
95} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeRefinementWithPreliminaryTypeAnalysis.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeRefinementWithPreliminaryTypeAnalysis.xtend
new file mode 100644
index 00000000..be54d63c
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeRefinementWithPreliminaryTypeAnalysis.xtend
@@ -0,0 +1,105 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.InverseRelationAssertion
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
6import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
7import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
8import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeAnalysisResult
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
10import java.util.HashMap
11
12class TypeRefinementWithPreliminaryTypeAnalysis extends TypeRefinementGenerator{
13 public new(PatternGenerator base) {
14 super(base)
15 }
16 override requiresTypeAnalysis() { true }
17
18
19 override generateRefineObjectQueries(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult) {
20 val possibleNewDynamicType = typeAnalysisResult.possibleNewDynamicTypes
21 val containment = p.containmentHierarchies.head
22 val inverseRelations = new HashMap
23 p.annotations.filter(InverseRelationAssertion).forEach[
24 inverseRelations.put(it.inverseA,it.inverseB)
25 inverseRelations.put(it.inverseB,it.inverseA)
26 ]
27 return '''
28 «FOR type:possibleNewDynamicType»
29 «IF(containment.typesOrderedInHierarchy.contains(type))»
30 «FOR containmentRelation : containment.containmentRelations.filter[canBeContainedByRelation(it,type)]»
31 «IF inverseRelations.containsKey(containmentRelation)»
32 pattern «this.patternName(containmentRelation,inverseRelations.get(containmentRelation),type)»(
33 problem:LogicProblem, interpretation:PartialInterpretation,
34 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialTypeInterpratation,
35 container:DefinedElement)
36 {
37 find interpretation(problem,interpretation);
38 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39 PartialTypeInterpratation.interpretationOf.name(typeInterpretation,"«type.name»");
40 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
41 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"«containmentRelation.name»");
42 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
43 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"«inverseRelations.get(containmentRelation).name»");
44 «base.typeIndexer.referInstanceOf((containmentRelation.parameters.get(0) as ComplexTypeReference).referred,Modality.MUST,"container")»
45 «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")»
46 «base.relationDeclarationIndexer.referRelation(containmentRelation as RelationDeclaration,"container","newObject",Modality.MAY)»
47 find mustExist(problem, interpretation, container);
48 neg find mustExist(problem, interpretation, newObject);
49 }
50 «ELSE»
51 pattern «this.patternName(containmentRelation,null,type)»(
52 problem:LogicProblem, interpretation:PartialInterpretation,
53 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialTypeInterpratation,
54 container:DefinedElement)
55 {
56 find interpretation(problem,interpretation);
57 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58 PartialTypeInterpratation.interpretationOf.name(typeInterpretation,"«type.name»");
59 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
60 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"«containmentRelation.name»");
61 «base.typeIndexer.referInstanceOf((containmentRelation.parameters.get(0) as ComplexTypeReference).referred,Modality.MUST,"container")»
62 «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")»
63 «base.relationDeclarationIndexer.referRelation(containmentRelation as RelationDeclaration,"container","newObject",Modality.MAY)»
64 find mustExist(problem, interpretation, container);
65 neg find mustExist(problem, interpretation, newObject);
66 }
67 «ENDIF»
68 «ENDFOR»
69 «ELSE»
70 pattern createObject_«base.canonizeName(type.name)»(
71 problem:LogicProblem, interpretation:PartialInterpretation,
72 typeInterpretation:PartialTypeInterpratation)
73 {
74 find interpretation(problem,interpretation);
75 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
76 PartialTypeInterpratation.interpretationOf.name(type,"«type.name»");
77 «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")»
78 find mayExist(problem, interpretation, newObject);
79 neg find mustExist(problem, interpretation, newObject);
80 }
81 «ENDIF»
82 «ENDFOR»
83 '''
84 }
85
86 override generateRefineTypeQueries(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult) {
87 val newTypeRefinements = typeAnalysisResult.possibleNewTypeRefinements
88 return '''
89 «FOR newTypeRefinement : newTypeRefinements»
90 pattern refineTypeTo_«base.canonizeName(newTypeRefinement.targetType.name)»(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
91 find interpretation(problem,interpretation);
92 PartialInterpretation.newElements(interpretation,element);
93 «FOR inhibitorType : newTypeRefinement.inhibitorTypes»
94 neg «base.typeIndexer.referInstanceOf(inhibitorType,Modality.MUST,"element")»
95 «ENDFOR»
96 }
97 «ENDFOR»
98 '''
99 }
100
101 override getRefineTypeQueryNames(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult) {
102 val newTypeRefinements = typeAnalysisResult.possibleNewTypeRefinements
103 newTypeRefinements.map[targetType].toInvertedMap['''refineTypeTo_«base.canonizeName(it.name)»''']
104 }
105} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/UnfinishedIndexer.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/UnfinishedIndexer.xtend
new file mode 100644
index 00000000..ad1c9033
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/UnfinishedIndexer.xtend
@@ -0,0 +1,85 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
2
3import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.LowerMultiplicityAssertion
4import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
5import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransformedViatraWellformednessConstraint
6import java.util.Map
7import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
8
9import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
10import java.util.LinkedHashMap
11import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
12import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
13
14class UnfinishedIndexer {
15 val PatternGenerator base
16
17 new(PatternGenerator patternGenerator) {
18 this.base = patternGenerator
19 }
20
21 def generateUnfinishedWfQueries(LogicProblem problem, Map<String,PQuery> fqn2PQuery) {
22 val wfQueries = base.wfQueries(problem)
23 '''
24 «FOR wfQuery: wfQueries»
25 pattern unfinishedBy_«base.canonizeName(wfQuery.target.name)»(problem:LogicProblem, interpretation:PartialInterpretation,
26 «FOR param : wfQuery.patternFullyQualifiedName.lookup(fqn2PQuery).parameters SEPARATOR ', '»var_«param.name»«ENDFOR»)
27 {
28 «base.relationDefinitionIndexer.referPattern(
29 wfQuery.patternFullyQualifiedName.lookup(fqn2PQuery),
30 wfQuery.patternFullyQualifiedName.lookup(fqn2PQuery).parameters.map['''var_«it.name»'''],
31 Modality.CURRENT,
32 true,false)»
33 }
34 «ENDFOR»
35 '''
36 }
37 def getUnfinishedWFQueryNames(LogicProblem problem) {
38 val wfQueries = base.wfQueries(problem)
39 val map = new LinkedHashMap
40 for(wfQuery : wfQueries) {
41 map.put(wfQuery.target,'''unfinishedBy_«base.canonizeName(wfQuery.target.name)»''')
42 }
43 return map
44 }
45 def generateUnfinishedMultiplicityQueries(LogicProblem problem, Map<String,PQuery> fqn2PQuery) {
46 val lowerMultiplicities = base.lowerMultiplicities(problem)
47 return '''
48 «FOR lowerMultiplicity : lowerMultiplicities»
49 pattern «unfinishedMultiplicityName(lowerMultiplicity)»(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
50 find interpretation(problem,interpretation);
51 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"«lowerMultiplicity.relation.name»");
53 «base.typeIndexer.referInstanceOf(lowerMultiplicity.firstParamTypeOfRelation,Modality::MUST,"object")»
54 numberOfExistingReferences == count «base.referRelation(lowerMultiplicity.relation,"object","_",Modality.MUST,fqn2PQuery)»
55 check(numberOfExistingReferences < «lowerMultiplicity.lower»);
56 missingMultiplicity == eval(«lowerMultiplicity.lower»-numberOfExistingReferences);
57 }
58 «ENDFOR»
59 '''
60 }
61 def String unfinishedMultiplicityName(LowerMultiplicityAssertion lowerMultiplicityAssertion)
62 '''unfinishedLowerMultiplicity_«base.canonizeName(lowerMultiplicityAssertion.relation.name)»'''
63
64 def public referUnfinishedMultiplicityQuery(LowerMultiplicityAssertion lowerMultiplicityAssertion)
65 '''find «unfinishedMultiplicityName(lowerMultiplicityAssertion)»(problem, interpretation ,object, missingMultiplicity);'''
66
67 def getFirstParamTypeOfRelation(LowerMultiplicityAssertion lowerMultiplicityAssertion) {
68 val parameters = lowerMultiplicityAssertion.relation.parameters
69 if(parameters.size == 2) {
70 val firstParam = parameters.get(0)
71 if(firstParam instanceof ComplexTypeReference) {
72 return firstParam.referred
73 }
74 }
75 }
76
77 def getUnfinishedMultiplicityQueries(LogicProblem problem) {
78 val lowerMultiplicities = base.lowerMultiplicities(problem)
79 val map = new LinkedHashMap
80 for(lowerMultiplicity : lowerMultiplicities) {
81 map.put(lowerMultiplicity.relation,unfinishedMultiplicityName(lowerMultiplicity))
82 }
83 return map
84 }
85}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/GoalConstraintProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/GoalConstraintProvider.xtend
new file mode 100644
index 00000000..e1be2742
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/GoalConstraintProvider.xtend
@@ -0,0 +1,18 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules
2
3import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.MultiplicityGoalConstraintCalculator
4import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.GeneratedPatterns
5import java.util.ArrayList
6
7class GoalConstraintProvider {
8 def public getUnfinishedMultiplicityQueries(GeneratedPatterns patterns) {
9 val multiplicityQueries = patterns.unfinishedMulticiplicityQueries
10 val res = new ArrayList(multiplicityQueries.size)
11 for(multiplicityQuery : multiplicityQueries.entrySet) {
12 val targetRelationName = multiplicityQuery.key.name
13 val query = multiplicityQuery.value
14 res += new MultiplicityGoalConstraintCalculator(targetRelationName,query);
15 }
16 return res
17 }
18} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend
new file mode 100644
index 00000000..8b0f8f85
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend
@@ -0,0 +1,209 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
8import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
9import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationStatistics
10import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.GeneratedPatterns
11import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.ObjectCreationPrecondition
12import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation
14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation
15import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationFactory
16import java.util.LinkedHashMap
17import org.eclipse.viatra.query.runtime.api.GenericPatternMatch
18import org.eclipse.viatra.query.runtime.api.IQuerySpecification
19import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
20import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRule
21import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRuleFactory
22
23class RefinementRuleProvider {
24 private extension BatchTransformationRuleFactory factory = new BatchTransformationRuleFactory
25 private extension PartialinterpretationFactory factory2 = PartialinterpretationFactory.eINSTANCE
26 private extension LogiclanguageFactory factory3 = LogiclanguageFactory.eINSTANCE
27
28 def canonizeName(String name) {
29 return name.replace(' ','_')
30 }
31
32 def LinkedHashMap<ObjectCreationPrecondition, BatchTransformationRule<GenericPatternMatch, ViatraQueryMatcher<GenericPatternMatch>>>
33 createObjectRefinementRules(
34 GeneratedPatterns patterns,
35 boolean nameNewElement,
36 ModelGenerationStatistics statistics
37 )
38 {
39 val res = new LinkedHashMap
40 for(LHSEntry: patterns.refineObjectQueries.entrySet) {
41 val containmentRelation = LHSEntry.key.containmentRelation
42 val inverseRelation = LHSEntry.key.inverseContainment
43 val type = LHSEntry.key.newType
44 val lhs = LHSEntry.value as IQuerySpecification<ViatraQueryMatcher<GenericPatternMatch>>
45 val rule = createObjectCreationRule(containmentRelation,inverseRelation,type,lhs,nameNewElement,statistics)
46 res.put(LHSEntry.key,rule)
47 }
48 return res
49 }
50
51 def private createObjectCreationRule(
52 Relation containmentRelation,
53 Relation inverseRelation,
54 Type type,
55 IQuerySpecification<ViatraQueryMatcher<GenericPatternMatch>> lhs,
56 boolean nameNewElement,
57 ModelGenerationStatistics statistics)
58 {
59 val name = '''addObject_«type.name.canonizeName»«
60 IF containmentRelation!=null»_by_«containmentRelation.name.canonizeName»«ENDIF»'''
61 val ruleBuilder = factory.createRule
62 .name(name)
63 .precondition(lhs)
64 if(containmentRelation != null) {
65 if(inverseRelation!= null) {
66 ruleBuilder.action[match |
67 //println(name)
68 val startTime = System.nanoTime
69 //val problem = match.get(0) as LogicProblem
70 val interpretation = match.get(1) as PartialInterpretation
71 val relationInterpretation = match.get(2) as PartialRelationInterpretation
72 val inverseRelationInterpretation = match.get(3) as PartialRelationInterpretation
73 val typeInterpretation = match.get(4) as PartialTypeInterpratation
74 val container = match.get(5) as DefinedElement
75
76 val newElement = createDefinedElement
77 if(nameNewElement) {
78 newElement.name = '''new «interpretation.newElements.size»'''
79 }
80
81 // Existence
82 interpretation.newElements+=newElement
83 interpretation.maxNewElements=interpretation.maxNewElements-1
84 if(interpretation.minNewElements > 0) {
85 interpretation.minNewElements=interpretation.minNewElements-1
86 }
87
88 // Types
89 typeInterpretation.elements += newElement
90 typeInterpretation.supertypeInterpretation.forEach[it.elements += newElement]
91 // ContainmentRelation
92 val newLink1 = factory2.createBinaryElementRelationLink => [it.param1 = container it.param2 = newElement]
93 relationInterpretation.relationlinks+=newLink1
94 // Inverse Containment
95 val newLink2 = factory2.createBinaryElementRelationLink => [it.param1 = newElement it.param2 = container]
96 inverseRelationInterpretation.relationlinks+=newLink2
97 statistics.addExecutionTime(System.nanoTime-startTime)
98 ]
99 } else {
100 ruleBuilder.action[match |
101 //println(name)
102 val startTime = System.nanoTime
103 //val problem = match.get(0) as LogicProblem
104 val interpretation = match.get(1) as PartialInterpretation
105 val relationInterpretation = match.get(2) as PartialRelationInterpretation
106 val typeInterpretation = match.get(3) as PartialTypeInterpratation
107 val container = match.get(4) as DefinedElement
108
109 val newElement = createDefinedElement
110 if(nameNewElement) {
111 newElement.name = '''new «interpretation.newElements.size»'''
112 }
113
114 // Existence
115 interpretation.newElements+=newElement
116 interpretation.maxNewElements=interpretation.maxNewElements-1
117 if(interpretation.minNewElements > 0) {
118 interpretation.minNewElements=interpretation.minNewElements-1
119 }
120
121 // Types
122 typeInterpretation.elements += newElement
123 typeInterpretation.supertypeInterpretation.forEach[it.elements += newElement]
124 // ContainmentRelation
125 val newLink = factory2.createBinaryElementRelationLink => [it.param1 = container it.param2 = newElement]
126 relationInterpretation.relationlinks+=newLink
127 statistics.addExecutionTime(System.nanoTime-startTime)
128 ]
129 }
130 } else {
131 ruleBuilder.action[match |
132 //println(name)
133 val startTime = System.nanoTime
134 //val problem = match.get(0) as LogicProblem
135 val interpretation = match.get(1) as PartialInterpretation
136 val typeInterpretation = match.get(2) as PartialTypeInterpratation
137
138 val newElement = createDefinedElement //=> [it.name = null]
139 if(nameNewElement) {
140 newElement.name = '''new «interpretation.newElements.size»'''
141 }
142 // Existence
143 interpretation.newElements+=newElement
144 interpretation.maxNewElements=interpretation.maxNewElements-1
145 if(interpretation.minNewElements > 0) {
146 interpretation.minNewElements=interpretation.minNewElements-1
147 }
148 // Types
149 typeInterpretation.elements += newElement
150 typeInterpretation.supertypeInterpretation.forEach[it.elements += newElement]
151 statistics.addExecutionTime(System.nanoTime-startTime)
152 ]
153 }
154 return ruleBuilder.build
155 }
156
157 def createRelationRefinementRules(GeneratedPatterns patterns, ModelGenerationStatistics statistics) {
158 val res = new LinkedHashMap
159 for(LHSEntry: patterns.refinerelationQueries.entrySet) {
160 val declaration = LHSEntry.key.key
161 val inverseReference = LHSEntry.key.value
162 val lhs = LHSEntry.value as IQuerySpecification<ViatraQueryMatcher<GenericPatternMatch>>
163 val rule = createRelationRefinementRule(declaration,inverseReference,lhs,statistics)
164 res.put(LHSEntry.key,rule)
165 }
166 return res
167 }
168
169 def private BatchTransformationRule<GenericPatternMatch, ViatraQueryMatcher<GenericPatternMatch>>
170 createRelationRefinementRule(RelationDeclaration declaration, Relation inverseRelation, IQuerySpecification<ViatraQueryMatcher<GenericPatternMatch>> lhs, ModelGenerationStatistics statistics)
171 {
172 val name = '''addRelation_«declaration.name.canonizeName»«IF inverseRelation != null»_and_«inverseRelation.name.canonizeName»«ENDIF»'''
173 val ruleBuilder = factory.createRule
174 .name(name)
175 .precondition(lhs)
176 if (inverseRelation == null) {
177 ruleBuilder.action [ match |
178 val startTime = System.nanoTime
179 //println(name)
180 // val problem = match.get(0) as LogicProblem
181 // val interpretation = match.get(1) as PartialInterpretation
182 val relationInterpretation = match.get(2) as PartialRelationInterpretation
183 val src = match.get(3) as DefinedElement
184 val trg = match.get(4) as DefinedElement
185 val link = createBinaryElementRelationLink => [it.param1 = src it.param2 = trg]
186 relationInterpretation.relationlinks += link
187 statistics.addExecutionTime(System.nanoTime-startTime)
188 ]
189 } else {
190 ruleBuilder.action [ match |
191 val startTime = System.nanoTime
192 //println(name)
193 // val problem = match.get(0) as LogicProblem
194 // val interpretation = match.get(1) as PartialInterpretation
195 val relationInterpretation = match.get(2) as PartialRelationInterpretation
196 val inverseInterpretation = match.get(3) as PartialRelationInterpretation
197 val src = match.get(4) as DefinedElement
198 val trg = match.get(5) as DefinedElement
199 val link = createBinaryElementRelationLink => [it.param1 = src it.param2 = trg]
200 relationInterpretation.relationlinks += link
201 val inverseLink = createBinaryElementRelationLink => [it.param1 = trg it.param2 = src]
202 inverseInterpretation.relationlinks += inverseLink
203 statistics.addExecutionTime(System.nanoTime-startTime)
204 ]
205 }
206
207 return ruleBuilder.build
208 }
209}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/util/ParseUtil.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/util/ParseUtil.xtend
new file mode 100644
index 00000000..005304ea
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/util/ParseUtil.xtend
@@ -0,0 +1,89 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.util
2
3import com.google.inject.Guice
4import com.google.inject.Injector
5import com.google.inject.Module
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage
7import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage
8import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage
9import java.io.ByteArrayInputStream
10import java.io.InputStream
11import java.util.LinkedHashMap
12import org.eclipse.emf.common.util.URI
13import org.eclipse.emf.ecore.resource.Resource
14import org.eclipse.emf.ecore.util.EcoreUtil
15import org.eclipse.viatra.query.patternlanguage.PatternLanguageStandaloneSetup
16import org.eclipse.viatra.query.patternlanguage.annotations.ExtensionBasedAnnotationValidatorLoader
17import org.eclipse.viatra.query.patternlanguage.annotations.IAnnotationValidatorLoader
18import org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguageRuntimeModule
19import org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguageStandaloneSetup
20import org.eclipse.viatra.query.patternlanguage.emf.GenmodelExtensionLoader
21import org.eclipse.viatra.query.patternlanguage.emf.IGenmodelMappingLoader
22import org.eclipse.viatra.query.patternlanguage.emf.eMFPatternLanguage.PatternModel
23import org.eclipse.viatra.query.patternlanguage.emf.specification.SpecificationBuilder
24import org.eclipse.xtext.resource.XtextResourceSet
25
26class MyModule extends EMFPatternLanguageRuntimeModule implements Module{
27 def public Class<? extends IAnnotationValidatorLoader> bindAnnotationValidatorLoader() {
28 return typeof(ExtensionBasedAnnotationValidatorLoader);
29 }
30 def public Class<? extends IGenmodelMappingLoader> bindGenmodelMappingLoader() {
31 return typeof(GenmodelExtensionLoader);
32 }
33}
34
35class ParseUtil {
36 val Injector injector;
37 new() {
38 PatternLanguageStandaloneSetup.doSetup
39 EMFPatternLanguageStandaloneSetup.doSetup;
40 PartialinterpretationPackage.eINSTANCE.class;
41 LogicproblemPackage.eINSTANCE.class;
42 LogiclanguagePackage.eINSTANCE.class;
43
44 injector = internalCreateInjector//(new EMFPatternLanguageStandaloneSetup()).createInjectorAndDoEMFRegistration();
45 }
46
47 def protected Injector internalCreateInjector() {
48 var newInjector = new EMFPatternLanguageStandaloneSetup().createInjectorAndDoEMFRegistration();
49 //XXX the following line enforce the tests to be run in an Eclipse environment
50 val Module module = new MyModule
51 newInjector = Guice.createInjector(module)
52 //ViatraQueryLoggingUtil.setExternalLogger(newInjector.getInstance(Logger.class));
53 //EMFPatternLanguagePlugin.getInstance().addCompoundInjector(newInjector,EMFPatternLanguagePlugin.TEST_INJECTOR_PRIORITY);
54 return newInjector;
55 }
56
57// @Inject
58// var ParseHelper<PatternModel> parseHelper;
59 val builder = new SpecificationBuilder
60
61 public def parse(CharSequence vqlFileContent) {
62 //val patternModel = this.parseHelper.parse(vqlFileContent)
63 val XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet);
64 val Resource resource = resourceSet.createResource(URI.createURI("dummy:/example.vql"));
65 val InputStream in = new ByteArrayInputStream(vqlFileContent.toString.getBytes());
66 resource.load(in, resourceSet.getLoadOptions());
67 val patternModel = resource.getContents().get(0) as PatternModel;
68
69 EcoreUtil.resolveAll(resource)
70 resource.validate
71 val res = new LinkedHashMap
72 for(pattern : patternModel.patterns) {
73 val querySpecification = builder.getOrCreateSpecification(pattern)
74 res.put(querySpecification.fullyQualifiedName,querySpecification)
75 //println('''«querySpecification.fullyQualifiedName» -> «querySpecification»''')
76 }
77 resource.validate
78 return res
79 }
80
81 def private validate(Resource resource) {
82 val errors = resource.errors
83 if(!errors.isEmpty) {
84 println('''-- Errors --''')
85 errors.forEach[println('''> «it»''')]
86 println('''------------''')
87 }
88 }
89} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.classpath b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.classpath
new file mode 100644
index 00000000..1c96fe2f
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.classpath
@@ -0,0 +1,8 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
4 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
5 <classpathentry kind="src" path="src"/>
6 <classpathentry kind="src" path="xtend-gen"/>
7 <classpathentry kind="output" path="bin"/>
8</classpath>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.gitignore b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.gitignore
new file mode 100644
index 00000000..8ae4e44d
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.gitignore
@@ -0,0 +1,4 @@
1/bin/
2/src-gen/
3/vql-gen/
4/xtend-gen/
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.project b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.project
new file mode 100644
index 00000000..153ec5ab
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.project
@@ -0,0 +1,34 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.jdt.core.javabuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.pde.ManifestBuilder</name>
20 <arguments>
21 </arguments>
22 </buildCommand>
23 <buildCommand>
24 <name>org.eclipse.pde.SchemaBuilder</name>
25 <arguments>
26 </arguments>
27 </buildCommand>
28 </buildSpec>
29 <natures>
30 <nature>org.eclipse.pde.PluginNature</nature>
31 <nature>org.eclipse.jdt.core.javanature</nature>
32 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
33 </natures>
34</projectDescription>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.settings/org.eclipse.jdt.core.prefs b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..295926d9
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
1eclipse.preferences.version=1
2org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4org.eclipse.jdt.core.compiler.compliance=1.8
5org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/META-INF/MANIFEST.MF b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..24dbd918
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: Partialinterpretation2logic
4Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic
5Bundle-Version: 1.0.0.qualifier
6Bundle-RequiredExecutionEnvironment: JavaSE-1.8
7Require-Bundle: com.google.guava,
8 org.eclipse.xtext.xbase.lib,
9 org.eclipse.xtend.lib,
10 org.eclipse.xtend.lib.macro,
11 hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0",
12 hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0",
13 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;bundle-version="1.0.0"
14Export-Package: hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic
15
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/build.properties b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/build.properties
new file mode 100644
index 00000000..41eb6ade
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/build.properties
@@ -0,0 +1,4 @@
1source.. = src/
2output.. = bin/
3bin.includes = META-INF/,\
4 .
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2Logic.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2Logic.xtend
new file mode 100644
index 00000000..2910a702
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2Logic.xtend
@@ -0,0 +1,21 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic
2
3import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace
4import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput
5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
6import java.util.List
7import org.eclipse.emf.ecore.EObject
8
9class InstanceModel2Logic {
10 val InstanceModel2PartialInterpretation instanceModel2PartialInterpretation = new InstanceModel2PartialInterpretation
11 val PartialInterpretation2Logic partialInterpretation2Logic = new PartialInterpretation2Logic
12
13 public def transform(
14 TracedOutput<LogicProblem, Ecore2Logic_Trace> metamodelTranslationResult,
15 List<EObject> objects)
16 {
17 val res1 = this.instanceModel2PartialInterpretation.transform(metamodelTranslationResult,objects,true)
18 this.partialInterpretation2Logic.transformPartialIntepretation2Logic(metamodelTranslationResult.output,res1)
19 return metamodelTranslationResult//.output
20 }
21} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2PartialInterpretation.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2PartialInterpretation.xtend
new file mode 100644
index 00000000..58c41a49
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2PartialInterpretation.xtend
@@ -0,0 +1,130 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic
2
3import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
4import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
8import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.PartialInterpretationInitialiser
10import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.Problem2PartialInterpretationTrace
11import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation
12import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationFactory
13import java.util.HashMap
14import java.util.List
15import java.util.Map
16import org.eclipse.emf.common.util.Enumerator
17import org.eclipse.emf.ecore.EObject
18
19import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
20import org.eclipse.emf.ecore.resource.Resource
21import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput
22
23class InstanceModel2PartialInterpretation {
24 val extension LogiclanguageFactory factory = LogiclanguageFactory.eINSTANCE
25 val extension PartialinterpretationFactory factory2 = PartialinterpretationFactory.eINSTANCE
26 val Ecore2Logic ecore2Logic = new Ecore2Logic
27 val partialInterpretationInitialiser = new PartialInterpretationInitialiser
28
29 public def transform(
30 TracedOutput<LogicProblem, Ecore2Logic_Trace> metamodelTranslationResult,
31 Resource resource,
32 boolean withID)
33 {
34 val objects = resource.allContents.toList
35 return transform(metamodelTranslationResult,objects,withID)
36 }
37
38 public def transform(
39 TracedOutput<LogicProblem, Ecore2Logic_Trace> metamodelTranslationResult,
40 List<EObject> objects,
41 boolean withID)
42 {
43 val problem = metamodelTranslationResult.output
44 val ecore2LogicTrace = metamodelTranslationResult.trace
45 val tracedOutput = partialInterpretationInitialiser.initialisePartialInterpretation(problem, -1, -1)
46 val partialInterpretation = tracedOutput.output
47 val partialInterpretationTrace = tracedOutput.trace
48
49 val Map<EObject,DefinedElement> object2DefinedElement = new HashMap
50
51 // EObject -> DefinedElement
52 for(objectIndex : 0..<objects.size) {
53 val object = objects.get(objectIndex)
54 val element = createDefinedElement => [
55 it.name = if(withID)
56 { '''PartialObject«objectIndex»''' } else
57 { null }
58 ]
59
60 // Add element to interpretation
61 partialInterpretation.newElements += element
62
63 // Define the types
64 val type = ecore2Logic.TypeofEClass(ecore2LogicTrace,object.eClass) as TypeDeclaration
65 val interpretation = type.lookup(partialInterpretationTrace.type2Interpretation)
66 interpretation.elements += element
67 interpretation.supertypeInterpretation.forEach[elements += element]
68
69 // Trace handling
70 object2DefinedElement.put(object, element)
71 }
72
73 for(source : objects) {
74 // Translating the references
75 for(reference : source.eClass.EAllReferences) {
76 val type = ecore2Logic.relationOfReference(ecore2LogicTrace,reference)
77 val interpretation = type.lookup(partialInterpretationTrace.relation2Interpretation)
78 val sourceElement = source.lookup(object2DefinedElement)
79 if(reference.isMany) {
80 val listOfTargets = source.eGet(reference) as List<? extends EObject>
81 for(target : listOfTargets) {
82 val targetElement = target.lookup(object2DefinedElement)
83 translateLink(interpretation,sourceElement,targetElement)
84 }
85 } else {
86 val target = source.eGet(reference) as EObject
87 val targetElement = target.lookup(object2DefinedElement)
88 if(target !== null) {
89 translateLink(interpretation,sourceElement,targetElement)
90 }
91 }
92 }
93 // Transforming the relations
94 for(attribute : source.eClass.EAllAttributes) {
95 val type = ecore2Logic.relationOfAttribute(ecore2LogicTrace,attribute)
96 val interpretation = type.lookup(partialInterpretationTrace.relation2Interpretation)
97 val sourceElement = source.lookup(object2DefinedElement)
98 if(attribute.isMany) {
99 val listOfTargets = source.eGet(attribute) as List<? extends EObject>
100 for(target : listOfTargets) {
101 translateLink(interpretation,sourceElement,translateValue(target,ecore2LogicTrace,partialInterpretationTrace))
102 }
103 } else {
104 val target = source.eGet(attribute)
105 if(target !== null) {
106 translateLink(interpretation,sourceElement,translateValue(target,ecore2LogicTrace,partialInterpretationTrace))
107 }
108 }
109 }
110 }
111
112 return partialInterpretation
113 }
114
115 protected def translateLink(PartialRelationInterpretation interpretation, DefinedElement source, DefinedElement target) {
116 interpretation.relationlinks += createBinaryElementRelationLink => [it.param1 = source it.param2 = target]
117 }
118
119 dispatch protected def translateValue(Enumerator value, Ecore2Logic_Trace ecore2LogicTrace, Problem2PartialInterpretationTrace partialInterpretationTrace) {
120 val term = this.ecore2Logic.Literal(ecore2LogicTrace,value)
121 if(term instanceof DefinedElement) {
122 return term
123 }
124 else throw new AssertionError('''term should be a defined element?''')
125 }
126
127 dispatch protected def translateValue(Object value, Ecore2Logic_Trace ecore2LogicTrace, Problem2PartialInterpretationTrace partialInterpretationTrace) {
128 throw new UnsupportedOperationException('''Mapping of «value.class.simpleName» in partial models is currently not supported!''')
129 }
130} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend
new file mode 100644
index 00000000..39d8a365
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend
@@ -0,0 +1,146 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic
2
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.SymbolicDeclaration
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition
9import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
10import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
11import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
12import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation
13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation
14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RelationLink
15import java.util.ArrayList
16import java.util.HashMap
17import java.util.HashSet
18import java.util.Map
19import java.util.Set
20import org.eclipse.xtend.lib.annotations.Data
21
22import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
23
24@Data class PartialInterpretation2Logic_Trace {
25 Map<TypeDeclaration, TypeDefinition> definedPart = new HashMap
26 Map<TypeDeclaration, TypeDeclaration> undefinedPart = new HashMap
27 Set<Type> originalTypes = new HashSet
28 Set<TypeDeclaration> splittedTypes = new HashSet
29}
30
31class PartialInterpretation2Logic {
32 val extension LogiclanguageFactory factory = LogiclanguageFactory.eINSTANCE
33 val extension LogicProblemBuilder builder = new LogicProblemBuilder
34
35 def transformPartialIntepretation2Logic(LogicProblem p, PartialInterpretation i) {
36 val trace = new PartialInterpretation2Logic_Trace()
37 trace.originalTypes.addAll(p.types)
38 if(! i.newElements.empty) {
39
40 // Elements adding
41 addExistingElementToProblem(p,i)
42
43 // Types
44 for(partialTypeDeclaration : i.partialtypeinterpratation) {
45 splitTypeIntoTwo(p,partialTypeDeclaration,trace)
46 }
47 connectSplittings(p,trace)
48
49 // Relations
50 for(partialRelationInterpretation : i.partialrelationinterpretation) {
51 relationLinksToAssertion(p,partialRelationInterpretation,trace)
52 }
53 }
54 }
55
56 private def addExistingElementToProblem(LogicProblem p, PartialInterpretation i) {
57 val newElements = new ArrayList(i.newElements)
58 var newElementIndex = 1
59 for(newElement : newElements) {
60 newElement.name = '''DefinedElement «newElementIndex++»'''
61 p.elements += newElement
62 }
63 }
64
65 private def splitTypeIntoTwo(LogicProblem p, PartialTypeInterpratation partialTypeDeclaration,PartialInterpretation2Logic_Trace trace) {
66 if(!partialTypeDeclaration.elements.empty) {
67 val declaration = partialTypeDeclaration.interpretationOf
68
69 val definedPart = createTypeDefinition => [
70 it.name = '''DefinedPartOf «declaration.name»'''
71 it.elements += partialTypeDeclaration.elements
72 it.isAbstract = declaration.isIsAbstract
73 ]
74 val undefinedPart = createTypeDeclaration => [
75 it.name = '''UndefinedPartOf «declaration.name»'''
76 it.isAbstract = declaration.isIsAbstract
77 ]
78 declaration.isAbstract = true
79
80 trace.definedPart.put(declaration,definedPart)
81 trace.undefinedPart.put(declaration,undefinedPart)
82 trace.splittedTypes.add(declaration)
83 p.add(definedPart)
84 p.add(undefinedPart)
85 Supertype(definedPart,declaration)
86 Supertype(undefinedPart,declaration)
87 }
88 }
89
90 private def connectSplittings(LogicProblem p,PartialInterpretation2Logic_Trace trace) {
91 val originalTypes = p.types.filter[originalType(trace)].toList
92 for(type : originalTypes) {
93 val superTypes = new ArrayList(type.supertypes.filter[originalType(trace)].toList)
94 for(supertype : superTypes) {
95 if(type.isSplitted(trace)) {
96 if(supertype.isSplitted(trace)) {
97 Supertype((type as TypeDeclaration).lookup(trace.definedPart), (supertype as TypeDeclaration).lookup(trace.definedPart))
98 Supertype((type as TypeDeclaration).lookup(trace.undefinedPart), (supertype as TypeDeclaration).lookup(trace.undefinedPart))
99 } else {
100 // Do nothing
101 }
102 } else {
103 if(supertype.isSplitted(trace)) {
104 Supertype(type, (supertype as TypeDeclaration).lookup(trace.undefinedPart))
105 } else if(supertype instanceof TypeDefinition) {
106 // Do nothing
107 }
108 }
109 }
110 }
111 }
112
113 private def originalType(Type type,PartialInterpretation2Logic_Trace trace) {
114 return trace.originalTypes.contains(type)
115 }
116 private def isSplitted(Type t, PartialInterpretation2Logic_Trace trace) {
117 trace.splittedTypes.contains(t)
118 }
119
120 private def relationLinksToAssertion(LogicProblem p, PartialRelationInterpretation r,PartialInterpretation2Logic_Trace trace) {
121 val relation = r.interpretationOf
122 val links = r.relationlinks
123 if(links.size == 0) {
124 return
125 } else {
126 val term = if(links.size == 1) {
127 createLink(links.head,relation)
128 } else {
129 links.map[link|createLink(link,relation)].And
130 }
131 val assertion = Assertion('''PartialInterpretation «r.interpretationOf.name»''',term)
132 p.add(assertion)
133 }
134
135 }
136
137 def private createLink(RelationLink link, SymbolicDeclaration relationDeclaration) {
138 if(link instanceof BinaryElementRelationLink) {
139 return createSymbolicValue=>[
140 it.symbolicReference=relationDeclaration
141 it.parameterSubstitutions += createSymbolicValue => [link.param1]
142 it.parameterSubstitutions += createSymbolicValue => [link.param2]
143 ]
144 } else throw new UnsupportedOperationException
145 }
146} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.classpath b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.classpath
new file mode 100644
index 00000000..75ccaa90
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.classpath
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="src" path="ecore-gen"/>
4 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
5 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
6 <classpathentry kind="src" path="src"/>
7 <classpathentry kind="src" path="xtend-gen"/>
8 <classpathentry kind="output" path="bin"/>
9</classpath>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.gitignore b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.gitignore
new file mode 100644
index 00000000..b33f6aff
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.gitignore
@@ -0,0 +1,2 @@
1/bin/
2/xtend-gen/
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.project b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.project
new file mode 100644
index 00000000..b8b85892
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.project
@@ -0,0 +1,34 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.jdt.core.javabuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.pde.ManifestBuilder</name>
20 <arguments>
21 </arguments>
22 </buildCommand>
23 <buildCommand>
24 <name>org.eclipse.pde.SchemaBuilder</name>
25 <arguments>
26 </arguments>
27 </buildCommand>
28 </buildSpec>
29 <natures>
30 <nature>org.eclipse.pde.PluginNature</nature>
31 <nature>org.eclipse.jdt.core.javanature</nature>
32 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
33 </natures>
34</projectDescription>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.settings/org.eclipse.jdt.core.prefs b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..295926d9
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
1eclipse.preferences.version=1
2org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4org.eclipse.jdt.core.compiler.compliance=1.8
5org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/META-INF/MANIFEST.MF b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..ea971e17
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: %pluginName
4Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;singleton:=true
5Bundle-Version: 1.0.0.qualifier
6Bundle-ClassPath: .
7Bundle-Vendor: %providerName
8Bundle-Localization: plugin
9Bundle-RequiredExecutionEnvironment: JavaSE-1.8
10Export-Package: hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage,
11 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood,
12 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation,
13 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl,
14 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.util,
15 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder,
16 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation
17Require-Bundle: org.eclipse.core.runtime,
18 org.eclipse.emf.ecore;visibility:=reexport,
19 hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0";visibility:=reexport,
20 com.google.guava,
21 org.eclipse.xtext.xbase.lib,
22 org.eclipse.xtend.lib,
23 org.eclipse.xtend.lib.macro,
24 org.eclipse.viatra.query.runtime;bundle-version="1.5.0",
25 org.eclipse.viatra.dse;bundle-version="0.15.0"
26Bundle-ActivationPolicy: lazy
27
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/build.properties b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/build.properties
new file mode 100644
index 00000000..72399047
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/build.properties
@@ -0,0 +1,10 @@
1#
2
3bin.includes = .,\
4 model/,\
5 META-INF/,\
6 plugin.xml,\
7 plugin.properties
8jars.compile.order = .
9source.. = ecore-gen/
10output.. = bin/
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/BinaryElementRelationLink.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/BinaryElementRelationLink.java
new file mode 100644
index 00000000..bd88f469
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/BinaryElementRelationLink.java
@@ -0,0 +1,77 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Binary Element Relation Link</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink#getParam1 <em>Param1</em>}</li>
17 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink#getParam2 <em>Param2</em>}</li>
18 * </ul>
19 *
20 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getBinaryElementRelationLink()
21 * @model
22 * @generated
23 */
24public interface BinaryElementRelationLink extends RelationLink {
25 /**
26 * Returns the value of the '<em><b>Param1</b></em>' reference.
27 * <!-- begin-user-doc -->
28 * <p>
29 * If the meaning of the '<em>Param1</em>' reference isn't clear,
30 * there really should be more of a description here...
31 * </p>
32 * <!-- end-user-doc -->
33 * @return the value of the '<em>Param1</em>' reference.
34 * @see #setParam1(DefinedElement)
35 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getBinaryElementRelationLink_Param1()
36 * @model required="true"
37 * @generated
38 */
39 DefinedElement getParam1();
40
41 /**
42 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink#getParam1 <em>Param1</em>}' reference.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @param value the new value of the '<em>Param1</em>' reference.
46 * @see #getParam1()
47 * @generated
48 */
49 void setParam1(DefinedElement value);
50
51 /**
52 * Returns the value of the '<em><b>Param2</b></em>' reference.
53 * <!-- begin-user-doc -->
54 * <p>
55 * If the meaning of the '<em>Param2</em>' reference isn't clear,
56 * there really should be more of a description here...
57 * </p>
58 * <!-- end-user-doc -->
59 * @return the value of the '<em>Param2</em>' reference.
60 * @see #setParam2(DefinedElement)
61 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getBinaryElementRelationLink_Param2()
62 * @model required="true"
63 * @generated
64 */
65 DefinedElement getParam2();
66
67 /**
68 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink#getParam2 <em>Param2</em>}' reference.
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @param value the new value of the '<em>Param2</em>' reference.
72 * @see #getParam2()
73 * @generated
74 */
75 void setParam2(DefinedElement value);
76
77} // BinaryElementRelationLink
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/NaryRelationLink.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/NaryRelationLink.java
new file mode 100644
index 00000000..b4981259
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/NaryRelationLink.java
@@ -0,0 +1,40 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
4
5import org.eclipse.emf.common.util.EList;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Nary Relation Link</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLink#getElements <em>Elements</em>}</li>
17 * </ul>
18 *
19 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getNaryRelationLink()
20 * @model
21 * @generated
22 */
23public interface NaryRelationLink extends RelationLink {
24 /**
25 * Returns the value of the '<em><b>Elements</b></em>' containment reference list.
26 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLinkElement}.
27 * <!-- begin-user-doc -->
28 * <p>
29 * If the meaning of the '<em>Elements</em>' containment reference list isn't clear,
30 * there really should be more of a description here...
31 * </p>
32 * <!-- end-user-doc -->
33 * @return the value of the '<em>Elements</em>' containment reference list.
34 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getNaryRelationLink_Elements()
35 * @model containment="true"
36 * @generated
37 */
38 EList<NaryRelationLinkElement> getElements();
39
40} // NaryRelationLink
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/NaryRelationLinkElement.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/NaryRelationLinkElement.java
new file mode 100644
index 00000000..4b70390f
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/NaryRelationLinkElement.java
@@ -0,0 +1,50 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Nary Relation Link Element</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLinkElement#getIndex <em>Index</em>}</li>
17 * </ul>
18 *
19 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getNaryRelationLinkElement()
20 * @model
21 * @generated
22 */
23public interface NaryRelationLinkElement extends EObject {
24 /**
25 * Returns the value of the '<em><b>Index</b></em>' attribute.
26 * <!-- begin-user-doc -->
27 * <p>
28 * If the meaning of the '<em>Index</em>' attribute isn't clear,
29 * there really should be more of a description here...
30 * </p>
31 * <!-- end-user-doc -->
32 * @return the value of the '<em>Index</em>' attribute.
33 * @see #setIndex(int)
34 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getNaryRelationLinkElement_Index()
35 * @model
36 * @generated
37 */
38 int getIndex();
39
40 /**
41 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLinkElement#getIndex <em>Index</em>}' attribute.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @param value the new value of the '<em>Index</em>' attribute.
45 * @see #getIndex()
46 * @generated
47 */
48 void setIndex(int value);
49
50} // NaryRelationLinkElement
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialConstantInterpretation.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialConstantInterpretation.java
new file mode 100644
index 00000000..29f2cb21
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialConstantInterpretation.java
@@ -0,0 +1,52 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Partial Constant Interpretation</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation#getInterpretationOf <em>Interpretation Of</em>}</li>
19 * </ul>
20 *
21 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialConstantInterpretation()
22 * @model
23 * @generated
24 */
25public interface PartialConstantInterpretation extends EObject {
26 /**
27 * Returns the value of the '<em><b>Interpretation Of</b></em>' reference.
28 * <!-- begin-user-doc -->
29 * <p>
30 * If the meaning of the '<em>Interpretation Of</em>' reference isn't clear,
31 * there really should be more of a description here...
32 * </p>
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>Interpretation Of</em>' reference.
35 * @see #setInterpretationOf(ConstantDeclaration)
36 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialConstantInterpretation_InterpretationOf()
37 * @model required="true"
38 * @generated
39 */
40 ConstantDeclaration getInterpretationOf();
41
42 /**
43 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation#getInterpretationOf <em>Interpretation Of</em>}' reference.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @param value the new value of the '<em>Interpretation Of</em>' reference.
47 * @see #getInterpretationOf()
48 * @generated
49 */
50 void setInterpretationOf(ConstantDeclaration value);
51
52} // PartialConstantInterpretation
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialFunctionInterpretation.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialFunctionInterpretation.java
new file mode 100644
index 00000000..26ce2480
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialFunctionInterpretation.java
@@ -0,0 +1,52 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDeclaration;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Partial Function Interpretation</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation#getInterpretationOf <em>Interpretation Of</em>}</li>
19 * </ul>
20 *
21 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialFunctionInterpretation()
22 * @model
23 * @generated
24 */
25public interface PartialFunctionInterpretation extends EObject {
26 /**
27 * Returns the value of the '<em><b>Interpretation Of</b></em>' reference.
28 * <!-- begin-user-doc -->
29 * <p>
30 * If the meaning of the '<em>Interpretation Of</em>' reference isn't clear,
31 * there really should be more of a description here...
32 * </p>
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>Interpretation Of</em>' reference.
35 * @see #setInterpretationOf(FunctionDeclaration)
36 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialFunctionInterpretation_InterpretationOf()
37 * @model required="true"
38 * @generated
39 */
40 FunctionDeclaration getInterpretationOf();
41
42 /**
43 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation#getInterpretationOf <em>Interpretation Of</em>}' reference.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @param value the new value of the '<em>Interpretation Of</em>' reference.
47 * @see #getInterpretationOf()
48 * @generated
49 */
50 void setInterpretationOf(FunctionDeclaration value);
51
52} // PartialFunctionInterpretation
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java
new file mode 100644
index 00000000..46c85cc8
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java
@@ -0,0 +1,251 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement;
6
7import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem;
8
9import org.eclipse.emf.common.util.EList;
10
11import org.eclipse.emf.ecore.EObject;
12
13/**
14 * <!-- begin-user-doc -->
15 * A representation of the model object '<em><b>Partial Interpretation</b></em>'.
16 * <!-- end-user-doc -->
17 *
18 * <p>
19 * The following features are supported:
20 * </p>
21 * <ul>
22 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getProblem <em>Problem</em>}</li>
23 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getPartialconstantinterpretation <em>Partialconstantinterpretation</em>}</li>
24 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getPartialrelationinterpretation <em>Partialrelationinterpretation</em>}</li>
25 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getPartialfunctioninterpretation <em>Partialfunctioninterpretation</em>}</li>
26 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getNewElements <em>New Elements</em>}</li>
27 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getPartialtypeinterpratation <em>Partialtypeinterpratation</em>}</li>
28 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getMinNewElements <em>Min New Elements</em>}</li>
29 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getMaxNewElements <em>Max New Elements</em>}</li>
30 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getOpenWorldElementPrototype <em>Open World Element Prototype</em>}</li>
31 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getProblemConainer <em>Problem Conainer</em>}</li>
32 * </ul>
33 *
34 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialInterpretation()
35 * @model
36 * @generated
37 */
38public interface PartialInterpretation extends EObject {
39 /**
40 * Returns the value of the '<em><b>Problem</b></em>' reference.
41 * <!-- begin-user-doc -->
42 * <p>
43 * If the meaning of the '<em>Problem</em>' reference isn't clear,
44 * there really should be more of a description here...
45 * </p>
46 * <!-- end-user-doc -->
47 * @return the value of the '<em>Problem</em>' reference.
48 * @see #setProblem(LogicProblem)
49 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialInterpretation_Problem()
50 * @model required="true"
51 * @generated
52 */
53 LogicProblem getProblem();
54
55 /**
56 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getProblem <em>Problem</em>}' reference.
57 * <!-- begin-user-doc -->
58 * <!-- end-user-doc -->
59 * @param value the new value of the '<em>Problem</em>' reference.
60 * @see #getProblem()
61 * @generated
62 */
63 void setProblem(LogicProblem value);
64
65 /**
66 * Returns the value of the '<em><b>Partialconstantinterpretation</b></em>' containment reference list.
67 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation}.
68 * <!-- begin-user-doc -->
69 * <p>
70 * If the meaning of the '<em>Partialconstantinterpretation</em>' containment reference list isn't clear,
71 * there really should be more of a description here...
72 * </p>
73 * <!-- end-user-doc -->
74 * @return the value of the '<em>Partialconstantinterpretation</em>' containment reference list.
75 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialInterpretation_Partialconstantinterpretation()
76 * @model containment="true"
77 * @generated
78 */
79 EList<PartialConstantInterpretation> getPartialconstantinterpretation();
80
81 /**
82 * Returns the value of the '<em><b>Partialrelationinterpretation</b></em>' containment reference list.
83 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation}.
84 * <!-- begin-user-doc -->
85 * <p>
86 * If the meaning of the '<em>Partialrelationinterpretation</em>' containment reference list isn't clear,
87 * there really should be more of a description here...
88 * </p>
89 * <!-- end-user-doc -->
90 * @return the value of the '<em>Partialrelationinterpretation</em>' containment reference list.
91 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialInterpretation_Partialrelationinterpretation()
92 * @model containment="true"
93 * @generated
94 */
95 EList<PartialRelationInterpretation> getPartialrelationinterpretation();
96
97 /**
98 * Returns the value of the '<em><b>Partialfunctioninterpretation</b></em>' containment reference list.
99 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation}.
100 * <!-- begin-user-doc -->
101 * <p>
102 * If the meaning of the '<em>Partialfunctioninterpretation</em>' containment reference list isn't clear,
103 * there really should be more of a description here...
104 * </p>
105 * <!-- end-user-doc -->
106 * @return the value of the '<em>Partialfunctioninterpretation</em>' containment reference list.
107 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialInterpretation_Partialfunctioninterpretation()
108 * @model containment="true"
109 * @generated
110 */
111 EList<PartialFunctionInterpretation> getPartialfunctioninterpretation();
112
113 /**
114 * Returns the value of the '<em><b>New Elements</b></em>' containment reference list.
115 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement}.
116 * <!-- begin-user-doc -->
117 * <p>
118 * If the meaning of the '<em>New Elements</em>' containment reference list isn't clear,
119 * there really should be more of a description here...
120 * </p>
121 * <!-- end-user-doc -->
122 * @return the value of the '<em>New Elements</em>' containment reference list.
123 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialInterpretation_NewElements()
124 * @model containment="true"
125 * @generated
126 */
127 EList<DefinedElement> getNewElements();
128
129 /**
130 * Returns the value of the '<em><b>Partialtypeinterpratation</b></em>' containment reference list.
131 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation}.
132 * <!-- begin-user-doc -->
133 * <p>
134 * If the meaning of the '<em>Partialtypeinterpratation</em>' containment reference list isn't clear,
135 * there really should be more of a description here...
136 * </p>
137 * <!-- end-user-doc -->
138 * @return the value of the '<em>Partialtypeinterpratation</em>' containment reference list.
139 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialInterpretation_Partialtypeinterpratation()
140 * @model containment="true"
141 * @generated
142 */
143 EList<PartialTypeInterpratation> getPartialtypeinterpratation();
144
145 /**
146 * Returns the value of the '<em><b>Min New Elements</b></em>' attribute.
147 * The default value is <code>"0"</code>.
148 * <!-- begin-user-doc -->
149 * <p>
150 * If the meaning of the '<em>Min New Elements</em>' attribute isn't clear,
151 * there really should be more of a description here...
152 * </p>
153 * <!-- end-user-doc -->
154 * @return the value of the '<em>Min New Elements</em>' attribute.
155 * @see #setMinNewElements(int)
156 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialInterpretation_MinNewElements()
157 * @model default="0" id="true" required="true"
158 * @generated
159 */
160 int getMinNewElements();
161
162 /**
163 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getMinNewElements <em>Min New Elements</em>}' attribute.
164 * <!-- begin-user-doc -->
165 * <!-- end-user-doc -->
166 * @param value the new value of the '<em>Min New Elements</em>' attribute.
167 * @see #getMinNewElements()
168 * @generated
169 */
170 void setMinNewElements(int value);
171
172 /**
173 * Returns the value of the '<em><b>Max New Elements</b></em>' attribute.
174 * The default value is <code>"0"</code>.
175 * <!-- begin-user-doc -->
176 * <p>
177 * If the meaning of the '<em>Max New Elements</em>' attribute isn't clear,
178 * there really should be more of a description here...
179 * </p>
180 * <!-- end-user-doc -->
181 * @return the value of the '<em>Max New Elements</em>' attribute.
182 * @see #setMaxNewElements(int)
183 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialInterpretation_MaxNewElements()
184 * @model default="0" required="true"
185 * @generated
186 */
187 int getMaxNewElements();
188
189 /**
190 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getMaxNewElements <em>Max New Elements</em>}' attribute.
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @param value the new value of the '<em>Max New Elements</em>' attribute.
194 * @see #getMaxNewElements()
195 * @generated
196 */
197 void setMaxNewElements(int value);
198
199 /**
200 * Returns the value of the '<em><b>Open World Element Prototype</b></em>' containment reference.
201 * <!-- begin-user-doc -->
202 * <p>
203 * If the meaning of the '<em>Open World Element Prototype</em>' containment reference isn't clear,
204 * there really should be more of a description here...
205 * </p>
206 * <!-- end-user-doc -->
207 * @return the value of the '<em>Open World Element Prototype</em>' containment reference.
208 * @see #setOpenWorldElementPrototype(DefinedElement)
209 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialInterpretation_OpenWorldElementPrototype()
210 * @model containment="true" required="true"
211 * @generated
212 */
213 DefinedElement getOpenWorldElementPrototype();
214
215 /**
216 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getOpenWorldElementPrototype <em>Open World Element Prototype</em>}' containment reference.
217 * <!-- begin-user-doc -->
218 * <!-- end-user-doc -->
219 * @param value the new value of the '<em>Open World Element Prototype</em>' containment reference.
220 * @see #getOpenWorldElementPrototype()
221 * @generated
222 */
223 void setOpenWorldElementPrototype(DefinedElement value);
224
225 /**
226 * Returns the value of the '<em><b>Problem Conainer</b></em>' containment reference.
227 * <!-- begin-user-doc -->
228 * <p>
229 * If the meaning of the '<em>Problem Conainer</em>' containment reference isn't clear,
230 * there really should be more of a description here...
231 * </p>
232 * <!-- end-user-doc -->
233 * @return the value of the '<em>Problem Conainer</em>' containment reference.
234 * @see #setProblemConainer(LogicProblem)
235 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialInterpretation_ProblemConainer()
236 * @model containment="true"
237 * @generated
238 */
239 LogicProblem getProblemConainer();
240
241 /**
242 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getProblemConainer <em>Problem Conainer</em>}' containment reference.
243 * <!-- begin-user-doc -->
244 * <!-- end-user-doc -->
245 * @param value the new value of the '<em>Problem Conainer</em>' containment reference.
246 * @see #getProblemConainer()
247 * @generated
248 */
249 void setProblemConainer(LogicProblem value);
250
251} // PartialInterpretation
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialRelationInterpretation.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialRelationInterpretation.java
new file mode 100644
index 00000000..e1fa092f
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialRelationInterpretation.java
@@ -0,0 +1,126 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration;
6
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeReference;
8import org.eclipse.emf.common.util.EList;
9
10import org.eclipse.emf.ecore.EObject;
11
12/**
13 * <!-- begin-user-doc -->
14 * A representation of the model object '<em><b>Partial Relation Interpretation</b></em>'.
15 * <!-- end-user-doc -->
16 *
17 * <p>
18 * The following features are supported:
19 * </p>
20 * <ul>
21 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getInterpretationOf <em>Interpretation Of</em>}</li>
22 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getRelationlinks <em>Relationlinks</em>}</li>
23 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getParam1 <em>Param1</em>}</li>
24 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getParam2 <em>Param2</em>}</li>
25 * </ul>
26 *
27 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialRelationInterpretation()
28 * @model
29 * @generated
30 */
31public interface PartialRelationInterpretation extends EObject {
32 /**
33 * Returns the value of the '<em><b>Interpretation Of</b></em>' reference.
34 * <!-- begin-user-doc -->
35 * <p>
36 * If the meaning of the '<em>Interpretation Of</em>' reference isn't clear,
37 * there really should be more of a description here...
38 * </p>
39 * <!-- end-user-doc -->
40 * @return the value of the '<em>Interpretation Of</em>' reference.
41 * @see #setInterpretationOf(RelationDeclaration)
42 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialRelationInterpretation_InterpretationOf()
43 * @model required="true"
44 * @generated
45 */
46 RelationDeclaration getInterpretationOf();
47
48 /**
49 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getInterpretationOf <em>Interpretation Of</em>}' reference.
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @param value the new value of the '<em>Interpretation Of</em>' reference.
53 * @see #getInterpretationOf()
54 * @generated
55 */
56 void setInterpretationOf(RelationDeclaration value);
57
58 /**
59 * Returns the value of the '<em><b>Relationlinks</b></em>' containment reference list.
60 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RelationLink}.
61 * <!-- begin-user-doc -->
62 * <p>
63 * If the meaning of the '<em>Relationlinks</em>' containment reference list isn't clear,
64 * there really should be more of a description here...
65 * </p>
66 * <!-- end-user-doc -->
67 * @return the value of the '<em>Relationlinks</em>' containment reference list.
68 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialRelationInterpretation_Relationlinks()
69 * @model containment="true"
70 * @generated
71 */
72 EList<RelationLink> getRelationlinks();
73
74 /**
75 * Returns the value of the '<em><b>Param1</b></em>' reference.
76 * <!-- begin-user-doc -->
77 * <p>
78 * If the meaning of the '<em>Param1</em>' reference isn't clear,
79 * there really should be more of a description here...
80 * </p>
81 * <!-- end-user-doc -->
82 * @return the value of the '<em>Param1</em>' reference.
83 * @see #setParam1(TypeReference)
84 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialRelationInterpretation_Param1()
85 * @model
86 * @generated
87 */
88 TypeReference getParam1();
89
90 /**
91 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getParam1 <em>Param1</em>}' reference.
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @param value the new value of the '<em>Param1</em>' reference.
95 * @see #getParam1()
96 * @generated
97 */
98 void setParam1(TypeReference value);
99
100 /**
101 * Returns the value of the '<em><b>Param2</b></em>' reference.
102 * <!-- begin-user-doc -->
103 * <p>
104 * If the meaning of the '<em>Param2</em>' reference isn't clear,
105 * there really should be more of a description here...
106 * </p>
107 * <!-- end-user-doc -->
108 * @return the value of the '<em>Param2</em>' reference.
109 * @see #setParam2(TypeReference)
110 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialRelationInterpretation_Param2()
111 * @model
112 * @generated
113 */
114 TypeReference getParam2();
115
116 /**
117 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getParam2 <em>Param2</em>}' reference.
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @param value the new value of the '<em>Param2</em>' reference.
121 * @see #getParam2()
122 * @generated
123 */
124 void setParam2(TypeReference value);
125
126} // PartialRelationInterpretation
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialTypeInterpratation.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialTypeInterpratation.java
new file mode 100644
index 00000000..ff313b42
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialTypeInterpratation.java
@@ -0,0 +1,88 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement;
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration;
7
8import org.eclipse.emf.common.util.EList;
9import org.eclipse.emf.ecore.EObject;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the model object '<em><b>Partial Type Interpratation</b></em>'.
14 * <!-- end-user-doc -->
15 *
16 * <p>
17 * The following features are supported:
18 * </p>
19 * <ul>
20 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation#getInterpretationOf <em>Interpretation Of</em>}</li>
21 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation#getElements <em>Elements</em>}</li>
22 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation#getSupertypeInterpretation <em>Supertype Interpretation</em>}</li>
23 * </ul>
24 *
25 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialTypeInterpratation()
26 * @model
27 * @generated
28 */
29public interface PartialTypeInterpratation extends EObject {
30 /**
31 * Returns the value of the '<em><b>Interpretation Of</b></em>' reference.
32 * <!-- begin-user-doc -->
33 * <p>
34 * If the meaning of the '<em>Interpretation Of</em>' reference isn't clear,
35 * there really should be more of a description here...
36 * </p>
37 * <!-- end-user-doc -->
38 * @return the value of the '<em>Interpretation Of</em>' reference.
39 * @see #setInterpretationOf(TypeDeclaration)
40 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialTypeInterpratation_InterpretationOf()
41 * @model required="true"
42 * @generated
43 */
44 TypeDeclaration getInterpretationOf();
45
46 /**
47 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation#getInterpretationOf <em>Interpretation Of</em>}' reference.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @param value the new value of the '<em>Interpretation Of</em>' reference.
51 * @see #getInterpretationOf()
52 * @generated
53 */
54 void setInterpretationOf(TypeDeclaration value);
55
56 /**
57 * Returns the value of the '<em><b>Elements</b></em>' reference list.
58 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement}.
59 * <!-- begin-user-doc -->
60 * <p>
61 * If the meaning of the '<em>Elements</em>' reference isn't clear,
62 * there really should be more of a description here...
63 * </p>
64 * <!-- end-user-doc -->
65 * @return the value of the '<em>Elements</em>' reference list.
66 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialTypeInterpratation_Elements()
67 * @model
68 * @generated
69 */
70 EList<DefinedElement> getElements();
71
72 /**
73 * Returns the value of the '<em><b>Supertype Interpretation</b></em>' reference list.
74 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation}.
75 * <!-- begin-user-doc -->
76 * <p>
77 * If the meaning of the '<em>Supertype Interpretation</em>' reference list isn't clear,
78 * there really should be more of a description here...
79 * </p>
80 * <!-- end-user-doc -->
81 * @return the value of the '<em>Supertype Interpretation</em>' reference list.
82 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialTypeInterpratation_SupertypeInterpretation()
83 * @model
84 * @generated
85 */
86 EList<PartialTypeInterpratation> getSupertypeInterpretation();
87
88} // PartialTypeInterpratation
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialinterpretationFactory.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialinterpretationFactory.java
new file mode 100644
index 00000000..406e2f02
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialinterpretationFactory.java
@@ -0,0 +1,114 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
4
5import org.eclipse.emf.ecore.EFactory;
6
7/**
8 * <!-- begin-user-doc -->
9 * The <b>Factory</b> for the model.
10 * It provides a create method for each non-abstract class of the model.
11 * <!-- end-user-doc -->
12 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage
13 * @generated
14 */
15public interface PartialinterpretationFactory extends EFactory {
16 /**
17 * The singleton instance of the factory.
18 * <!-- begin-user-doc -->
19 * <!-- end-user-doc -->
20 * @generated
21 */
22 PartialinterpretationFactory eINSTANCE = hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationFactoryImpl.init();
23
24 /**
25 * Returns a new object of class '<em>Partial Interpretation</em>'.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return a new object of class '<em>Partial Interpretation</em>'.
29 * @generated
30 */
31 PartialInterpretation createPartialInterpretation();
32
33 /**
34 * Returns a new object of class '<em>Partial Constant Interpretation</em>'.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @return a new object of class '<em>Partial Constant Interpretation</em>'.
38 * @generated
39 */
40 PartialConstantInterpretation createPartialConstantInterpretation();
41
42 /**
43 * Returns a new object of class '<em>Partial Relation Interpretation</em>'.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @return a new object of class '<em>Partial Relation Interpretation</em>'.
47 * @generated
48 */
49 PartialRelationInterpretation createPartialRelationInterpretation();
50
51 /**
52 * Returns a new object of class '<em>Partial Function Interpretation</em>'.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @return a new object of class '<em>Partial Function Interpretation</em>'.
56 * @generated
57 */
58 PartialFunctionInterpretation createPartialFunctionInterpretation();
59
60 /**
61 * Returns a new object of class '<em>Partial Type Interpratation</em>'.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @return a new object of class '<em>Partial Type Interpratation</em>'.
65 * @generated
66 */
67 PartialTypeInterpratation createPartialTypeInterpratation();
68
69 /**
70 * Returns a new object of class '<em>Unary Element Relation Link</em>'.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @return a new object of class '<em>Unary Element Relation Link</em>'.
74 * @generated
75 */
76 UnaryElementRelationLink createUnaryElementRelationLink();
77
78 /**
79 * Returns a new object of class '<em>Binary Element Relation Link</em>'.
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @return a new object of class '<em>Binary Element Relation Link</em>'.
83 * @generated
84 */
85 BinaryElementRelationLink createBinaryElementRelationLink();
86
87 /**
88 * Returns a new object of class '<em>Nary Relation Link</em>'.
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @return a new object of class '<em>Nary Relation Link</em>'.
92 * @generated
93 */
94 NaryRelationLink createNaryRelationLink();
95
96 /**
97 * Returns a new object of class '<em>Nary Relation Link Element</em>'.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @return a new object of class '<em>Nary Relation Link Element</em>'.
101 * @generated
102 */
103 NaryRelationLinkElement createNaryRelationLinkElement();
104
105 /**
106 * Returns the package supported by this factory.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @return the package supported by this factory.
110 * @generated
111 */
112 PartialinterpretationPackage getPartialinterpretationPackage();
113
114} //PartialinterpretationFactory
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialinterpretationPackage.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialinterpretationPackage.java
new file mode 100644
index 00000000..573500dd
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialinterpretationPackage.java
@@ -0,0 +1,1237 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
4
5import org.eclipse.emf.ecore.EAttribute;
6import org.eclipse.emf.ecore.EClass;
7import org.eclipse.emf.ecore.EPackage;
8import org.eclipse.emf.ecore.EReference;
9
10/**
11 * <!-- begin-user-doc -->
12 * The <b>Package</b> for the model.
13 * It contains accessors for the meta objects to represent
14 * <ul>
15 * <li>each class,</li>
16 * <li>each feature of each class,</li>
17 * <li>each operation of each class,</li>
18 * <li>each enum,</li>
19 * <li>and each data type</li>
20 * </ul>
21 * <!-- end-user-doc -->
22 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationFactory
23 * @model kind="package"
24 * @generated
25 */
26public interface PartialinterpretationPackage extends EPackage {
27 /**
28 * The package name.
29 * <!-- begin-user-doc -->
30 * <!-- end-user-doc -->
31 * @generated
32 */
33 String eNAME = "partialinterpretation";
34
35 /**
36 * The package namespace URI.
37 * <!-- begin-user-doc -->
38 * <!-- end-user-doc -->
39 * @generated
40 */
41 String eNS_URI = "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage";
42
43 /**
44 * The package namespace name.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @generated
48 */
49 String eNS_PREFIX = "partialinterpretation";
50
51 /**
52 * The singleton instance of the package.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @generated
56 */
57 PartialinterpretationPackage eINSTANCE = hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl.init();
58
59 /**
60 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl <em>Partial Interpretation</em>}' class.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl
64 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getPartialInterpretation()
65 * @generated
66 */
67 int PARTIAL_INTERPRETATION = 0;
68
69 /**
70 * The feature id for the '<em><b>Problem</b></em>' reference.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 * @ordered
75 */
76 int PARTIAL_INTERPRETATION__PROBLEM = 0;
77
78 /**
79 * The feature id for the '<em><b>Partialconstantinterpretation</b></em>' containment reference list.
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @generated
83 * @ordered
84 */
85 int PARTIAL_INTERPRETATION__PARTIALCONSTANTINTERPRETATION = 1;
86
87 /**
88 * The feature id for the '<em><b>Partialrelationinterpretation</b></em>' containment reference list.
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @generated
92 * @ordered
93 */
94 int PARTIAL_INTERPRETATION__PARTIALRELATIONINTERPRETATION = 2;
95
96 /**
97 * The feature id for the '<em><b>Partialfunctioninterpretation</b></em>' containment reference list.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @generated
101 * @ordered
102 */
103 int PARTIAL_INTERPRETATION__PARTIALFUNCTIONINTERPRETATION = 3;
104
105 /**
106 * The feature id for the '<em><b>New Elements</b></em>' containment reference list.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @generated
110 * @ordered
111 */
112 int PARTIAL_INTERPRETATION__NEW_ELEMENTS = 4;
113
114 /**
115 * The feature id for the '<em><b>Partialtypeinterpratation</b></em>' containment reference list.
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @generated
119 * @ordered
120 */
121 int PARTIAL_INTERPRETATION__PARTIALTYPEINTERPRATATION = 5;
122
123 /**
124 * The feature id for the '<em><b>Min New Elements</b></em>' attribute.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @generated
128 * @ordered
129 */
130 int PARTIAL_INTERPRETATION__MIN_NEW_ELEMENTS = 6;
131
132 /**
133 * The feature id for the '<em><b>Max New Elements</b></em>' attribute.
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @generated
137 * @ordered
138 */
139 int PARTIAL_INTERPRETATION__MAX_NEW_ELEMENTS = 7;
140
141 /**
142 * The feature id for the '<em><b>Open World Element Prototype</b></em>' containment reference.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 * @ordered
147 */
148 int PARTIAL_INTERPRETATION__OPEN_WORLD_ELEMENT_PROTOTYPE = 8;
149
150 /**
151 * The feature id for the '<em><b>Problem Conainer</b></em>' containment reference.
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 * @ordered
156 */
157 int PARTIAL_INTERPRETATION__PROBLEM_CONAINER = 9;
158
159 /**
160 * The number of structural features of the '<em>Partial Interpretation</em>' class.
161 * <!-- begin-user-doc -->
162 * <!-- end-user-doc -->
163 * @generated
164 * @ordered
165 */
166 int PARTIAL_INTERPRETATION_FEATURE_COUNT = 10;
167
168 /**
169 * The number of operations of the '<em>Partial Interpretation</em>' class.
170 * <!-- begin-user-doc -->
171 * <!-- end-user-doc -->
172 * @generated
173 * @ordered
174 */
175 int PARTIAL_INTERPRETATION_OPERATION_COUNT = 0;
176
177 /**
178 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialConstantInterpretationImpl <em>Partial Constant Interpretation</em>}' class.
179 * <!-- begin-user-doc -->
180 * <!-- end-user-doc -->
181 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialConstantInterpretationImpl
182 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getPartialConstantInterpretation()
183 * @generated
184 */
185 int PARTIAL_CONSTANT_INTERPRETATION = 1;
186
187 /**
188 * The feature id for the '<em><b>Interpretation Of</b></em>' reference.
189 * <!-- begin-user-doc -->
190 * <!-- end-user-doc -->
191 * @generated
192 * @ordered
193 */
194 int PARTIAL_CONSTANT_INTERPRETATION__INTERPRETATION_OF = 0;
195
196 /**
197 * The number of structural features of the '<em>Partial Constant Interpretation</em>' class.
198 * <!-- begin-user-doc -->
199 * <!-- end-user-doc -->
200 * @generated
201 * @ordered
202 */
203 int PARTIAL_CONSTANT_INTERPRETATION_FEATURE_COUNT = 1;
204
205 /**
206 * The number of operations of the '<em>Partial Constant Interpretation</em>' class.
207 * <!-- begin-user-doc -->
208 * <!-- end-user-doc -->
209 * @generated
210 * @ordered
211 */
212 int PARTIAL_CONSTANT_INTERPRETATION_OPERATION_COUNT = 0;
213
214 /**
215 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialRelationInterpretationImpl <em>Partial Relation Interpretation</em>}' class.
216 * <!-- begin-user-doc -->
217 * <!-- end-user-doc -->
218 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialRelationInterpretationImpl
219 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getPartialRelationInterpretation()
220 * @generated
221 */
222 int PARTIAL_RELATION_INTERPRETATION = 2;
223
224 /**
225 * The feature id for the '<em><b>Interpretation Of</b></em>' reference.
226 * <!-- begin-user-doc -->
227 * <!-- end-user-doc -->
228 * @generated
229 * @ordered
230 */
231 int PARTIAL_RELATION_INTERPRETATION__INTERPRETATION_OF = 0;
232
233 /**
234 * The feature id for the '<em><b>Relationlinks</b></em>' containment reference list.
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @generated
238 * @ordered
239 */
240 int PARTIAL_RELATION_INTERPRETATION__RELATIONLINKS = 1;
241
242 /**
243 * The feature id for the '<em><b>Param1</b></em>' reference.
244 * <!-- begin-user-doc -->
245 * <!-- end-user-doc -->
246 * @generated
247 * @ordered
248 */
249 int PARTIAL_RELATION_INTERPRETATION__PARAM1 = 2;
250
251 /**
252 * The feature id for the '<em><b>Param2</b></em>' reference.
253 * <!-- begin-user-doc -->
254 * <!-- end-user-doc -->
255 * @generated
256 * @ordered
257 */
258 int PARTIAL_RELATION_INTERPRETATION__PARAM2 = 3;
259
260 /**
261 * The number of structural features of the '<em>Partial Relation Interpretation</em>' class.
262 * <!-- begin-user-doc -->
263 * <!-- end-user-doc -->
264 * @generated
265 * @ordered
266 */
267 int PARTIAL_RELATION_INTERPRETATION_FEATURE_COUNT = 4;
268
269 /**
270 * The number of operations of the '<em>Partial Relation Interpretation</em>' class.
271 * <!-- begin-user-doc -->
272 * <!-- end-user-doc -->
273 * @generated
274 * @ordered
275 */
276 int PARTIAL_RELATION_INTERPRETATION_OPERATION_COUNT = 0;
277
278 /**
279 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialFunctionInterpretationImpl <em>Partial Function Interpretation</em>}' class.
280 * <!-- begin-user-doc -->
281 * <!-- end-user-doc -->
282 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialFunctionInterpretationImpl
283 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getPartialFunctionInterpretation()
284 * @generated
285 */
286 int PARTIAL_FUNCTION_INTERPRETATION = 3;
287
288 /**
289 * The feature id for the '<em><b>Interpretation Of</b></em>' reference.
290 * <!-- begin-user-doc -->
291 * <!-- end-user-doc -->
292 * @generated
293 * @ordered
294 */
295 int PARTIAL_FUNCTION_INTERPRETATION__INTERPRETATION_OF = 0;
296
297 /**
298 * The number of structural features of the '<em>Partial Function Interpretation</em>' class.
299 * <!-- begin-user-doc -->
300 * <!-- end-user-doc -->
301 * @generated
302 * @ordered
303 */
304 int PARTIAL_FUNCTION_INTERPRETATION_FEATURE_COUNT = 1;
305
306 /**
307 * The number of operations of the '<em>Partial Function Interpretation</em>' class.
308 * <!-- begin-user-doc -->
309 * <!-- end-user-doc -->
310 * @generated
311 * @ordered
312 */
313 int PARTIAL_FUNCTION_INTERPRETATION_OPERATION_COUNT = 0;
314
315 /**
316 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialTypeInterpratationImpl <em>Partial Type Interpratation</em>}' class.
317 * <!-- begin-user-doc -->
318 * <!-- end-user-doc -->
319 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialTypeInterpratationImpl
320 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getPartialTypeInterpratation()
321 * @generated
322 */
323 int PARTIAL_TYPE_INTERPRATATION = 4;
324
325 /**
326 * The feature id for the '<em><b>Interpretation Of</b></em>' reference.
327 * <!-- begin-user-doc -->
328 * <!-- end-user-doc -->
329 * @generated
330 * @ordered
331 */
332 int PARTIAL_TYPE_INTERPRATATION__INTERPRETATION_OF = 0;
333
334 /**
335 * The feature id for the '<em><b>Elements</b></em>' reference list.
336 * <!-- begin-user-doc -->
337 * <!-- end-user-doc -->
338 * @generated
339 * @ordered
340 */
341 int PARTIAL_TYPE_INTERPRATATION__ELEMENTS = 1;
342
343 /**
344 * The feature id for the '<em><b>Supertype Interpretation</b></em>' reference list.
345 * <!-- begin-user-doc -->
346 * <!-- end-user-doc -->
347 * @generated
348 * @ordered
349 */
350 int PARTIAL_TYPE_INTERPRATATION__SUPERTYPE_INTERPRETATION = 2;
351
352 /**
353 * The number of structural features of the '<em>Partial Type Interpratation</em>' class.
354 * <!-- begin-user-doc -->
355 * <!-- end-user-doc -->
356 * @generated
357 * @ordered
358 */
359 int PARTIAL_TYPE_INTERPRATATION_FEATURE_COUNT = 3;
360
361 /**
362 * The number of operations of the '<em>Partial Type Interpratation</em>' class.
363 * <!-- begin-user-doc -->
364 * <!-- end-user-doc -->
365 * @generated
366 * @ordered
367 */
368 int PARTIAL_TYPE_INTERPRATATION_OPERATION_COUNT = 0;
369
370 /**
371 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.RelationLinkImpl <em>Relation Link</em>}' class.
372 * <!-- begin-user-doc -->
373 * <!-- end-user-doc -->
374 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.RelationLinkImpl
375 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getRelationLink()
376 * @generated
377 */
378 int RELATION_LINK = 5;
379
380 /**
381 * The number of structural features of the '<em>Relation Link</em>' class.
382 * <!-- begin-user-doc -->
383 * <!-- end-user-doc -->
384 * @generated
385 * @ordered
386 */
387 int RELATION_LINK_FEATURE_COUNT = 0;
388
389 /**
390 * The number of operations of the '<em>Relation Link</em>' class.
391 * <!-- begin-user-doc -->
392 * <!-- end-user-doc -->
393 * @generated
394 * @ordered
395 */
396 int RELATION_LINK_OPERATION_COUNT = 0;
397
398 /**
399 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.UnaryElementRelationLinkImpl <em>Unary Element Relation Link</em>}' class.
400 * <!-- begin-user-doc -->
401 * <!-- end-user-doc -->
402 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.UnaryElementRelationLinkImpl
403 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getUnaryElementRelationLink()
404 * @generated
405 */
406 int UNARY_ELEMENT_RELATION_LINK = 6;
407
408 /**
409 * The feature id for the '<em><b>Param1</b></em>' reference.
410 * <!-- begin-user-doc -->
411 * <!-- end-user-doc -->
412 * @generated
413 * @ordered
414 */
415 int UNARY_ELEMENT_RELATION_LINK__PARAM1 = RELATION_LINK_FEATURE_COUNT + 0;
416
417 /**
418 * The number of structural features of the '<em>Unary Element Relation Link</em>' class.
419 * <!-- begin-user-doc -->
420 * <!-- end-user-doc -->
421 * @generated
422 * @ordered
423 */
424 int UNARY_ELEMENT_RELATION_LINK_FEATURE_COUNT = RELATION_LINK_FEATURE_COUNT + 1;
425
426 /**
427 * The number of operations of the '<em>Unary Element Relation Link</em>' class.
428 * <!-- begin-user-doc -->
429 * <!-- end-user-doc -->
430 * @generated
431 * @ordered
432 */
433 int UNARY_ELEMENT_RELATION_LINK_OPERATION_COUNT = RELATION_LINK_OPERATION_COUNT + 0;
434
435 /**
436 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BinaryElementRelationLinkImpl <em>Binary Element Relation Link</em>}' class.
437 * <!-- begin-user-doc -->
438 * <!-- end-user-doc -->
439 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BinaryElementRelationLinkImpl
440 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getBinaryElementRelationLink()
441 * @generated
442 */
443 int BINARY_ELEMENT_RELATION_LINK = 7;
444
445 /**
446 * The feature id for the '<em><b>Param1</b></em>' reference.
447 * <!-- begin-user-doc -->
448 * <!-- end-user-doc -->
449 * @generated
450 * @ordered
451 */
452 int BINARY_ELEMENT_RELATION_LINK__PARAM1 = RELATION_LINK_FEATURE_COUNT + 0;
453
454 /**
455 * The feature id for the '<em><b>Param2</b></em>' reference.
456 * <!-- begin-user-doc -->
457 * <!-- end-user-doc -->
458 * @generated
459 * @ordered
460 */
461 int BINARY_ELEMENT_RELATION_LINK__PARAM2 = RELATION_LINK_FEATURE_COUNT + 1;
462
463 /**
464 * The number of structural features of the '<em>Binary Element Relation Link</em>' class.
465 * <!-- begin-user-doc -->
466 * <!-- end-user-doc -->
467 * @generated
468 * @ordered
469 */
470 int BINARY_ELEMENT_RELATION_LINK_FEATURE_COUNT = RELATION_LINK_FEATURE_COUNT + 2;
471
472 /**
473 * The number of operations of the '<em>Binary Element Relation Link</em>' class.
474 * <!-- begin-user-doc -->
475 * <!-- end-user-doc -->
476 * @generated
477 * @ordered
478 */
479 int BINARY_ELEMENT_RELATION_LINK_OPERATION_COUNT = RELATION_LINK_OPERATION_COUNT + 0;
480
481 /**
482 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.NaryRelationLinkImpl <em>Nary Relation Link</em>}' class.
483 * <!-- begin-user-doc -->
484 * <!-- end-user-doc -->
485 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.NaryRelationLinkImpl
486 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getNaryRelationLink()
487 * @generated
488 */
489 int NARY_RELATION_LINK = 8;
490
491 /**
492 * The feature id for the '<em><b>Elements</b></em>' containment reference list.
493 * <!-- begin-user-doc -->
494 * <!-- end-user-doc -->
495 * @generated
496 * @ordered
497 */
498 int NARY_RELATION_LINK__ELEMENTS = RELATION_LINK_FEATURE_COUNT + 0;
499
500 /**
501 * The number of structural features of the '<em>Nary Relation Link</em>' class.
502 * <!-- begin-user-doc -->
503 * <!-- end-user-doc -->
504 * @generated
505 * @ordered
506 */
507 int NARY_RELATION_LINK_FEATURE_COUNT = RELATION_LINK_FEATURE_COUNT + 1;
508
509 /**
510 * The number of operations of the '<em>Nary Relation Link</em>' class.
511 * <!-- begin-user-doc -->
512 * <!-- end-user-doc -->
513 * @generated
514 * @ordered
515 */
516 int NARY_RELATION_LINK_OPERATION_COUNT = RELATION_LINK_OPERATION_COUNT + 0;
517
518 /**
519 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.NaryRelationLinkElementImpl <em>Nary Relation Link Element</em>}' class.
520 * <!-- begin-user-doc -->
521 * <!-- end-user-doc -->
522 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.NaryRelationLinkElementImpl
523 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getNaryRelationLinkElement()
524 * @generated
525 */
526 int NARY_RELATION_LINK_ELEMENT = 9;
527
528 /**
529 * The feature id for the '<em><b>Index</b></em>' attribute.
530 * <!-- begin-user-doc -->
531 * <!-- end-user-doc -->
532 * @generated
533 * @ordered
534 */
535 int NARY_RELATION_LINK_ELEMENT__INDEX = 0;
536
537 /**
538 * The number of structural features of the '<em>Nary Relation Link Element</em>' class.
539 * <!-- begin-user-doc -->
540 * <!-- end-user-doc -->
541 * @generated
542 * @ordered
543 */
544 int NARY_RELATION_LINK_ELEMENT_FEATURE_COUNT = 1;
545
546 /**
547 * The number of operations of the '<em>Nary Relation Link Element</em>' class.
548 * <!-- begin-user-doc -->
549 * <!-- end-user-doc -->
550 * @generated
551 * @ordered
552 */
553 int NARY_RELATION_LINK_ELEMENT_OPERATION_COUNT = 0;
554
555
556 /**
557 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation <em>Partial Interpretation</em>}'.
558 * <!-- begin-user-doc -->
559 * <!-- end-user-doc -->
560 * @return the meta object for class '<em>Partial Interpretation</em>'.
561 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
562 * @generated
563 */
564 EClass getPartialInterpretation();
565
566 /**
567 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getProblem <em>Problem</em>}'.
568 * <!-- begin-user-doc -->
569 * <!-- end-user-doc -->
570 * @return the meta object for the reference '<em>Problem</em>'.
571 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getProblem()
572 * @see #getPartialInterpretation()
573 * @generated
574 */
575 EReference getPartialInterpretation_Problem();
576
577 /**
578 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getPartialconstantinterpretation <em>Partialconstantinterpretation</em>}'.
579 * <!-- begin-user-doc -->
580 * <!-- end-user-doc -->
581 * @return the meta object for the containment reference list '<em>Partialconstantinterpretation</em>'.
582 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getPartialconstantinterpretation()
583 * @see #getPartialInterpretation()
584 * @generated
585 */
586 EReference getPartialInterpretation_Partialconstantinterpretation();
587
588 /**
589 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getPartialrelationinterpretation <em>Partialrelationinterpretation</em>}'.
590 * <!-- begin-user-doc -->
591 * <!-- end-user-doc -->
592 * @return the meta object for the containment reference list '<em>Partialrelationinterpretation</em>'.
593 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getPartialrelationinterpretation()
594 * @see #getPartialInterpretation()
595 * @generated
596 */
597 EReference getPartialInterpretation_Partialrelationinterpretation();
598
599 /**
600 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getPartialfunctioninterpretation <em>Partialfunctioninterpretation</em>}'.
601 * <!-- begin-user-doc -->
602 * <!-- end-user-doc -->
603 * @return the meta object for the containment reference list '<em>Partialfunctioninterpretation</em>'.
604 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getPartialfunctioninterpretation()
605 * @see #getPartialInterpretation()
606 * @generated
607 */
608 EReference getPartialInterpretation_Partialfunctioninterpretation();
609
610 /**
611 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getNewElements <em>New Elements</em>}'.
612 * <!-- begin-user-doc -->
613 * <!-- end-user-doc -->
614 * @return the meta object for the containment reference list '<em>New Elements</em>'.
615 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getNewElements()
616 * @see #getPartialInterpretation()
617 * @generated
618 */
619 EReference getPartialInterpretation_NewElements();
620
621 /**
622 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getPartialtypeinterpratation <em>Partialtypeinterpratation</em>}'.
623 * <!-- begin-user-doc -->
624 * <!-- end-user-doc -->
625 * @return the meta object for the containment reference list '<em>Partialtypeinterpratation</em>'.
626 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getPartialtypeinterpratation()
627 * @see #getPartialInterpretation()
628 * @generated
629 */
630 EReference getPartialInterpretation_Partialtypeinterpratation();
631
632 /**
633 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getMinNewElements <em>Min New Elements</em>}'.
634 * <!-- begin-user-doc -->
635 * <!-- end-user-doc -->
636 * @return the meta object for the attribute '<em>Min New Elements</em>'.
637 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getMinNewElements()
638 * @see #getPartialInterpretation()
639 * @generated
640 */
641 EAttribute getPartialInterpretation_MinNewElements();
642
643 /**
644 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getMaxNewElements <em>Max New Elements</em>}'.
645 * <!-- begin-user-doc -->
646 * <!-- end-user-doc -->
647 * @return the meta object for the attribute '<em>Max New Elements</em>'.
648 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getMaxNewElements()
649 * @see #getPartialInterpretation()
650 * @generated
651 */
652 EAttribute getPartialInterpretation_MaxNewElements();
653
654 /**
655 * Returns the meta object for the containment reference '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getOpenWorldElementPrototype <em>Open World Element Prototype</em>}'.
656 * <!-- begin-user-doc -->
657 * <!-- end-user-doc -->
658 * @return the meta object for the containment reference '<em>Open World Element Prototype</em>'.
659 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getOpenWorldElementPrototype()
660 * @see #getPartialInterpretation()
661 * @generated
662 */
663 EReference getPartialInterpretation_OpenWorldElementPrototype();
664
665 /**
666 * Returns the meta object for the containment reference '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getProblemConainer <em>Problem Conainer</em>}'.
667 * <!-- begin-user-doc -->
668 * <!-- end-user-doc -->
669 * @return the meta object for the containment reference '<em>Problem Conainer</em>'.
670 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation#getProblemConainer()
671 * @see #getPartialInterpretation()
672 * @generated
673 */
674 EReference getPartialInterpretation_ProblemConainer();
675
676 /**
677 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation <em>Partial Constant Interpretation</em>}'.
678 * <!-- begin-user-doc -->
679 * <!-- end-user-doc -->
680 * @return the meta object for class '<em>Partial Constant Interpretation</em>'.
681 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation
682 * @generated
683 */
684 EClass getPartialConstantInterpretation();
685
686 /**
687 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation#getInterpretationOf <em>Interpretation Of</em>}'.
688 * <!-- begin-user-doc -->
689 * <!-- end-user-doc -->
690 * @return the meta object for the reference '<em>Interpretation Of</em>'.
691 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation#getInterpretationOf()
692 * @see #getPartialConstantInterpretation()
693 * @generated
694 */
695 EReference getPartialConstantInterpretation_InterpretationOf();
696
697 /**
698 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation <em>Partial Relation Interpretation</em>}'.
699 * <!-- begin-user-doc -->
700 * <!-- end-user-doc -->
701 * @return the meta object for class '<em>Partial Relation Interpretation</em>'.
702 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation
703 * @generated
704 */
705 EClass getPartialRelationInterpretation();
706
707 /**
708 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getInterpretationOf <em>Interpretation Of</em>}'.
709 * <!-- begin-user-doc -->
710 * <!-- end-user-doc -->
711 * @return the meta object for the reference '<em>Interpretation Of</em>'.
712 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getInterpretationOf()
713 * @see #getPartialRelationInterpretation()
714 * @generated
715 */
716 EReference getPartialRelationInterpretation_InterpretationOf();
717
718 /**
719 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getRelationlinks <em>Relationlinks</em>}'.
720 * <!-- begin-user-doc -->
721 * <!-- end-user-doc -->
722 * @return the meta object for the containment reference list '<em>Relationlinks</em>'.
723 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getRelationlinks()
724 * @see #getPartialRelationInterpretation()
725 * @generated
726 */
727 EReference getPartialRelationInterpretation_Relationlinks();
728
729 /**
730 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getParam1 <em>Param1</em>}'.
731 * <!-- begin-user-doc -->
732 * <!-- end-user-doc -->
733 * @return the meta object for the reference '<em>Param1</em>'.
734 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getParam1()
735 * @see #getPartialRelationInterpretation()
736 * @generated
737 */
738 EReference getPartialRelationInterpretation_Param1();
739
740 /**
741 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getParam2 <em>Param2</em>}'.
742 * <!-- begin-user-doc -->
743 * <!-- end-user-doc -->
744 * @return the meta object for the reference '<em>Param2</em>'.
745 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation#getParam2()
746 * @see #getPartialRelationInterpretation()
747 * @generated
748 */
749 EReference getPartialRelationInterpretation_Param2();
750
751 /**
752 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation <em>Partial Function Interpretation</em>}'.
753 * <!-- begin-user-doc -->
754 * <!-- end-user-doc -->
755 * @return the meta object for class '<em>Partial Function Interpretation</em>'.
756 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation
757 * @generated
758 */
759 EClass getPartialFunctionInterpretation();
760
761 /**
762 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation#getInterpretationOf <em>Interpretation Of</em>}'.
763 * <!-- begin-user-doc -->
764 * <!-- end-user-doc -->
765 * @return the meta object for the reference '<em>Interpretation Of</em>'.
766 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation#getInterpretationOf()
767 * @see #getPartialFunctionInterpretation()
768 * @generated
769 */
770 EReference getPartialFunctionInterpretation_InterpretationOf();
771
772 /**
773 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation <em>Partial Type Interpratation</em>}'.
774 * <!-- begin-user-doc -->
775 * <!-- end-user-doc -->
776 * @return the meta object for class '<em>Partial Type Interpratation</em>'.
777 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation
778 * @generated
779 */
780 EClass getPartialTypeInterpratation();
781
782 /**
783 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation#getInterpretationOf <em>Interpretation Of</em>}'.
784 * <!-- begin-user-doc -->
785 * <!-- end-user-doc -->
786 * @return the meta object for the reference '<em>Interpretation Of</em>'.
787 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation#getInterpretationOf()
788 * @see #getPartialTypeInterpratation()
789 * @generated
790 */
791 EReference getPartialTypeInterpratation_InterpretationOf();
792
793 /**
794 * Returns the meta object for the reference list '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation#getElements <em>Elements</em>}'.
795 * <!-- begin-user-doc -->
796 * <!-- end-user-doc -->
797 * @return the meta object for the reference list '<em>Elements</em>'.
798 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation#getElements()
799 * @see #getPartialTypeInterpratation()
800 * @generated
801 */
802 EReference getPartialTypeInterpratation_Elements();
803
804 /**
805 * Returns the meta object for the reference list '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation#getSupertypeInterpretation <em>Supertype Interpretation</em>}'.
806 * <!-- begin-user-doc -->
807 * <!-- end-user-doc -->
808 * @return the meta object for the reference list '<em>Supertype Interpretation</em>'.
809 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation#getSupertypeInterpretation()
810 * @see #getPartialTypeInterpratation()
811 * @generated
812 */
813 EReference getPartialTypeInterpratation_SupertypeInterpretation();
814
815 /**
816 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RelationLink <em>Relation Link</em>}'.
817 * <!-- begin-user-doc -->
818 * <!-- end-user-doc -->
819 * @return the meta object for class '<em>Relation Link</em>'.
820 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RelationLink
821 * @generated
822 */
823 EClass getRelationLink();
824
825 /**
826 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.UnaryElementRelationLink <em>Unary Element Relation Link</em>}'.
827 * <!-- begin-user-doc -->
828 * <!-- end-user-doc -->
829 * @return the meta object for class '<em>Unary Element Relation Link</em>'.
830 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.UnaryElementRelationLink
831 * @generated
832 */
833 EClass getUnaryElementRelationLink();
834
835 /**
836 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.UnaryElementRelationLink#getParam1 <em>Param1</em>}'.
837 * <!-- begin-user-doc -->
838 * <!-- end-user-doc -->
839 * @return the meta object for the reference '<em>Param1</em>'.
840 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.UnaryElementRelationLink#getParam1()
841 * @see #getUnaryElementRelationLink()
842 * @generated
843 */
844 EReference getUnaryElementRelationLink_Param1();
845
846 /**
847 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink <em>Binary Element Relation Link</em>}'.
848 * <!-- begin-user-doc -->
849 * <!-- end-user-doc -->
850 * @return the meta object for class '<em>Binary Element Relation Link</em>'.
851 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
852 * @generated
853 */
854 EClass getBinaryElementRelationLink();
855
856 /**
857 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink#getParam1 <em>Param1</em>}'.
858 * <!-- begin-user-doc -->
859 * <!-- end-user-doc -->
860 * @return the meta object for the reference '<em>Param1</em>'.
861 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink#getParam1()
862 * @see #getBinaryElementRelationLink()
863 * @generated
864 */
865 EReference getBinaryElementRelationLink_Param1();
866
867 /**
868 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink#getParam2 <em>Param2</em>}'.
869 * <!-- begin-user-doc -->
870 * <!-- end-user-doc -->
871 * @return the meta object for the reference '<em>Param2</em>'.
872 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink#getParam2()
873 * @see #getBinaryElementRelationLink()
874 * @generated
875 */
876 EReference getBinaryElementRelationLink_Param2();
877
878 /**
879 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLink <em>Nary Relation Link</em>}'.
880 * <!-- begin-user-doc -->
881 * <!-- end-user-doc -->
882 * @return the meta object for class '<em>Nary Relation Link</em>'.
883 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLink
884 * @generated
885 */
886 EClass getNaryRelationLink();
887
888 /**
889 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLink#getElements <em>Elements</em>}'.
890 * <!-- begin-user-doc -->
891 * <!-- end-user-doc -->
892 * @return the meta object for the containment reference list '<em>Elements</em>'.
893 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLink#getElements()
894 * @see #getNaryRelationLink()
895 * @generated
896 */
897 EReference getNaryRelationLink_Elements();
898
899 /**
900 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLinkElement <em>Nary Relation Link Element</em>}'.
901 * <!-- begin-user-doc -->
902 * <!-- end-user-doc -->
903 * @return the meta object for class '<em>Nary Relation Link Element</em>'.
904 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLinkElement
905 * @generated
906 */
907 EClass getNaryRelationLinkElement();
908
909 /**
910 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLinkElement#getIndex <em>Index</em>}'.
911 * <!-- begin-user-doc -->
912 * <!-- end-user-doc -->
913 * @return the meta object for the attribute '<em>Index</em>'.
914 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLinkElement#getIndex()
915 * @see #getNaryRelationLinkElement()
916 * @generated
917 */
918 EAttribute getNaryRelationLinkElement_Index();
919
920 /**
921 * Returns the factory that creates the instances of the model.
922 * <!-- begin-user-doc -->
923 * <!-- end-user-doc -->
924 * @return the factory that creates the instances of the model.
925 * @generated
926 */
927 PartialinterpretationFactory getPartialinterpretationFactory();
928
929 /**
930 * <!-- begin-user-doc -->
931 * Defines literals for the meta objects that represent
932 * <ul>
933 * <li>each class,</li>
934 * <li>each feature of each class,</li>
935 * <li>each operation of each class,</li>
936 * <li>each enum,</li>
937 * <li>and each data type</li>
938 * </ul>
939 * <!-- end-user-doc -->
940 * @generated
941 */
942 interface Literals {
943 /**
944 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl <em>Partial Interpretation</em>}' class.
945 * <!-- begin-user-doc -->
946 * <!-- end-user-doc -->
947 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl
948 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getPartialInterpretation()
949 * @generated
950 */
951 EClass PARTIAL_INTERPRETATION = eINSTANCE.getPartialInterpretation();
952
953 /**
954 * The meta object literal for the '<em><b>Problem</b></em>' reference feature.
955 * <!-- begin-user-doc -->
956 * <!-- end-user-doc -->
957 * @generated
958 */
959 EReference PARTIAL_INTERPRETATION__PROBLEM = eINSTANCE.getPartialInterpretation_Problem();
960
961 /**
962 * The meta object literal for the '<em><b>Partialconstantinterpretation</b></em>' containment reference list feature.
963 * <!-- begin-user-doc -->
964 * <!-- end-user-doc -->
965 * @generated
966 */
967 EReference PARTIAL_INTERPRETATION__PARTIALCONSTANTINTERPRETATION = eINSTANCE.getPartialInterpretation_Partialconstantinterpretation();
968
969 /**
970 * The meta object literal for the '<em><b>Partialrelationinterpretation</b></em>' containment reference list feature.
971 * <!-- begin-user-doc -->
972 * <!-- end-user-doc -->
973 * @generated
974 */
975 EReference PARTIAL_INTERPRETATION__PARTIALRELATIONINTERPRETATION = eINSTANCE.getPartialInterpretation_Partialrelationinterpretation();
976
977 /**
978 * The meta object literal for the '<em><b>Partialfunctioninterpretation</b></em>' containment reference list feature.
979 * <!-- begin-user-doc -->
980 * <!-- end-user-doc -->
981 * @generated
982 */
983 EReference PARTIAL_INTERPRETATION__PARTIALFUNCTIONINTERPRETATION = eINSTANCE.getPartialInterpretation_Partialfunctioninterpretation();
984
985 /**
986 * The meta object literal for the '<em><b>New Elements</b></em>' containment reference list feature.
987 * <!-- begin-user-doc -->
988 * <!-- end-user-doc -->
989 * @generated
990 */
991 EReference PARTIAL_INTERPRETATION__NEW_ELEMENTS = eINSTANCE.getPartialInterpretation_NewElements();
992
993 /**
994 * The meta object literal for the '<em><b>Partialtypeinterpratation</b></em>' containment reference list feature.
995 * <!-- begin-user-doc -->
996 * <!-- end-user-doc -->
997 * @generated
998 */
999 EReference PARTIAL_INTERPRETATION__PARTIALTYPEINTERPRATATION = eINSTANCE.getPartialInterpretation_Partialtypeinterpratation();
1000
1001 /**
1002 * The meta object literal for the '<em><b>Min New Elements</b></em>' attribute feature.
1003 * <!-- begin-user-doc -->
1004 * <!-- end-user-doc -->
1005 * @generated
1006 */
1007 EAttribute PARTIAL_INTERPRETATION__MIN_NEW_ELEMENTS = eINSTANCE.getPartialInterpretation_MinNewElements();
1008
1009 /**
1010 * The meta object literal for the '<em><b>Max New Elements</b></em>' attribute feature.
1011 * <!-- begin-user-doc -->
1012 * <!-- end-user-doc -->
1013 * @generated
1014 */
1015 EAttribute PARTIAL_INTERPRETATION__MAX_NEW_ELEMENTS = eINSTANCE.getPartialInterpretation_MaxNewElements();
1016
1017 /**
1018 * The meta object literal for the '<em><b>Open World Element Prototype</b></em>' containment reference feature.
1019 * <!-- begin-user-doc -->
1020 * <!-- end-user-doc -->
1021 * @generated
1022 */
1023 EReference PARTIAL_INTERPRETATION__OPEN_WORLD_ELEMENT_PROTOTYPE = eINSTANCE.getPartialInterpretation_OpenWorldElementPrototype();
1024
1025 /**
1026 * The meta object literal for the '<em><b>Problem Conainer</b></em>' containment reference feature.
1027 * <!-- begin-user-doc -->
1028 * <!-- end-user-doc -->
1029 * @generated
1030 */
1031 EReference PARTIAL_INTERPRETATION__PROBLEM_CONAINER = eINSTANCE.getPartialInterpretation_ProblemConainer();
1032
1033 /**
1034 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialConstantInterpretationImpl <em>Partial Constant Interpretation</em>}' class.
1035 * <!-- begin-user-doc -->
1036 * <!-- end-user-doc -->
1037 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialConstantInterpretationImpl
1038 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getPartialConstantInterpretation()
1039 * @generated
1040 */
1041 EClass PARTIAL_CONSTANT_INTERPRETATION = eINSTANCE.getPartialConstantInterpretation();
1042
1043 /**
1044 * The meta object literal for the '<em><b>Interpretation Of</b></em>' reference feature.
1045 * <!-- begin-user-doc -->
1046 * <!-- end-user-doc -->
1047 * @generated
1048 */
1049 EReference PARTIAL_CONSTANT_INTERPRETATION__INTERPRETATION_OF = eINSTANCE.getPartialConstantInterpretation_InterpretationOf();
1050
1051 /**
1052 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialRelationInterpretationImpl <em>Partial Relation Interpretation</em>}' class.
1053 * <!-- begin-user-doc -->
1054 * <!-- end-user-doc -->
1055 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialRelationInterpretationImpl
1056 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getPartialRelationInterpretation()
1057 * @generated
1058 */
1059 EClass PARTIAL_RELATION_INTERPRETATION = eINSTANCE.getPartialRelationInterpretation();
1060
1061 /**
1062 * The meta object literal for the '<em><b>Interpretation Of</b></em>' reference feature.
1063 * <!-- begin-user-doc -->
1064 * <!-- end-user-doc -->
1065 * @generated
1066 */
1067 EReference PARTIAL_RELATION_INTERPRETATION__INTERPRETATION_OF = eINSTANCE.getPartialRelationInterpretation_InterpretationOf();
1068
1069 /**
1070 * The meta object literal for the '<em><b>Relationlinks</b></em>' containment reference list feature.
1071 * <!-- begin-user-doc -->
1072 * <!-- end-user-doc -->
1073 * @generated
1074 */
1075 EReference PARTIAL_RELATION_INTERPRETATION__RELATIONLINKS = eINSTANCE.getPartialRelationInterpretation_Relationlinks();
1076
1077 /**
1078 * The meta object literal for the '<em><b>Param1</b></em>' reference feature.
1079 * <!-- begin-user-doc -->
1080 * <!-- end-user-doc -->
1081 * @generated
1082 */
1083 EReference PARTIAL_RELATION_INTERPRETATION__PARAM1 = eINSTANCE.getPartialRelationInterpretation_Param1();
1084
1085 /**
1086 * The meta object literal for the '<em><b>Param2</b></em>' reference feature.
1087 * <!-- begin-user-doc -->
1088 * <!-- end-user-doc -->
1089 * @generated
1090 */
1091 EReference PARTIAL_RELATION_INTERPRETATION__PARAM2 = eINSTANCE.getPartialRelationInterpretation_Param2();
1092
1093 /**
1094 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialFunctionInterpretationImpl <em>Partial Function Interpretation</em>}' class.
1095 * <!-- begin-user-doc -->
1096 * <!-- end-user-doc -->
1097 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialFunctionInterpretationImpl
1098 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getPartialFunctionInterpretation()
1099 * @generated
1100 */
1101 EClass PARTIAL_FUNCTION_INTERPRETATION = eINSTANCE.getPartialFunctionInterpretation();
1102
1103 /**
1104 * The meta object literal for the '<em><b>Interpretation Of</b></em>' reference feature.
1105 * <!-- begin-user-doc -->
1106 * <!-- end-user-doc -->
1107 * @generated
1108 */
1109 EReference PARTIAL_FUNCTION_INTERPRETATION__INTERPRETATION_OF = eINSTANCE.getPartialFunctionInterpretation_InterpretationOf();
1110
1111 /**
1112 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialTypeInterpratationImpl <em>Partial Type Interpratation</em>}' class.
1113 * <!-- begin-user-doc -->
1114 * <!-- end-user-doc -->
1115 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialTypeInterpratationImpl
1116 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getPartialTypeInterpratation()
1117 * @generated
1118 */
1119 EClass PARTIAL_TYPE_INTERPRATATION = eINSTANCE.getPartialTypeInterpratation();
1120
1121 /**
1122 * The meta object literal for the '<em><b>Interpretation Of</b></em>' reference feature.
1123 * <!-- begin-user-doc -->
1124 * <!-- end-user-doc -->
1125 * @generated
1126 */
1127 EReference PARTIAL_TYPE_INTERPRATATION__INTERPRETATION_OF = eINSTANCE.getPartialTypeInterpratation_InterpretationOf();
1128
1129 /**
1130 * The meta object literal for the '<em><b>Elements</b></em>' reference list feature.
1131 * <!-- begin-user-doc -->
1132 * <!-- end-user-doc -->
1133 * @generated
1134 */
1135 EReference PARTIAL_TYPE_INTERPRATATION__ELEMENTS = eINSTANCE.getPartialTypeInterpratation_Elements();
1136
1137 /**
1138 * The meta object literal for the '<em><b>Supertype Interpretation</b></em>' reference list feature.
1139 * <!-- begin-user-doc -->
1140 * <!-- end-user-doc -->
1141 * @generated
1142 */
1143 EReference PARTIAL_TYPE_INTERPRATATION__SUPERTYPE_INTERPRETATION = eINSTANCE.getPartialTypeInterpratation_SupertypeInterpretation();
1144
1145 /**
1146 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.RelationLinkImpl <em>Relation Link</em>}' class.
1147 * <!-- begin-user-doc -->
1148 * <!-- end-user-doc -->
1149 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.RelationLinkImpl
1150 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getRelationLink()
1151 * @generated
1152 */
1153 EClass RELATION_LINK = eINSTANCE.getRelationLink();
1154
1155 /**
1156 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.UnaryElementRelationLinkImpl <em>Unary Element Relation Link</em>}' class.
1157 * <!-- begin-user-doc -->
1158 * <!-- end-user-doc -->
1159 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.UnaryElementRelationLinkImpl
1160 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getUnaryElementRelationLink()
1161 * @generated
1162 */
1163 EClass UNARY_ELEMENT_RELATION_LINK = eINSTANCE.getUnaryElementRelationLink();
1164
1165 /**
1166 * The meta object literal for the '<em><b>Param1</b></em>' reference feature.
1167 * <!-- begin-user-doc -->
1168 * <!-- end-user-doc -->
1169 * @generated
1170 */
1171 EReference UNARY_ELEMENT_RELATION_LINK__PARAM1 = eINSTANCE.getUnaryElementRelationLink_Param1();
1172
1173 /**
1174 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BinaryElementRelationLinkImpl <em>Binary Element Relation Link</em>}' class.
1175 * <!-- begin-user-doc -->
1176 * <!-- end-user-doc -->
1177 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BinaryElementRelationLinkImpl
1178 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getBinaryElementRelationLink()
1179 * @generated
1180 */
1181 EClass BINARY_ELEMENT_RELATION_LINK = eINSTANCE.getBinaryElementRelationLink();
1182
1183 /**
1184 * The meta object literal for the '<em><b>Param1</b></em>' reference feature.
1185 * <!-- begin-user-doc -->
1186 * <!-- end-user-doc -->
1187 * @generated
1188 */
1189 EReference BINARY_ELEMENT_RELATION_LINK__PARAM1 = eINSTANCE.getBinaryElementRelationLink_Param1();
1190
1191 /**
1192 * The meta object literal for the '<em><b>Param2</b></em>' reference feature.
1193 * <!-- begin-user-doc -->
1194 * <!-- end-user-doc -->
1195 * @generated
1196 */
1197 EReference BINARY_ELEMENT_RELATION_LINK__PARAM2 = eINSTANCE.getBinaryElementRelationLink_Param2();
1198
1199 /**
1200 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.NaryRelationLinkImpl <em>Nary Relation Link</em>}' class.
1201 * <!-- begin-user-doc -->
1202 * <!-- end-user-doc -->
1203 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.NaryRelationLinkImpl
1204 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getNaryRelationLink()
1205 * @generated
1206 */
1207 EClass NARY_RELATION_LINK = eINSTANCE.getNaryRelationLink();
1208
1209 /**
1210 * The meta object literal for the '<em><b>Elements</b></em>' containment reference list feature.
1211 * <!-- begin-user-doc -->
1212 * <!-- end-user-doc -->
1213 * @generated
1214 */
1215 EReference NARY_RELATION_LINK__ELEMENTS = eINSTANCE.getNaryRelationLink_Elements();
1216
1217 /**
1218 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.NaryRelationLinkElementImpl <em>Nary Relation Link Element</em>}' class.
1219 * <!-- begin-user-doc -->
1220 * <!-- end-user-doc -->
1221 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.NaryRelationLinkElementImpl
1222 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialinterpretationPackageImpl#getNaryRelationLinkElement()
1223 * @generated
1224 */
1225 EClass NARY_RELATION_LINK_ELEMENT = eINSTANCE.getNaryRelationLinkElement();
1226
1227 /**
1228 * The meta object literal for the '<em><b>Index</b></em>' attribute feature.
1229 * <!-- begin-user-doc -->
1230 * <!-- end-user-doc -->
1231 * @generated
1232 */
1233 EAttribute NARY_RELATION_LINK_ELEMENT__INDEX = eINSTANCE.getNaryRelationLinkElement_Index();
1234
1235 }
1236
1237} //PartialinterpretationPackage
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/RelationLink.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/RelationLink.java
new file mode 100644
index 00000000..8da96792
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/RelationLink.java
@@ -0,0 +1,18 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Relation Link</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 *
13 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getRelationLink()
14 * @model abstract="true"
15 * @generated
16 */
17public interface RelationLink extends EObject {
18} // RelationLink
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/UnaryElementRelationLink.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/UnaryElementRelationLink.java
new file mode 100644
index 00000000..f25a4e05
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/UnaryElementRelationLink.java
@@ -0,0 +1,50 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Unary Element Relation Link</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.UnaryElementRelationLink#getParam1 <em>Param1</em>}</li>
17 * </ul>
18 *
19 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getUnaryElementRelationLink()
20 * @model
21 * @generated
22 */
23public interface UnaryElementRelationLink extends RelationLink {
24 /**
25 * Returns the value of the '<em><b>Param1</b></em>' reference.
26 * <!-- begin-user-doc -->
27 * <p>
28 * If the meaning of the '<em>Param1</em>' reference isn't clear,
29 * there really should be more of a description here...
30 * </p>
31 * <!-- end-user-doc -->
32 * @return the value of the '<em>Param1</em>' reference.
33 * @see #setParam1(DefinedElement)
34 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getUnaryElementRelationLink_Param1()
35 * @model required="true"
36 * @generated
37 */
38 DefinedElement getParam1();
39
40 /**
41 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.UnaryElementRelationLink#getParam1 <em>Param1</em>}' reference.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @param value the new value of the '<em>Param1</em>' reference.
45 * @see #getParam1()
46 * @generated
47 */
48 void setParam1(DefinedElement value);
49
50} // UnaryElementRelationLink
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/BinaryElementRelationLinkImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/BinaryElementRelationLinkImpl.java
new file mode 100644
index 00000000..f5efe02a
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/BinaryElementRelationLinkImpl.java
@@ -0,0 +1,217 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement;
6
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink;
8import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
9
10import org.eclipse.emf.common.notify.Notification;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16
17/**
18 * <!-- begin-user-doc -->
19 * An implementation of the model object '<em><b>Binary Element Relation Link</b></em>'.
20 * <!-- end-user-doc -->
21 * <p>
22 * The following features are implemented:
23 * </p>
24 * <ul>
25 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BinaryElementRelationLinkImpl#getParam1 <em>Param1</em>}</li>
26 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BinaryElementRelationLinkImpl#getParam2 <em>Param2</em>}</li>
27 * </ul>
28 *
29 * @generated
30 */
31public class BinaryElementRelationLinkImpl extends RelationLinkImpl implements BinaryElementRelationLink {
32 /**
33 * The cached value of the '{@link #getParam1() <em>Param1</em>}' reference.
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @see #getParam1()
37 * @generated
38 * @ordered
39 */
40 protected DefinedElement param1;
41
42 /**
43 * The cached value of the '{@link #getParam2() <em>Param2</em>}' reference.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @see #getParam2()
47 * @generated
48 * @ordered
49 */
50 protected DefinedElement param2;
51
52 /**
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @generated
56 */
57 protected BinaryElementRelationLinkImpl() {
58 super();
59 }
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 @Override
67 protected EClass eStaticClass() {
68 return PartialinterpretationPackage.Literals.BINARY_ELEMENT_RELATION_LINK;
69 }
70
71 /**
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @generated
75 */
76 public DefinedElement getParam1() {
77 if (param1 != null && param1.eIsProxy()) {
78 InternalEObject oldParam1 = (InternalEObject)param1;
79 param1 = (DefinedElement)eResolveProxy(oldParam1);
80 if (param1 != oldParam1) {
81 if (eNotificationRequired())
82 eNotify(new ENotificationImpl(this, Notification.RESOLVE, PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK__PARAM1, oldParam1, param1));
83 }
84 }
85 return param1;
86 }
87
88 /**
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @generated
92 */
93 public DefinedElement basicGetParam1() {
94 return param1;
95 }
96
97 /**
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @generated
101 */
102 public void setParam1(DefinedElement newParam1) {
103 DefinedElement oldParam1 = param1;
104 param1 = newParam1;
105 if (eNotificationRequired())
106 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK__PARAM1, oldParam1, param1));
107 }
108
109 /**
110 * <!-- begin-user-doc -->
111 * <!-- end-user-doc -->
112 * @generated
113 */
114 public DefinedElement getParam2() {
115 if (param2 != null && param2.eIsProxy()) {
116 InternalEObject oldParam2 = (InternalEObject)param2;
117 param2 = (DefinedElement)eResolveProxy(oldParam2);
118 if (param2 != oldParam2) {
119 if (eNotificationRequired())
120 eNotify(new ENotificationImpl(this, Notification.RESOLVE, PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK__PARAM2, oldParam2, param2));
121 }
122 }
123 return param2;
124 }
125
126 /**
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @generated
130 */
131 public DefinedElement basicGetParam2() {
132 return param2;
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 public void setParam2(DefinedElement newParam2) {
141 DefinedElement oldParam2 = param2;
142 param2 = newParam2;
143 if (eNotificationRequired())
144 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK__PARAM2, oldParam2, param2));
145 }
146
147 /**
148 * <!-- begin-user-doc -->
149 * <!-- end-user-doc -->
150 * @generated
151 */
152 @Override
153 public Object eGet(int featureID, boolean resolve, boolean coreType) {
154 switch (featureID) {
155 case PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK__PARAM1:
156 if (resolve) return getParam1();
157 return basicGetParam1();
158 case PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK__PARAM2:
159 if (resolve) return getParam2();
160 return basicGetParam2();
161 }
162 return super.eGet(featureID, resolve, coreType);
163 }
164
165 /**
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @generated
169 */
170 @Override
171 public void eSet(int featureID, Object newValue) {
172 switch (featureID) {
173 case PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK__PARAM1:
174 setParam1((DefinedElement)newValue);
175 return;
176 case PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK__PARAM2:
177 setParam2((DefinedElement)newValue);
178 return;
179 }
180 super.eSet(featureID, newValue);
181 }
182
183 /**
184 * <!-- begin-user-doc -->
185 * <!-- end-user-doc -->
186 * @generated
187 */
188 @Override
189 public void eUnset(int featureID) {
190 switch (featureID) {
191 case PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK__PARAM1:
192 setParam1((DefinedElement)null);
193 return;
194 case PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK__PARAM2:
195 setParam2((DefinedElement)null);
196 return;
197 }
198 super.eUnset(featureID);
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public boolean eIsSet(int featureID) {
208 switch (featureID) {
209 case PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK__PARAM1:
210 return param1 != null;
211 case PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK__PARAM2:
212 return param2 != null;
213 }
214 return super.eIsSet(featureID);
215 }
216
217} //BinaryElementRelationLinkImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/NaryRelationLinkElementImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/NaryRelationLinkElementImpl.java
new file mode 100644
index 00000000..40e6549d
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/NaryRelationLinkElementImpl.java
@@ -0,0 +1,163 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl;
4
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLinkElement;
6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
7
8import org.eclipse.emf.common.notify.Notification;
9
10import org.eclipse.emf.ecore.EClass;
11
12import org.eclipse.emf.ecore.impl.ENotificationImpl;
13import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model object '<em><b>Nary Relation Link Element</b></em>'.
18 * <!-- end-user-doc -->
19 * <p>
20 * The following features are implemented:
21 * </p>
22 * <ul>
23 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.NaryRelationLinkElementImpl#getIndex <em>Index</em>}</li>
24 * </ul>
25 *
26 * @generated
27 */
28public class NaryRelationLinkElementImpl extends MinimalEObjectImpl.Container implements NaryRelationLinkElement {
29 /**
30 * The default value of the '{@link #getIndex() <em>Index</em>}' attribute.
31 * <!-- begin-user-doc -->
32 * <!-- end-user-doc -->
33 * @see #getIndex()
34 * @generated
35 * @ordered
36 */
37 protected static final int INDEX_EDEFAULT = 0;
38
39 /**
40 * The cached value of the '{@link #getIndex() <em>Index</em>}' attribute.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @see #getIndex()
44 * @generated
45 * @ordered
46 */
47 protected int index = INDEX_EDEFAULT;
48
49 /**
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @generated
53 */
54 protected NaryRelationLinkElementImpl() {
55 super();
56 }
57
58 /**
59 * <!-- begin-user-doc -->
60 * <!-- end-user-doc -->
61 * @generated
62 */
63 @Override
64 protected EClass eStaticClass() {
65 return PartialinterpretationPackage.Literals.NARY_RELATION_LINK_ELEMENT;
66 }
67
68 /**
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @generated
72 */
73 public int getIndex() {
74 return index;
75 }
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 public void setIndex(int newIndex) {
83 int oldIndex = index;
84 index = newIndex;
85 if (eNotificationRequired())
86 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.NARY_RELATION_LINK_ELEMENT__INDEX, oldIndex, index));
87 }
88
89 /**
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @generated
93 */
94 @Override
95 public Object eGet(int featureID, boolean resolve, boolean coreType) {
96 switch (featureID) {
97 case PartialinterpretationPackage.NARY_RELATION_LINK_ELEMENT__INDEX:
98 return getIndex();
99 }
100 return super.eGet(featureID, resolve, coreType);
101 }
102
103 /**
104 * <!-- begin-user-doc -->
105 * <!-- end-user-doc -->
106 * @generated
107 */
108 @Override
109 public void eSet(int featureID, Object newValue) {
110 switch (featureID) {
111 case PartialinterpretationPackage.NARY_RELATION_LINK_ELEMENT__INDEX:
112 setIndex((Integer)newValue);
113 return;
114 }
115 super.eSet(featureID, newValue);
116 }
117
118 /**
119 * <!-- begin-user-doc -->
120 * <!-- end-user-doc -->
121 * @generated
122 */
123 @Override
124 public void eUnset(int featureID) {
125 switch (featureID) {
126 case PartialinterpretationPackage.NARY_RELATION_LINK_ELEMENT__INDEX:
127 setIndex(INDEX_EDEFAULT);
128 return;
129 }
130 super.eUnset(featureID);
131 }
132
133 /**
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @generated
137 */
138 @Override
139 public boolean eIsSet(int featureID) {
140 switch (featureID) {
141 case PartialinterpretationPackage.NARY_RELATION_LINK_ELEMENT__INDEX:
142 return index != INDEX_EDEFAULT;
143 }
144 return super.eIsSet(featureID);
145 }
146
147 /**
148 * <!-- begin-user-doc -->
149 * <!-- end-user-doc -->
150 * @generated
151 */
152 @Override
153 public String toString() {
154 if (eIsProxy()) return super.toString();
155
156 StringBuffer result = new StringBuffer(super.toString());
157 result.append(" (index: ");
158 result.append(index);
159 result.append(')');
160 return result.toString();
161 }
162
163} //NaryRelationLinkElementImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/NaryRelationLinkImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/NaryRelationLinkImpl.java
new file mode 100644
index 00000000..f387ee06
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/NaryRelationLinkImpl.java
@@ -0,0 +1,150 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl;
4
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLink;
6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLinkElement;
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
8
9import java.util.Collection;
10
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.common.util.EList;
14
15import org.eclipse.emf.ecore.EClass;
16import org.eclipse.emf.ecore.InternalEObject;
17
18import org.eclipse.emf.ecore.util.EObjectContainmentEList;
19import org.eclipse.emf.ecore.util.InternalEList;
20
21/**
22 * <!-- begin-user-doc -->
23 * An implementation of the model object '<em><b>Nary Relation Link</b></em>'.
24 * <!-- end-user-doc -->
25 * <p>
26 * The following features are implemented:
27 * </p>
28 * <ul>
29 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.NaryRelationLinkImpl#getElements <em>Elements</em>}</li>
30 * </ul>
31 *
32 * @generated
33 */
34public class NaryRelationLinkImpl extends RelationLinkImpl implements NaryRelationLink {
35 /**
36 * The cached value of the '{@link #getElements() <em>Elements</em>}' containment reference list.
37 * <!-- begin-user-doc -->
38 * <!-- end-user-doc -->
39 * @see #getElements()
40 * @generated
41 * @ordered
42 */
43 protected EList<NaryRelationLinkElement> elements;
44
45 /**
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @generated
49 */
50 protected NaryRelationLinkImpl() {
51 super();
52 }
53
54 /**
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @generated
58 */
59 @Override
60 protected EClass eStaticClass() {
61 return PartialinterpretationPackage.Literals.NARY_RELATION_LINK;
62 }
63
64 /**
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @generated
68 */
69 public EList<NaryRelationLinkElement> getElements() {
70 if (elements == null) {
71 elements = new EObjectContainmentEList<NaryRelationLinkElement>(NaryRelationLinkElement.class, this, PartialinterpretationPackage.NARY_RELATION_LINK__ELEMENTS);
72 }
73 return elements;
74 }
75
76 /**
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @generated
80 */
81 @Override
82 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
83 switch (featureID) {
84 case PartialinterpretationPackage.NARY_RELATION_LINK__ELEMENTS:
85 return ((InternalEList<?>)getElements()).basicRemove(otherEnd, msgs);
86 }
87 return super.eInverseRemove(otherEnd, featureID, msgs);
88 }
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 @Override
96 public Object eGet(int featureID, boolean resolve, boolean coreType) {
97 switch (featureID) {
98 case PartialinterpretationPackage.NARY_RELATION_LINK__ELEMENTS:
99 return getElements();
100 }
101 return super.eGet(featureID, resolve, coreType);
102 }
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 @SuppressWarnings("unchecked")
110 @Override
111 public void eSet(int featureID, Object newValue) {
112 switch (featureID) {
113 case PartialinterpretationPackage.NARY_RELATION_LINK__ELEMENTS:
114 getElements().clear();
115 getElements().addAll((Collection<? extends NaryRelationLinkElement>)newValue);
116 return;
117 }
118 super.eSet(featureID, newValue);
119 }
120
121 /**
122 * <!-- begin-user-doc -->
123 * <!-- end-user-doc -->
124 * @generated
125 */
126 @Override
127 public void eUnset(int featureID) {
128 switch (featureID) {
129 case PartialinterpretationPackage.NARY_RELATION_LINK__ELEMENTS:
130 getElements().clear();
131 return;
132 }
133 super.eUnset(featureID);
134 }
135
136 /**
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @generated
140 */
141 @Override
142 public boolean eIsSet(int featureID) {
143 switch (featureID) {
144 case PartialinterpretationPackage.NARY_RELATION_LINK__ELEMENTS:
145 return elements != null && !elements.isEmpty();
146 }
147 return super.eIsSet(featureID);
148 }
149
150} //NaryRelationLinkImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialConstantInterpretationImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialConstantInterpretationImpl.java
new file mode 100644
index 00000000..81b2ce8d
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialConstantInterpretationImpl.java
@@ -0,0 +1,158 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration;
6
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation;
8import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
9
10import org.eclipse.emf.common.notify.Notification;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
17
18/**
19 * <!-- begin-user-doc -->
20 * An implementation of the model object '<em><b>Partial Constant Interpretation</b></em>'.
21 * <!-- end-user-doc -->
22 * <p>
23 * The following features are implemented:
24 * </p>
25 * <ul>
26 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialConstantInterpretationImpl#getInterpretationOf <em>Interpretation Of</em>}</li>
27 * </ul>
28 *
29 * @generated
30 */
31public class PartialConstantInterpretationImpl extends MinimalEObjectImpl.Container implements PartialConstantInterpretation {
32 /**
33 * The cached value of the '{@link #getInterpretationOf() <em>Interpretation Of</em>}' reference.
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @see #getInterpretationOf()
37 * @generated
38 * @ordered
39 */
40 protected ConstantDeclaration interpretationOf;
41
42 /**
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @generated
46 */
47 protected PartialConstantInterpretationImpl() {
48 super();
49 }
50
51 /**
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @generated
55 */
56 @Override
57 protected EClass eStaticClass() {
58 return PartialinterpretationPackage.Literals.PARTIAL_CONSTANT_INTERPRETATION;
59 }
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 public ConstantDeclaration getInterpretationOf() {
67 if (interpretationOf != null && interpretationOf.eIsProxy()) {
68 InternalEObject oldInterpretationOf = (InternalEObject)interpretationOf;
69 interpretationOf = (ConstantDeclaration)eResolveProxy(oldInterpretationOf);
70 if (interpretationOf != oldInterpretationOf) {
71 if (eNotificationRequired())
72 eNotify(new ENotificationImpl(this, Notification.RESOLVE, PartialinterpretationPackage.PARTIAL_CONSTANT_INTERPRETATION__INTERPRETATION_OF, oldInterpretationOf, interpretationOf));
73 }
74 }
75 return interpretationOf;
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 public ConstantDeclaration basicGetInterpretationOf() {
84 return interpretationOf;
85 }
86
87 /**
88 * <!-- begin-user-doc -->
89 * <!-- end-user-doc -->
90 * @generated
91 */
92 public void setInterpretationOf(ConstantDeclaration newInterpretationOf) {
93 ConstantDeclaration oldInterpretationOf = interpretationOf;
94 interpretationOf = newInterpretationOf;
95 if (eNotificationRequired())
96 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_CONSTANT_INTERPRETATION__INTERPRETATION_OF, oldInterpretationOf, interpretationOf));
97 }
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 @Override
105 public Object eGet(int featureID, boolean resolve, boolean coreType) {
106 switch (featureID) {
107 case PartialinterpretationPackage.PARTIAL_CONSTANT_INTERPRETATION__INTERPRETATION_OF:
108 if (resolve) return getInterpretationOf();
109 return basicGetInterpretationOf();
110 }
111 return super.eGet(featureID, resolve, coreType);
112 }
113
114 /**
115 * <!-- begin-user-doc -->
116 * <!-- end-user-doc -->
117 * @generated
118 */
119 @Override
120 public void eSet(int featureID, Object newValue) {
121 switch (featureID) {
122 case PartialinterpretationPackage.PARTIAL_CONSTANT_INTERPRETATION__INTERPRETATION_OF:
123 setInterpretationOf((ConstantDeclaration)newValue);
124 return;
125 }
126 super.eSet(featureID, newValue);
127 }
128
129 /**
130 * <!-- begin-user-doc -->
131 * <!-- end-user-doc -->
132 * @generated
133 */
134 @Override
135 public void eUnset(int featureID) {
136 switch (featureID) {
137 case PartialinterpretationPackage.PARTIAL_CONSTANT_INTERPRETATION__INTERPRETATION_OF:
138 setInterpretationOf((ConstantDeclaration)null);
139 return;
140 }
141 super.eUnset(featureID);
142 }
143
144 /**
145 * <!-- begin-user-doc -->
146 * <!-- end-user-doc -->
147 * @generated
148 */
149 @Override
150 public boolean eIsSet(int featureID) {
151 switch (featureID) {
152 case PartialinterpretationPackage.PARTIAL_CONSTANT_INTERPRETATION__INTERPRETATION_OF:
153 return interpretationOf != null;
154 }
155 return super.eIsSet(featureID);
156 }
157
158} //PartialConstantInterpretationImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialFunctionInterpretationImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialFunctionInterpretationImpl.java
new file mode 100644
index 00000000..2d361e8e
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialFunctionInterpretationImpl.java
@@ -0,0 +1,158 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDeclaration;
6
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation;
8import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
9
10import org.eclipse.emf.common.notify.Notification;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
17
18/**
19 * <!-- begin-user-doc -->
20 * An implementation of the model object '<em><b>Partial Function Interpretation</b></em>'.
21 * <!-- end-user-doc -->
22 * <p>
23 * The following features are implemented:
24 * </p>
25 * <ul>
26 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialFunctionInterpretationImpl#getInterpretationOf <em>Interpretation Of</em>}</li>
27 * </ul>
28 *
29 * @generated
30 */
31public class PartialFunctionInterpretationImpl extends MinimalEObjectImpl.Container implements PartialFunctionInterpretation {
32 /**
33 * The cached value of the '{@link #getInterpretationOf() <em>Interpretation Of</em>}' reference.
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @see #getInterpretationOf()
37 * @generated
38 * @ordered
39 */
40 protected FunctionDeclaration interpretationOf;
41
42 /**
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @generated
46 */
47 protected PartialFunctionInterpretationImpl() {
48 super();
49 }
50
51 /**
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @generated
55 */
56 @Override
57 protected EClass eStaticClass() {
58 return PartialinterpretationPackage.Literals.PARTIAL_FUNCTION_INTERPRETATION;
59 }
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 public FunctionDeclaration getInterpretationOf() {
67 if (interpretationOf != null && interpretationOf.eIsProxy()) {
68 InternalEObject oldInterpretationOf = (InternalEObject)interpretationOf;
69 interpretationOf = (FunctionDeclaration)eResolveProxy(oldInterpretationOf);
70 if (interpretationOf != oldInterpretationOf) {
71 if (eNotificationRequired())
72 eNotify(new ENotificationImpl(this, Notification.RESOLVE, PartialinterpretationPackage.PARTIAL_FUNCTION_INTERPRETATION__INTERPRETATION_OF, oldInterpretationOf, interpretationOf));
73 }
74 }
75 return interpretationOf;
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 public FunctionDeclaration basicGetInterpretationOf() {
84 return interpretationOf;
85 }
86
87 /**
88 * <!-- begin-user-doc -->
89 * <!-- end-user-doc -->
90 * @generated
91 */
92 public void setInterpretationOf(FunctionDeclaration newInterpretationOf) {
93 FunctionDeclaration oldInterpretationOf = interpretationOf;
94 interpretationOf = newInterpretationOf;
95 if (eNotificationRequired())
96 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_FUNCTION_INTERPRETATION__INTERPRETATION_OF, oldInterpretationOf, interpretationOf));
97 }
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 @Override
105 public Object eGet(int featureID, boolean resolve, boolean coreType) {
106 switch (featureID) {
107 case PartialinterpretationPackage.PARTIAL_FUNCTION_INTERPRETATION__INTERPRETATION_OF:
108 if (resolve) return getInterpretationOf();
109 return basicGetInterpretationOf();
110 }
111 return super.eGet(featureID, resolve, coreType);
112 }
113
114 /**
115 * <!-- begin-user-doc -->
116 * <!-- end-user-doc -->
117 * @generated
118 */
119 @Override
120 public void eSet(int featureID, Object newValue) {
121 switch (featureID) {
122 case PartialinterpretationPackage.PARTIAL_FUNCTION_INTERPRETATION__INTERPRETATION_OF:
123 setInterpretationOf((FunctionDeclaration)newValue);
124 return;
125 }
126 super.eSet(featureID, newValue);
127 }
128
129 /**
130 * <!-- begin-user-doc -->
131 * <!-- end-user-doc -->
132 * @generated
133 */
134 @Override
135 public void eUnset(int featureID) {
136 switch (featureID) {
137 case PartialinterpretationPackage.PARTIAL_FUNCTION_INTERPRETATION__INTERPRETATION_OF:
138 setInterpretationOf((FunctionDeclaration)null);
139 return;
140 }
141 super.eUnset(featureID);
142 }
143
144 /**
145 * <!-- begin-user-doc -->
146 * <!-- end-user-doc -->
147 * @generated
148 */
149 @Override
150 public boolean eIsSet(int featureID) {
151 switch (featureID) {
152 case PartialinterpretationPackage.PARTIAL_FUNCTION_INTERPRETATION__INTERPRETATION_OF:
153 return interpretationOf != null;
154 }
155 return super.eIsSet(featureID);
156 }
157
158} //PartialFunctionInterpretationImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialInterpretationImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialInterpretationImpl.java
new file mode 100644
index 00000000..09690c79
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialInterpretationImpl.java
@@ -0,0 +1,619 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement;
6
7import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem;
8
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation;
10import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation;
11import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation;
12import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation;
13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation;
14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
15
16import java.util.Collection;
17
18import org.eclipse.emf.common.notify.Notification;
19import org.eclipse.emf.common.notify.NotificationChain;
20
21import org.eclipse.emf.common.util.EList;
22
23import org.eclipse.emf.ecore.EClass;
24import org.eclipse.emf.ecore.InternalEObject;
25
26import org.eclipse.emf.ecore.impl.ENotificationImpl;
27import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
28
29import org.eclipse.emf.ecore.util.EObjectContainmentEList;
30import org.eclipse.emf.ecore.util.InternalEList;
31
32/**
33 * <!-- begin-user-doc -->
34 * An implementation of the model object '<em><b>Partial Interpretation</b></em>'.
35 * <!-- end-user-doc -->
36 * <p>
37 * The following features are implemented:
38 * </p>
39 * <ul>
40 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl#getProblem <em>Problem</em>}</li>
41 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl#getPartialconstantinterpretation <em>Partialconstantinterpretation</em>}</li>
42 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl#getPartialrelationinterpretation <em>Partialrelationinterpretation</em>}</li>
43 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl#getPartialfunctioninterpretation <em>Partialfunctioninterpretation</em>}</li>
44 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl#getNewElements <em>New Elements</em>}</li>
45 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl#getPartialtypeinterpratation <em>Partialtypeinterpratation</em>}</li>
46 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl#getMinNewElements <em>Min New Elements</em>}</li>
47 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl#getMaxNewElements <em>Max New Elements</em>}</li>
48 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl#getOpenWorldElementPrototype <em>Open World Element Prototype</em>}</li>
49 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialInterpretationImpl#getProblemConainer <em>Problem Conainer</em>}</li>
50 * </ul>
51 *
52 * @generated
53 */
54public class PartialInterpretationImpl extends MinimalEObjectImpl.Container implements PartialInterpretation {
55 /**
56 * The cached value of the '{@link #getProblem() <em>Problem</em>}' reference.
57 * <!-- begin-user-doc -->
58 * <!-- end-user-doc -->
59 * @see #getProblem()
60 * @generated
61 * @ordered
62 */
63 protected LogicProblem problem;
64
65 /**
66 * The cached value of the '{@link #getPartialconstantinterpretation() <em>Partialconstantinterpretation</em>}' containment reference list.
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @see #getPartialconstantinterpretation()
70 * @generated
71 * @ordered
72 */
73 protected EList<PartialConstantInterpretation> partialconstantinterpretation;
74
75 /**
76 * The cached value of the '{@link #getPartialrelationinterpretation() <em>Partialrelationinterpretation</em>}' containment reference list.
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @see #getPartialrelationinterpretation()
80 * @generated
81 * @ordered
82 */
83 protected EList<PartialRelationInterpretation> partialrelationinterpretation;
84
85 /**
86 * The cached value of the '{@link #getPartialfunctioninterpretation() <em>Partialfunctioninterpretation</em>}' containment reference list.
87 * <!-- begin-user-doc -->
88 * <!-- end-user-doc -->
89 * @see #getPartialfunctioninterpretation()
90 * @generated
91 * @ordered
92 */
93 protected EList<PartialFunctionInterpretation> partialfunctioninterpretation;
94
95 /**
96 * The cached value of the '{@link #getNewElements() <em>New Elements</em>}' containment reference list.
97 * <!-- begin-user-doc -->
98 * <!-- end-user-doc -->
99 * @see #getNewElements()
100 * @generated
101 * @ordered
102 */
103 protected EList<DefinedElement> newElements;
104
105 /**
106 * The cached value of the '{@link #getPartialtypeinterpratation() <em>Partialtypeinterpratation</em>}' containment reference list.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @see #getPartialtypeinterpratation()
110 * @generated
111 * @ordered
112 */
113 protected EList<PartialTypeInterpratation> partialtypeinterpratation;
114
115 /**
116 * The default value of the '{@link #getMinNewElements() <em>Min New Elements</em>}' attribute.
117 * <!-- begin-user-doc -->
118 * <!-- end-user-doc -->
119 * @see #getMinNewElements()
120 * @generated
121 * @ordered
122 */
123 protected static final int MIN_NEW_ELEMENTS_EDEFAULT = 0;
124
125 /**
126 * The cached value of the '{@link #getMinNewElements() <em>Min New Elements</em>}' attribute.
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @see #getMinNewElements()
130 * @generated
131 * @ordered
132 */
133 protected int minNewElements = MIN_NEW_ELEMENTS_EDEFAULT;
134
135 /**
136 * The default value of the '{@link #getMaxNewElements() <em>Max New Elements</em>}' attribute.
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @see #getMaxNewElements()
140 * @generated
141 * @ordered
142 */
143 protected static final int MAX_NEW_ELEMENTS_EDEFAULT = 0;
144
145 /**
146 * The cached value of the '{@link #getMaxNewElements() <em>Max New Elements</em>}' attribute.
147 * <!-- begin-user-doc -->
148 * <!-- end-user-doc -->
149 * @see #getMaxNewElements()
150 * @generated
151 * @ordered
152 */
153 protected int maxNewElements = MAX_NEW_ELEMENTS_EDEFAULT;
154
155 /**
156 * The cached value of the '{@link #getOpenWorldElementPrototype() <em>Open World Element Prototype</em>}' containment reference.
157 * <!-- begin-user-doc -->
158 * <!-- end-user-doc -->
159 * @see #getOpenWorldElementPrototype()
160 * @generated
161 * @ordered
162 */
163 protected DefinedElement openWorldElementPrototype;
164
165 /**
166 * The cached value of the '{@link #getProblemConainer() <em>Problem Conainer</em>}' containment reference.
167 * <!-- begin-user-doc -->
168 * <!-- end-user-doc -->
169 * @see #getProblemConainer()
170 * @generated
171 * @ordered
172 */
173 protected LogicProblem problemConainer;
174
175 /**
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @generated
179 */
180 protected PartialInterpretationImpl() {
181 super();
182 }
183
184 /**
185 * <!-- begin-user-doc -->
186 * <!-- end-user-doc -->
187 * @generated
188 */
189 @Override
190 protected EClass eStaticClass() {
191 return PartialinterpretationPackage.Literals.PARTIAL_INTERPRETATION;
192 }
193
194 /**
195 * <!-- begin-user-doc -->
196 * <!-- end-user-doc -->
197 * @generated
198 */
199 public LogicProblem getProblem() {
200 if (problem != null && problem.eIsProxy()) {
201 InternalEObject oldProblem = (InternalEObject)problem;
202 problem = (LogicProblem)eResolveProxy(oldProblem);
203 if (problem != oldProblem) {
204 if (eNotificationRequired())
205 eNotify(new ENotificationImpl(this, Notification.RESOLVE, PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM, oldProblem, problem));
206 }
207 }
208 return problem;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 public LogicProblem basicGetProblem() {
217 return problem;
218 }
219
220 /**
221 * <!-- begin-user-doc -->
222 * <!-- end-user-doc -->
223 * @generated
224 */
225 public void setProblem(LogicProblem newProblem) {
226 LogicProblem oldProblem = problem;
227 problem = newProblem;
228 if (eNotificationRequired())
229 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM, oldProblem, problem));
230 }
231
232 /**
233 * <!-- begin-user-doc -->
234 * <!-- end-user-doc -->
235 * @generated
236 */
237 public EList<PartialConstantInterpretation> getPartialconstantinterpretation() {
238 if (partialconstantinterpretation == null) {
239 partialconstantinterpretation = new EObjectContainmentEList<PartialConstantInterpretation>(PartialConstantInterpretation.class, this, PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALCONSTANTINTERPRETATION);
240 }
241 return partialconstantinterpretation;
242 }
243
244 /**
245 * <!-- begin-user-doc -->
246 * <!-- end-user-doc -->
247 * @generated
248 */
249 public EList<PartialRelationInterpretation> getPartialrelationinterpretation() {
250 if (partialrelationinterpretation == null) {
251 partialrelationinterpretation = new EObjectContainmentEList<PartialRelationInterpretation>(PartialRelationInterpretation.class, this, PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALRELATIONINTERPRETATION);
252 }
253 return partialrelationinterpretation;
254 }
255
256 /**
257 * <!-- begin-user-doc -->
258 * <!-- end-user-doc -->
259 * @generated
260 */
261 public EList<PartialFunctionInterpretation> getPartialfunctioninterpretation() {
262 if (partialfunctioninterpretation == null) {
263 partialfunctioninterpretation = new EObjectContainmentEList<PartialFunctionInterpretation>(PartialFunctionInterpretation.class, this, PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALFUNCTIONINTERPRETATION);
264 }
265 return partialfunctioninterpretation;
266 }
267
268 /**
269 * <!-- begin-user-doc -->
270 * <!-- end-user-doc -->
271 * @generated
272 */
273 public EList<DefinedElement> getNewElements() {
274 if (newElements == null) {
275 newElements = new EObjectContainmentEList<DefinedElement>(DefinedElement.class, this, PartialinterpretationPackage.PARTIAL_INTERPRETATION__NEW_ELEMENTS);
276 }
277 return newElements;
278 }
279
280 /**
281 * <!-- begin-user-doc -->
282 * <!-- end-user-doc -->
283 * @generated
284 */
285 public EList<PartialTypeInterpratation> getPartialtypeinterpratation() {
286 if (partialtypeinterpratation == null) {
287 partialtypeinterpratation = new EObjectContainmentEList<PartialTypeInterpratation>(PartialTypeInterpratation.class, this, PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALTYPEINTERPRATATION);
288 }
289 return partialtypeinterpratation;
290 }
291
292 /**
293 * <!-- begin-user-doc -->
294 * <!-- end-user-doc -->
295 * @generated
296 */
297 public int getMinNewElements() {
298 return minNewElements;
299 }
300
301 /**
302 * <!-- begin-user-doc -->
303 * <!-- end-user-doc -->
304 * @generated
305 */
306 public void setMinNewElements(int newMinNewElements) {
307 int oldMinNewElements = minNewElements;
308 minNewElements = newMinNewElements;
309 if (eNotificationRequired())
310 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_INTERPRETATION__MIN_NEW_ELEMENTS, oldMinNewElements, minNewElements));
311 }
312
313 /**
314 * <!-- begin-user-doc -->
315 * <!-- end-user-doc -->
316 * @generated
317 */
318 public int getMaxNewElements() {
319 return maxNewElements;
320 }
321
322 /**
323 * <!-- begin-user-doc -->
324 * <!-- end-user-doc -->
325 * @generated
326 */
327 public void setMaxNewElements(int newMaxNewElements) {
328 int oldMaxNewElements = maxNewElements;
329 maxNewElements = newMaxNewElements;
330 if (eNotificationRequired())
331 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_INTERPRETATION__MAX_NEW_ELEMENTS, oldMaxNewElements, maxNewElements));
332 }
333
334 /**
335 * <!-- begin-user-doc -->
336 * <!-- end-user-doc -->
337 * @generated
338 */
339 public DefinedElement getOpenWorldElementPrototype() {
340 return openWorldElementPrototype;
341 }
342
343 /**
344 * <!-- begin-user-doc -->
345 * <!-- end-user-doc -->
346 * @generated
347 */
348 public NotificationChain basicSetOpenWorldElementPrototype(DefinedElement newOpenWorldElementPrototype, NotificationChain msgs) {
349 DefinedElement oldOpenWorldElementPrototype = openWorldElementPrototype;
350 openWorldElementPrototype = newOpenWorldElementPrototype;
351 if (eNotificationRequired()) {
352 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_INTERPRETATION__OPEN_WORLD_ELEMENT_PROTOTYPE, oldOpenWorldElementPrototype, newOpenWorldElementPrototype);
353 if (msgs == null) msgs = notification; else msgs.add(notification);
354 }
355 return msgs;
356 }
357
358 /**
359 * <!-- begin-user-doc -->
360 * <!-- end-user-doc -->
361 * @generated
362 */
363 public void setOpenWorldElementPrototype(DefinedElement newOpenWorldElementPrototype) {
364 if (newOpenWorldElementPrototype != openWorldElementPrototype) {
365 NotificationChain msgs = null;
366 if (openWorldElementPrototype != null)
367 msgs = ((InternalEObject)openWorldElementPrototype).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PartialinterpretationPackage.PARTIAL_INTERPRETATION__OPEN_WORLD_ELEMENT_PROTOTYPE, null, msgs);
368 if (newOpenWorldElementPrototype != null)
369 msgs = ((InternalEObject)newOpenWorldElementPrototype).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PartialinterpretationPackage.PARTIAL_INTERPRETATION__OPEN_WORLD_ELEMENT_PROTOTYPE, null, msgs);
370 msgs = basicSetOpenWorldElementPrototype(newOpenWorldElementPrototype, msgs);
371 if (msgs != null) msgs.dispatch();
372 }
373 else if (eNotificationRequired())
374 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_INTERPRETATION__OPEN_WORLD_ELEMENT_PROTOTYPE, newOpenWorldElementPrototype, newOpenWorldElementPrototype));
375 }
376
377 /**
378 * <!-- begin-user-doc -->
379 * <!-- end-user-doc -->
380 * @generated
381 */
382 public LogicProblem getProblemConainer() {
383 return problemConainer;
384 }
385
386 /**
387 * <!-- begin-user-doc -->
388 * <!-- end-user-doc -->
389 * @generated
390 */
391 public NotificationChain basicSetProblemConainer(LogicProblem newProblemConainer, NotificationChain msgs) {
392 LogicProblem oldProblemConainer = problemConainer;
393 problemConainer = newProblemConainer;
394 if (eNotificationRequired()) {
395 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM_CONAINER, oldProblemConainer, newProblemConainer);
396 if (msgs == null) msgs = notification; else msgs.add(notification);
397 }
398 return msgs;
399 }
400
401 /**
402 * <!-- begin-user-doc -->
403 * <!-- end-user-doc -->
404 * @generated
405 */
406 public void setProblemConainer(LogicProblem newProblemConainer) {
407 if (newProblemConainer != problemConainer) {
408 NotificationChain msgs = null;
409 if (problemConainer != null)
410 msgs = ((InternalEObject)problemConainer).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM_CONAINER, null, msgs);
411 if (newProblemConainer != null)
412 msgs = ((InternalEObject)newProblemConainer).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM_CONAINER, null, msgs);
413 msgs = basicSetProblemConainer(newProblemConainer, msgs);
414 if (msgs != null) msgs.dispatch();
415 }
416 else if (eNotificationRequired())
417 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM_CONAINER, newProblemConainer, newProblemConainer));
418 }
419
420 /**
421 * <!-- begin-user-doc -->
422 * <!-- end-user-doc -->
423 * @generated
424 */
425 @Override
426 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
427 switch (featureID) {
428 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALCONSTANTINTERPRETATION:
429 return ((InternalEList<?>)getPartialconstantinterpretation()).basicRemove(otherEnd, msgs);
430 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALRELATIONINTERPRETATION:
431 return ((InternalEList<?>)getPartialrelationinterpretation()).basicRemove(otherEnd, msgs);
432 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALFUNCTIONINTERPRETATION:
433 return ((InternalEList<?>)getPartialfunctioninterpretation()).basicRemove(otherEnd, msgs);
434 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__NEW_ELEMENTS:
435 return ((InternalEList<?>)getNewElements()).basicRemove(otherEnd, msgs);
436 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALTYPEINTERPRATATION:
437 return ((InternalEList<?>)getPartialtypeinterpratation()).basicRemove(otherEnd, msgs);
438 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__OPEN_WORLD_ELEMENT_PROTOTYPE:
439 return basicSetOpenWorldElementPrototype(null, msgs);
440 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM_CONAINER:
441 return basicSetProblemConainer(null, msgs);
442 }
443 return super.eInverseRemove(otherEnd, featureID, msgs);
444 }
445
446 /**
447 * <!-- begin-user-doc -->
448 * <!-- end-user-doc -->
449 * @generated
450 */
451 @Override
452 public Object eGet(int featureID, boolean resolve, boolean coreType) {
453 switch (featureID) {
454 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM:
455 if (resolve) return getProblem();
456 return basicGetProblem();
457 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALCONSTANTINTERPRETATION:
458 return getPartialconstantinterpretation();
459 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALRELATIONINTERPRETATION:
460 return getPartialrelationinterpretation();
461 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALFUNCTIONINTERPRETATION:
462 return getPartialfunctioninterpretation();
463 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__NEW_ELEMENTS:
464 return getNewElements();
465 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALTYPEINTERPRATATION:
466 return getPartialtypeinterpratation();
467 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__MIN_NEW_ELEMENTS:
468 return getMinNewElements();
469 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__MAX_NEW_ELEMENTS:
470 return getMaxNewElements();
471 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__OPEN_WORLD_ELEMENT_PROTOTYPE:
472 return getOpenWorldElementPrototype();
473 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM_CONAINER:
474 return getProblemConainer();
475 }
476 return super.eGet(featureID, resolve, coreType);
477 }
478
479 /**
480 * <!-- begin-user-doc -->
481 * <!-- end-user-doc -->
482 * @generated
483 */
484 @SuppressWarnings("unchecked")
485 @Override
486 public void eSet(int featureID, Object newValue) {
487 switch (featureID) {
488 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM:
489 setProblem((LogicProblem)newValue);
490 return;
491 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALCONSTANTINTERPRETATION:
492 getPartialconstantinterpretation().clear();
493 getPartialconstantinterpretation().addAll((Collection<? extends PartialConstantInterpretation>)newValue);
494 return;
495 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALRELATIONINTERPRETATION:
496 getPartialrelationinterpretation().clear();
497 getPartialrelationinterpretation().addAll((Collection<? extends PartialRelationInterpretation>)newValue);
498 return;
499 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALFUNCTIONINTERPRETATION:
500 getPartialfunctioninterpretation().clear();
501 getPartialfunctioninterpretation().addAll((Collection<? extends PartialFunctionInterpretation>)newValue);
502 return;
503 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__NEW_ELEMENTS:
504 getNewElements().clear();
505 getNewElements().addAll((Collection<? extends DefinedElement>)newValue);
506 return;
507 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALTYPEINTERPRATATION:
508 getPartialtypeinterpratation().clear();
509 getPartialtypeinterpratation().addAll((Collection<? extends PartialTypeInterpratation>)newValue);
510 return;
511 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__MIN_NEW_ELEMENTS:
512 setMinNewElements((Integer)newValue);
513 return;
514 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__MAX_NEW_ELEMENTS:
515 setMaxNewElements((Integer)newValue);
516 return;
517 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__OPEN_WORLD_ELEMENT_PROTOTYPE:
518 setOpenWorldElementPrototype((DefinedElement)newValue);
519 return;
520 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM_CONAINER:
521 setProblemConainer((LogicProblem)newValue);
522 return;
523 }
524 super.eSet(featureID, newValue);
525 }
526
527 /**
528 * <!-- begin-user-doc -->
529 * <!-- end-user-doc -->
530 * @generated
531 */
532 @Override
533 public void eUnset(int featureID) {
534 switch (featureID) {
535 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM:
536 setProblem((LogicProblem)null);
537 return;
538 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALCONSTANTINTERPRETATION:
539 getPartialconstantinterpretation().clear();
540 return;
541 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALRELATIONINTERPRETATION:
542 getPartialrelationinterpretation().clear();
543 return;
544 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALFUNCTIONINTERPRETATION:
545 getPartialfunctioninterpretation().clear();
546 return;
547 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__NEW_ELEMENTS:
548 getNewElements().clear();
549 return;
550 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALTYPEINTERPRATATION:
551 getPartialtypeinterpratation().clear();
552 return;
553 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__MIN_NEW_ELEMENTS:
554 setMinNewElements(MIN_NEW_ELEMENTS_EDEFAULT);
555 return;
556 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__MAX_NEW_ELEMENTS:
557 setMaxNewElements(MAX_NEW_ELEMENTS_EDEFAULT);
558 return;
559 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__OPEN_WORLD_ELEMENT_PROTOTYPE:
560 setOpenWorldElementPrototype((DefinedElement)null);
561 return;
562 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM_CONAINER:
563 setProblemConainer((LogicProblem)null);
564 return;
565 }
566 super.eUnset(featureID);
567 }
568
569 /**
570 * <!-- begin-user-doc -->
571 * <!-- end-user-doc -->
572 * @generated
573 */
574 @Override
575 public boolean eIsSet(int featureID) {
576 switch (featureID) {
577 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM:
578 return problem != null;
579 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALCONSTANTINTERPRETATION:
580 return partialconstantinterpretation != null && !partialconstantinterpretation.isEmpty();
581 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALRELATIONINTERPRETATION:
582 return partialrelationinterpretation != null && !partialrelationinterpretation.isEmpty();
583 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALFUNCTIONINTERPRETATION:
584 return partialfunctioninterpretation != null && !partialfunctioninterpretation.isEmpty();
585 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__NEW_ELEMENTS:
586 return newElements != null && !newElements.isEmpty();
587 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PARTIALTYPEINTERPRATATION:
588 return partialtypeinterpratation != null && !partialtypeinterpratation.isEmpty();
589 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__MIN_NEW_ELEMENTS:
590 return minNewElements != MIN_NEW_ELEMENTS_EDEFAULT;
591 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__MAX_NEW_ELEMENTS:
592 return maxNewElements != MAX_NEW_ELEMENTS_EDEFAULT;
593 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__OPEN_WORLD_ELEMENT_PROTOTYPE:
594 return openWorldElementPrototype != null;
595 case PartialinterpretationPackage.PARTIAL_INTERPRETATION__PROBLEM_CONAINER:
596 return problemConainer != null;
597 }
598 return super.eIsSet(featureID);
599 }
600
601 /**
602 * <!-- begin-user-doc -->
603 * <!-- end-user-doc -->
604 * @generated
605 */
606 @Override
607 public String toString() {
608 if (eIsProxy()) return super.toString();
609
610 StringBuffer result = new StringBuffer(super.toString());
611 result.append(" (minNewElements: ");
612 result.append(minNewElements);
613 result.append(", maxNewElements: ");
614 result.append(maxNewElements);
615 result.append(')');
616 return result.toString();
617 }
618
619} //PartialInterpretationImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialRelationInterpretationImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialRelationInterpretationImpl.java
new file mode 100644
index 00000000..71aef9af
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialRelationInterpretationImpl.java
@@ -0,0 +1,337 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration;
6
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeReference;
8import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation;
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
10import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RelationLink;
11
12import java.util.Collection;
13
14import org.eclipse.emf.common.notify.Notification;
15import org.eclipse.emf.common.notify.NotificationChain;
16
17import org.eclipse.emf.common.util.EList;
18
19import org.eclipse.emf.ecore.EClass;
20import org.eclipse.emf.ecore.InternalEObject;
21
22import org.eclipse.emf.ecore.impl.ENotificationImpl;
23import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
24
25import org.eclipse.emf.ecore.util.EObjectContainmentEList;
26import org.eclipse.emf.ecore.util.InternalEList;
27
28/**
29 * <!-- begin-user-doc -->
30 * An implementation of the model object '<em><b>Partial Relation Interpretation</b></em>'.
31 * <!-- end-user-doc -->
32 * <p>
33 * The following features are implemented:
34 * </p>
35 * <ul>
36 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialRelationInterpretationImpl#getInterpretationOf <em>Interpretation Of</em>}</li>
37 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialRelationInterpretationImpl#getRelationlinks <em>Relationlinks</em>}</li>
38 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialRelationInterpretationImpl#getParam1 <em>Param1</em>}</li>
39 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialRelationInterpretationImpl#getParam2 <em>Param2</em>}</li>
40 * </ul>
41 *
42 * @generated
43 */
44public class PartialRelationInterpretationImpl extends MinimalEObjectImpl.Container implements PartialRelationInterpretation {
45 /**
46 * The cached value of the '{@link #getInterpretationOf() <em>Interpretation Of</em>}' reference.
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @see #getInterpretationOf()
50 * @generated
51 * @ordered
52 */
53 protected RelationDeclaration interpretationOf;
54
55 /**
56 * The cached value of the '{@link #getRelationlinks() <em>Relationlinks</em>}' containment reference list.
57 * <!-- begin-user-doc -->
58 * <!-- end-user-doc -->
59 * @see #getRelationlinks()
60 * @generated
61 * @ordered
62 */
63 protected EList<RelationLink> relationlinks;
64
65 /**
66 * The cached value of the '{@link #getParam1() <em>Param1</em>}' reference.
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @see #getParam1()
70 * @generated
71 * @ordered
72 */
73 protected TypeReference param1;
74
75 /**
76 * The cached value of the '{@link #getParam2() <em>Param2</em>}' reference.
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @see #getParam2()
80 * @generated
81 * @ordered
82 */
83 protected TypeReference param2;
84
85 /**
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @generated
89 */
90 protected PartialRelationInterpretationImpl() {
91 super();
92 }
93
94 /**
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @generated
98 */
99 @Override
100 protected EClass eStaticClass() {
101 return PartialinterpretationPackage.Literals.PARTIAL_RELATION_INTERPRETATION;
102 }
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 public RelationDeclaration getInterpretationOf() {
110 if (interpretationOf != null && interpretationOf.eIsProxy()) {
111 InternalEObject oldInterpretationOf = (InternalEObject)interpretationOf;
112 interpretationOf = (RelationDeclaration)eResolveProxy(oldInterpretationOf);
113 if (interpretationOf != oldInterpretationOf) {
114 if (eNotificationRequired())
115 eNotify(new ENotificationImpl(this, Notification.RESOLVE, PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__INTERPRETATION_OF, oldInterpretationOf, interpretationOf));
116 }
117 }
118 return interpretationOf;
119 }
120
121 /**
122 * <!-- begin-user-doc -->
123 * <!-- end-user-doc -->
124 * @generated
125 */
126 public RelationDeclaration basicGetInterpretationOf() {
127 return interpretationOf;
128 }
129
130 /**
131 * <!-- begin-user-doc -->
132 * <!-- end-user-doc -->
133 * @generated
134 */
135 public void setInterpretationOf(RelationDeclaration newInterpretationOf) {
136 RelationDeclaration oldInterpretationOf = interpretationOf;
137 interpretationOf = newInterpretationOf;
138 if (eNotificationRequired())
139 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__INTERPRETATION_OF, oldInterpretationOf, interpretationOf));
140 }
141
142 /**
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 */
147 public EList<RelationLink> getRelationlinks() {
148 if (relationlinks == null) {
149 relationlinks = new EObjectContainmentEList<RelationLink>(RelationLink.class, this, PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__RELATIONLINKS);
150 }
151 return relationlinks;
152 }
153
154 /**
155 * <!-- begin-user-doc -->
156 * <!-- end-user-doc -->
157 * @generated
158 */
159 public TypeReference getParam1() {
160 if (param1 != null && param1.eIsProxy()) {
161 InternalEObject oldParam1 = (InternalEObject)param1;
162 param1 = (TypeReference)eResolveProxy(oldParam1);
163 if (param1 != oldParam1) {
164 if (eNotificationRequired())
165 eNotify(new ENotificationImpl(this, Notification.RESOLVE, PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__PARAM1, oldParam1, param1));
166 }
167 }
168 return param1;
169 }
170
171 /**
172 * <!-- begin-user-doc -->
173 * <!-- end-user-doc -->
174 * @generated
175 */
176 public TypeReference basicGetParam1() {
177 return param1;
178 }
179
180 /**
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 */
185 public void setParam1(TypeReference newParam1) {
186 TypeReference oldParam1 = param1;
187 param1 = newParam1;
188 if (eNotificationRequired())
189 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__PARAM1, oldParam1, param1));
190 }
191
192 /**
193 * <!-- begin-user-doc -->
194 * <!-- end-user-doc -->
195 * @generated
196 */
197 public TypeReference getParam2() {
198 if (param2 != null && param2.eIsProxy()) {
199 InternalEObject oldParam2 = (InternalEObject)param2;
200 param2 = (TypeReference)eResolveProxy(oldParam2);
201 if (param2 != oldParam2) {
202 if (eNotificationRequired())
203 eNotify(new ENotificationImpl(this, Notification.RESOLVE, PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__PARAM2, oldParam2, param2));
204 }
205 }
206 return param2;
207 }
208
209 /**
210 * <!-- begin-user-doc -->
211 * <!-- end-user-doc -->
212 * @generated
213 */
214 public TypeReference basicGetParam2() {
215 return param2;
216 }
217
218 /**
219 * <!-- begin-user-doc -->
220 * <!-- end-user-doc -->
221 * @generated
222 */
223 public void setParam2(TypeReference newParam2) {
224 TypeReference oldParam2 = param2;
225 param2 = newParam2;
226 if (eNotificationRequired())
227 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__PARAM2, oldParam2, param2));
228 }
229
230 /**
231 * <!-- begin-user-doc -->
232 * <!-- end-user-doc -->
233 * @generated
234 */
235 @Override
236 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
237 switch (featureID) {
238 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__RELATIONLINKS:
239 return ((InternalEList<?>)getRelationlinks()).basicRemove(otherEnd, msgs);
240 }
241 return super.eInverseRemove(otherEnd, featureID, msgs);
242 }
243
244 /**
245 * <!-- begin-user-doc -->
246 * <!-- end-user-doc -->
247 * @generated
248 */
249 @Override
250 public Object eGet(int featureID, boolean resolve, boolean coreType) {
251 switch (featureID) {
252 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__INTERPRETATION_OF:
253 if (resolve) return getInterpretationOf();
254 return basicGetInterpretationOf();
255 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__RELATIONLINKS:
256 return getRelationlinks();
257 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__PARAM1:
258 if (resolve) return getParam1();
259 return basicGetParam1();
260 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__PARAM2:
261 if (resolve) return getParam2();
262 return basicGetParam2();
263 }
264 return super.eGet(featureID, resolve, coreType);
265 }
266
267 /**
268 * <!-- begin-user-doc -->
269 * <!-- end-user-doc -->
270 * @generated
271 */
272 @SuppressWarnings("unchecked")
273 @Override
274 public void eSet(int featureID, Object newValue) {
275 switch (featureID) {
276 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__INTERPRETATION_OF:
277 setInterpretationOf((RelationDeclaration)newValue);
278 return;
279 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__RELATIONLINKS:
280 getRelationlinks().clear();
281 getRelationlinks().addAll((Collection<? extends RelationLink>)newValue);
282 return;
283 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__PARAM1:
284 setParam1((TypeReference)newValue);
285 return;
286 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__PARAM2:
287 setParam2((TypeReference)newValue);
288 return;
289 }
290 super.eSet(featureID, newValue);
291 }
292
293 /**
294 * <!-- begin-user-doc -->
295 * <!-- end-user-doc -->
296 * @generated
297 */
298 @Override
299 public void eUnset(int featureID) {
300 switch (featureID) {
301 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__INTERPRETATION_OF:
302 setInterpretationOf((RelationDeclaration)null);
303 return;
304 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__RELATIONLINKS:
305 getRelationlinks().clear();
306 return;
307 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__PARAM1:
308 setParam1((TypeReference)null);
309 return;
310 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__PARAM2:
311 setParam2((TypeReference)null);
312 return;
313 }
314 super.eUnset(featureID);
315 }
316
317 /**
318 * <!-- begin-user-doc -->
319 * <!-- end-user-doc -->
320 * @generated
321 */
322 @Override
323 public boolean eIsSet(int featureID) {
324 switch (featureID) {
325 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__INTERPRETATION_OF:
326 return interpretationOf != null;
327 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__RELATIONLINKS:
328 return relationlinks != null && !relationlinks.isEmpty();
329 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__PARAM1:
330 return param1 != null;
331 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION__PARAM2:
332 return param2 != null;
333 }
334 return super.eIsSet(featureID);
335 }
336
337} //PartialRelationInterpretationImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialTypeInterpratationImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialTypeInterpratationImpl.java
new file mode 100644
index 00000000..1090aaf7
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialTypeInterpratationImpl.java
@@ -0,0 +1,231 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement;
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration;
7
8import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation;
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
10
11import java.util.Collection;
12import org.eclipse.emf.common.notify.Notification;
13
14import org.eclipse.emf.common.util.EList;
15import org.eclipse.emf.ecore.EClass;
16import org.eclipse.emf.ecore.InternalEObject;
17
18import org.eclipse.emf.ecore.impl.ENotificationImpl;
19import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
20import org.eclipse.emf.ecore.util.EObjectResolvingEList;
21
22/**
23 * <!-- begin-user-doc -->
24 * An implementation of the model object '<em><b>Partial Type Interpratation</b></em>'.
25 * <!-- end-user-doc -->
26 * <p>
27 * The following features are implemented:
28 * </p>
29 * <ul>
30 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialTypeInterpratationImpl#getInterpretationOf <em>Interpretation Of</em>}</li>
31 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialTypeInterpratationImpl#getElements <em>Elements</em>}</li>
32 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialTypeInterpratationImpl#getSupertypeInterpretation <em>Supertype Interpretation</em>}</li>
33 * </ul>
34 *
35 * @generated
36 */
37public class PartialTypeInterpratationImpl extends MinimalEObjectImpl.Container implements PartialTypeInterpratation {
38 /**
39 * The cached value of the '{@link #getInterpretationOf() <em>Interpretation Of</em>}' reference.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @see #getInterpretationOf()
43 * @generated
44 * @ordered
45 */
46 protected TypeDeclaration interpretationOf;
47
48 /**
49 * The cached value of the '{@link #getElements() <em>Elements</em>}' reference list.
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @see #getElements()
53 * @generated
54 * @ordered
55 */
56 protected EList<DefinedElement> elements;
57
58 /**
59 * The cached value of the '{@link #getSupertypeInterpretation() <em>Supertype Interpretation</em>}' reference list.
60 * <!-- begin-user-doc -->
61 * <!-- end-user-doc -->
62 * @see #getSupertypeInterpretation()
63 * @generated
64 * @ordered
65 */
66 protected EList<PartialTypeInterpratation> supertypeInterpretation;
67
68 /**
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @generated
72 */
73 protected PartialTypeInterpratationImpl() {
74 super();
75 }
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 @Override
83 protected EClass eStaticClass() {
84 return PartialinterpretationPackage.Literals.PARTIAL_TYPE_INTERPRATATION;
85 }
86
87 /**
88 * <!-- begin-user-doc -->
89 * <!-- end-user-doc -->
90 * @generated
91 */
92 public TypeDeclaration getInterpretationOf() {
93 if (interpretationOf != null && interpretationOf.eIsProxy()) {
94 InternalEObject oldInterpretationOf = (InternalEObject)interpretationOf;
95 interpretationOf = (TypeDeclaration)eResolveProxy(oldInterpretationOf);
96 if (interpretationOf != oldInterpretationOf) {
97 if (eNotificationRequired())
98 eNotify(new ENotificationImpl(this, Notification.RESOLVE, PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__INTERPRETATION_OF, oldInterpretationOf, interpretationOf));
99 }
100 }
101 return interpretationOf;
102 }
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 public TypeDeclaration basicGetInterpretationOf() {
110 return interpretationOf;
111 }
112
113 /**
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @generated
117 */
118 public void setInterpretationOf(TypeDeclaration newInterpretationOf) {
119 TypeDeclaration oldInterpretationOf = interpretationOf;
120 interpretationOf = newInterpretationOf;
121 if (eNotificationRequired())
122 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__INTERPRETATION_OF, oldInterpretationOf, interpretationOf));
123 }
124
125 /**
126 * <!-- begin-user-doc -->
127 * <!-- end-user-doc -->
128 * @generated
129 */
130 public EList<DefinedElement> getElements() {
131 if (elements == null) {
132 elements = new EObjectResolvingEList<DefinedElement>(DefinedElement.class, this, PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__ELEMENTS);
133 }
134 return elements;
135 }
136
137 /**
138 * <!-- begin-user-doc -->
139 * <!-- end-user-doc -->
140 * @generated
141 */
142 public EList<PartialTypeInterpratation> getSupertypeInterpretation() {
143 if (supertypeInterpretation == null) {
144 supertypeInterpretation = new EObjectResolvingEList<PartialTypeInterpratation>(PartialTypeInterpratation.class, this, PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__SUPERTYPE_INTERPRETATION);
145 }
146 return supertypeInterpretation;
147 }
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 @Override
155 public Object eGet(int featureID, boolean resolve, boolean coreType) {
156 switch (featureID) {
157 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__INTERPRETATION_OF:
158 if (resolve) return getInterpretationOf();
159 return basicGetInterpretationOf();
160 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__ELEMENTS:
161 return getElements();
162 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__SUPERTYPE_INTERPRETATION:
163 return getSupertypeInterpretation();
164 }
165 return super.eGet(featureID, resolve, coreType);
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 @SuppressWarnings("unchecked")
174 @Override
175 public void eSet(int featureID, Object newValue) {
176 switch (featureID) {
177 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__INTERPRETATION_OF:
178 setInterpretationOf((TypeDeclaration)newValue);
179 return;
180 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__ELEMENTS:
181 getElements().clear();
182 getElements().addAll((Collection<? extends DefinedElement>)newValue);
183 return;
184 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__SUPERTYPE_INTERPRETATION:
185 getSupertypeInterpretation().clear();
186 getSupertypeInterpretation().addAll((Collection<? extends PartialTypeInterpratation>)newValue);
187 return;
188 }
189 super.eSet(featureID, newValue);
190 }
191
192 /**
193 * <!-- begin-user-doc -->
194 * <!-- end-user-doc -->
195 * @generated
196 */
197 @Override
198 public void eUnset(int featureID) {
199 switch (featureID) {
200 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__INTERPRETATION_OF:
201 setInterpretationOf((TypeDeclaration)null);
202 return;
203 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__ELEMENTS:
204 getElements().clear();
205 return;
206 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__SUPERTYPE_INTERPRETATION:
207 getSupertypeInterpretation().clear();
208 return;
209 }
210 super.eUnset(featureID);
211 }
212
213 /**
214 * <!-- begin-user-doc -->
215 * <!-- end-user-doc -->
216 * @generated
217 */
218 @Override
219 public boolean eIsSet(int featureID) {
220 switch (featureID) {
221 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__INTERPRETATION_OF:
222 return interpretationOf != null;
223 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__ELEMENTS:
224 return elements != null && !elements.isEmpty();
225 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION__SUPERTYPE_INTERPRETATION:
226 return supertypeInterpretation != null && !supertypeInterpretation.isEmpty();
227 }
228 return super.eIsSet(featureID);
229 }
230
231} //PartialTypeInterpratationImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationFactoryImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationFactoryImpl.java
new file mode 100644
index 00000000..99ab7830
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationFactoryImpl.java
@@ -0,0 +1,183 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl;
4
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.*;
6
7import org.eclipse.emf.ecore.EClass;
8import org.eclipse.emf.ecore.EObject;
9import org.eclipse.emf.ecore.EPackage;
10
11import org.eclipse.emf.ecore.impl.EFactoryImpl;
12
13import org.eclipse.emf.ecore.plugin.EcorePlugin;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model <b>Factory</b>.
18 * <!-- end-user-doc -->
19 * @generated
20 */
21public class PartialinterpretationFactoryImpl extends EFactoryImpl implements PartialinterpretationFactory {
22 /**
23 * Creates the default factory implementation.
24 * <!-- begin-user-doc -->
25 * <!-- end-user-doc -->
26 * @generated
27 */
28 public static PartialinterpretationFactory init() {
29 try {
30 PartialinterpretationFactory thePartialinterpretationFactory = (PartialinterpretationFactory)EPackage.Registry.INSTANCE.getEFactory(PartialinterpretationPackage.eNS_URI);
31 if (thePartialinterpretationFactory != null) {
32 return thePartialinterpretationFactory;
33 }
34 }
35 catch (Exception exception) {
36 EcorePlugin.INSTANCE.log(exception);
37 }
38 return new PartialinterpretationFactoryImpl();
39 }
40
41 /**
42 * Creates an instance of the factory.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @generated
46 */
47 public PartialinterpretationFactoryImpl() {
48 super();
49 }
50
51 /**
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @generated
55 */
56 @Override
57 public EObject create(EClass eClass) {
58 switch (eClass.getClassifierID()) {
59 case PartialinterpretationPackage.PARTIAL_INTERPRETATION: return createPartialInterpretation();
60 case PartialinterpretationPackage.PARTIAL_CONSTANT_INTERPRETATION: return createPartialConstantInterpretation();
61 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION: return createPartialRelationInterpretation();
62 case PartialinterpretationPackage.PARTIAL_FUNCTION_INTERPRETATION: return createPartialFunctionInterpretation();
63 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION: return createPartialTypeInterpratation();
64 case PartialinterpretationPackage.UNARY_ELEMENT_RELATION_LINK: return createUnaryElementRelationLink();
65 case PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK: return createBinaryElementRelationLink();
66 case PartialinterpretationPackage.NARY_RELATION_LINK: return createNaryRelationLink();
67 case PartialinterpretationPackage.NARY_RELATION_LINK_ELEMENT: return createNaryRelationLinkElement();
68 default:
69 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
70 }
71 }
72
73 /**
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @generated
77 */
78 public PartialInterpretation createPartialInterpretation() {
79 PartialInterpretationImpl partialInterpretation = new PartialInterpretationImpl();
80 return partialInterpretation;
81 }
82
83 /**
84 * <!-- begin-user-doc -->
85 * <!-- end-user-doc -->
86 * @generated
87 */
88 public PartialConstantInterpretation createPartialConstantInterpretation() {
89 PartialConstantInterpretationImpl partialConstantInterpretation = new PartialConstantInterpretationImpl();
90 return partialConstantInterpretation;
91 }
92
93 /**
94 * <!-- begin-user-doc -->
95 * <!-- end-user-doc -->
96 * @generated
97 */
98 public PartialRelationInterpretation createPartialRelationInterpretation() {
99 PartialRelationInterpretationImpl partialRelationInterpretation = new PartialRelationInterpretationImpl();
100 return partialRelationInterpretation;
101 }
102
103 /**
104 * <!-- begin-user-doc -->
105 * <!-- end-user-doc -->
106 * @generated
107 */
108 public PartialFunctionInterpretation createPartialFunctionInterpretation() {
109 PartialFunctionInterpretationImpl partialFunctionInterpretation = new PartialFunctionInterpretationImpl();
110 return partialFunctionInterpretation;
111 }
112
113 /**
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @generated
117 */
118 public PartialTypeInterpratation createPartialTypeInterpratation() {
119 PartialTypeInterpratationImpl partialTypeInterpratation = new PartialTypeInterpratationImpl();
120 return partialTypeInterpratation;
121 }
122
123 /**
124 * <!-- begin-user-doc -->
125 * <!-- end-user-doc -->
126 * @generated
127 */
128 public UnaryElementRelationLink createUnaryElementRelationLink() {
129 UnaryElementRelationLinkImpl unaryElementRelationLink = new UnaryElementRelationLinkImpl();
130 return unaryElementRelationLink;
131 }
132
133 /**
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @generated
137 */
138 public BinaryElementRelationLink createBinaryElementRelationLink() {
139 BinaryElementRelationLinkImpl binaryElementRelationLink = new BinaryElementRelationLinkImpl();
140 return binaryElementRelationLink;
141 }
142
143 /**
144 * <!-- begin-user-doc -->
145 * <!-- end-user-doc -->
146 * @generated
147 */
148 public NaryRelationLink createNaryRelationLink() {
149 NaryRelationLinkImpl naryRelationLink = new NaryRelationLinkImpl();
150 return naryRelationLink;
151 }
152
153 /**
154 * <!-- begin-user-doc -->
155 * <!-- end-user-doc -->
156 * @generated
157 */
158 public NaryRelationLinkElement createNaryRelationLinkElement() {
159 NaryRelationLinkElementImpl naryRelationLinkElement = new NaryRelationLinkElementImpl();
160 return naryRelationLinkElement;
161 }
162
163 /**
164 * <!-- begin-user-doc -->
165 * <!-- end-user-doc -->
166 * @generated
167 */
168 public PartialinterpretationPackage getPartialinterpretationPackage() {
169 return (PartialinterpretationPackage)getEPackage();
170 }
171
172 /**
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @deprecated
176 * @generated
177 */
178 @Deprecated
179 public static PartialinterpretationPackage getPackage() {
180 return PartialinterpretationPackage.eINSTANCE;
181 }
182
183} //PartialinterpretationFactoryImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java
new file mode 100644
index 00000000..65d73721
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java
@@ -0,0 +1,635 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage;
6
7import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage;
8
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink;
10import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLink;
11import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLinkElement;
12import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation;
13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation;
14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation;
15import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation;
16import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation;
17import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationFactory;
18import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
19import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RelationLink;
20import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.UnaryElementRelationLink;
21
22import org.eclipse.emf.ecore.EAttribute;
23import org.eclipse.emf.ecore.EClass;
24import org.eclipse.emf.ecore.EPackage;
25import org.eclipse.emf.ecore.EReference;
26
27import org.eclipse.emf.ecore.impl.EPackageImpl;
28
29/**
30 * <!-- begin-user-doc -->
31 * An implementation of the model <b>Package</b>.
32 * <!-- end-user-doc -->
33 * @generated
34 */
35public class PartialinterpretationPackageImpl extends EPackageImpl implements PartialinterpretationPackage {
36 /**
37 * <!-- begin-user-doc -->
38 * <!-- end-user-doc -->
39 * @generated
40 */
41 private EClass partialInterpretationEClass = null;
42
43 /**
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @generated
47 */
48 private EClass partialConstantInterpretationEClass = null;
49
50 /**
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @generated
54 */
55 private EClass partialRelationInterpretationEClass = null;
56
57 /**
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @generated
61 */
62 private EClass partialFunctionInterpretationEClass = null;
63
64 /**
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @generated
68 */
69 private EClass partialTypeInterpratationEClass = null;
70
71 /**
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @generated
75 */
76 private EClass relationLinkEClass = null;
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 private EClass unaryElementRelationLinkEClass = null;
84
85 /**
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @generated
89 */
90 private EClass binaryElementRelationLinkEClass = null;
91
92 /**
93 * <!-- begin-user-doc -->
94 * <!-- end-user-doc -->
95 * @generated
96 */
97 private EClass naryRelationLinkEClass = null;
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 private EClass naryRelationLinkElementEClass = null;
105
106 /**
107 * Creates an instance of the model <b>Package</b>, registered with
108 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
109 * package URI value.
110 * <p>Note: the correct way to create the package is via the static
111 * factory method {@link #init init()}, which also performs
112 * initialization of the package, or returns the registered package,
113 * if one already exists.
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @see org.eclipse.emf.ecore.EPackage.Registry
117 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#eNS_URI
118 * @see #init()
119 * @generated
120 */
121 private PartialinterpretationPackageImpl() {
122 super(eNS_URI, PartialinterpretationFactory.eINSTANCE);
123 }
124
125 /**
126 * <!-- begin-user-doc -->
127 * <!-- end-user-doc -->
128 * @generated
129 */
130 private static boolean isInited = false;
131
132 /**
133 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
134 *
135 * <p>This method is used to initialize {@link PartialinterpretationPackage#eINSTANCE} when that field is accessed.
136 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @see #eNS_URI
140 * @see #createPackageContents()
141 * @see #initializePackageContents()
142 * @generated
143 */
144 public static PartialinterpretationPackage init() {
145 if (isInited) return (PartialinterpretationPackage)EPackage.Registry.INSTANCE.getEPackage(PartialinterpretationPackage.eNS_URI);
146
147 // Obtain or create and register package
148 PartialinterpretationPackageImpl thePartialinterpretationPackage = (PartialinterpretationPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof PartialinterpretationPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new PartialinterpretationPackageImpl());
149
150 isInited = true;
151
152 // Initialize simple dependencies
153 LogiclanguagePackage.eINSTANCE.eClass();
154 LogicproblemPackage.eINSTANCE.eClass();
155
156 // Create package meta-data objects
157 thePartialinterpretationPackage.createPackageContents();
158
159 // Initialize created meta-data
160 thePartialinterpretationPackage.initializePackageContents();
161
162 // Mark meta-data to indicate it can't be changed
163 thePartialinterpretationPackage.freeze();
164
165
166 // Update the registry and return the package
167 EPackage.Registry.INSTANCE.put(PartialinterpretationPackage.eNS_URI, thePartialinterpretationPackage);
168 return thePartialinterpretationPackage;
169 }
170
171 /**
172 * <!-- begin-user-doc -->
173 * <!-- end-user-doc -->
174 * @generated
175 */
176 public EClass getPartialInterpretation() {
177 return partialInterpretationEClass;
178 }
179
180 /**
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 */
185 public EReference getPartialInterpretation_Problem() {
186 return (EReference)partialInterpretationEClass.getEStructuralFeatures().get(0);
187 }
188
189 /**
190 * <!-- begin-user-doc -->
191 * <!-- end-user-doc -->
192 * @generated
193 */
194 public EReference getPartialInterpretation_Partialconstantinterpretation() {
195 return (EReference)partialInterpretationEClass.getEStructuralFeatures().get(1);
196 }
197
198 /**
199 * <!-- begin-user-doc -->
200 * <!-- end-user-doc -->
201 * @generated
202 */
203 public EReference getPartialInterpretation_Partialrelationinterpretation() {
204 return (EReference)partialInterpretationEClass.getEStructuralFeatures().get(2);
205 }
206
207 /**
208 * <!-- begin-user-doc -->
209 * <!-- end-user-doc -->
210 * @generated
211 */
212 public EReference getPartialInterpretation_Partialfunctioninterpretation() {
213 return (EReference)partialInterpretationEClass.getEStructuralFeatures().get(3);
214 }
215
216 /**
217 * <!-- begin-user-doc -->
218 * <!-- end-user-doc -->
219 * @generated
220 */
221 public EReference getPartialInterpretation_NewElements() {
222 return (EReference)partialInterpretationEClass.getEStructuralFeatures().get(4);
223 }
224
225 /**
226 * <!-- begin-user-doc -->
227 * <!-- end-user-doc -->
228 * @generated
229 */
230 public EReference getPartialInterpretation_Partialtypeinterpratation() {
231 return (EReference)partialInterpretationEClass.getEStructuralFeatures().get(5);
232 }
233
234 /**
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @generated
238 */
239 public EAttribute getPartialInterpretation_MinNewElements() {
240 return (EAttribute)partialInterpretationEClass.getEStructuralFeatures().get(6);
241 }
242
243 /**
244 * <!-- begin-user-doc -->
245 * <!-- end-user-doc -->
246 * @generated
247 */
248 public EAttribute getPartialInterpretation_MaxNewElements() {
249 return (EAttribute)partialInterpretationEClass.getEStructuralFeatures().get(7);
250 }
251
252 /**
253 * <!-- begin-user-doc -->
254 * <!-- end-user-doc -->
255 * @generated
256 */
257 public EReference getPartialInterpretation_OpenWorldElementPrototype() {
258 return (EReference)partialInterpretationEClass.getEStructuralFeatures().get(8);
259 }
260
261 /**
262 * <!-- begin-user-doc -->
263 * <!-- end-user-doc -->
264 * @generated
265 */
266 public EReference getPartialInterpretation_ProblemConainer() {
267 return (EReference)partialInterpretationEClass.getEStructuralFeatures().get(9);
268 }
269
270 /**
271 * <!-- begin-user-doc -->
272 * <!-- end-user-doc -->
273 * @generated
274 */
275 public EClass getPartialConstantInterpretation() {
276 return partialConstantInterpretationEClass;
277 }
278
279 /**
280 * <!-- begin-user-doc -->
281 * <!-- end-user-doc -->
282 * @generated
283 */
284 public EReference getPartialConstantInterpretation_InterpretationOf() {
285 return (EReference)partialConstantInterpretationEClass.getEStructuralFeatures().get(0);
286 }
287
288 /**
289 * <!-- begin-user-doc -->
290 * <!-- end-user-doc -->
291 * @generated
292 */
293 public EClass getPartialRelationInterpretation() {
294 return partialRelationInterpretationEClass;
295 }
296
297 /**
298 * <!-- begin-user-doc -->
299 * <!-- end-user-doc -->
300 * @generated
301 */
302 public EReference getPartialRelationInterpretation_InterpretationOf() {
303 return (EReference)partialRelationInterpretationEClass.getEStructuralFeatures().get(0);
304 }
305
306 /**
307 * <!-- begin-user-doc -->
308 * <!-- end-user-doc -->
309 * @generated
310 */
311 public EReference getPartialRelationInterpretation_Relationlinks() {
312 return (EReference)partialRelationInterpretationEClass.getEStructuralFeatures().get(1);
313 }
314
315 /**
316 * <!-- begin-user-doc -->
317 * <!-- end-user-doc -->
318 * @generated
319 */
320 public EReference getPartialRelationInterpretation_Param1() {
321 return (EReference)partialRelationInterpretationEClass.getEStructuralFeatures().get(2);
322 }
323
324 /**
325 * <!-- begin-user-doc -->
326 * <!-- end-user-doc -->
327 * @generated
328 */
329 public EReference getPartialRelationInterpretation_Param2() {
330 return (EReference)partialRelationInterpretationEClass.getEStructuralFeatures().get(3);
331 }
332
333 /**
334 * <!-- begin-user-doc -->
335 * <!-- end-user-doc -->
336 * @generated
337 */
338 public EClass getPartialFunctionInterpretation() {
339 return partialFunctionInterpretationEClass;
340 }
341
342 /**
343 * <!-- begin-user-doc -->
344 * <!-- end-user-doc -->
345 * @generated
346 */
347 public EReference getPartialFunctionInterpretation_InterpretationOf() {
348 return (EReference)partialFunctionInterpretationEClass.getEStructuralFeatures().get(0);
349 }
350
351 /**
352 * <!-- begin-user-doc -->
353 * <!-- end-user-doc -->
354 * @generated
355 */
356 public EClass getPartialTypeInterpratation() {
357 return partialTypeInterpratationEClass;
358 }
359
360 /**
361 * <!-- begin-user-doc -->
362 * <!-- end-user-doc -->
363 * @generated
364 */
365 public EReference getPartialTypeInterpratation_InterpretationOf() {
366 return (EReference)partialTypeInterpratationEClass.getEStructuralFeatures().get(0);
367 }
368
369 /**
370 * <!-- begin-user-doc -->
371 * <!-- end-user-doc -->
372 * @generated
373 */
374 public EReference getPartialTypeInterpratation_Elements() {
375 return (EReference)partialTypeInterpratationEClass.getEStructuralFeatures().get(1);
376 }
377
378 /**
379 * <!-- begin-user-doc -->
380 * <!-- end-user-doc -->
381 * @generated
382 */
383 public EReference getPartialTypeInterpratation_SupertypeInterpretation() {
384 return (EReference)partialTypeInterpratationEClass.getEStructuralFeatures().get(2);
385 }
386
387 /**
388 * <!-- begin-user-doc -->
389 * <!-- end-user-doc -->
390 * @generated
391 */
392 public EClass getRelationLink() {
393 return relationLinkEClass;
394 }
395
396 /**
397 * <!-- begin-user-doc -->
398 * <!-- end-user-doc -->
399 * @generated
400 */
401 public EClass getUnaryElementRelationLink() {
402 return unaryElementRelationLinkEClass;
403 }
404
405 /**
406 * <!-- begin-user-doc -->
407 * <!-- end-user-doc -->
408 * @generated
409 */
410 public EReference getUnaryElementRelationLink_Param1() {
411 return (EReference)unaryElementRelationLinkEClass.getEStructuralFeatures().get(0);
412 }
413
414 /**
415 * <!-- begin-user-doc -->
416 * <!-- end-user-doc -->
417 * @generated
418 */
419 public EClass getBinaryElementRelationLink() {
420 return binaryElementRelationLinkEClass;
421 }
422
423 /**
424 * <!-- begin-user-doc -->
425 * <!-- end-user-doc -->
426 * @generated
427 */
428 public EReference getBinaryElementRelationLink_Param1() {
429 return (EReference)binaryElementRelationLinkEClass.getEStructuralFeatures().get(0);
430 }
431
432 /**
433 * <!-- begin-user-doc -->
434 * <!-- end-user-doc -->
435 * @generated
436 */
437 public EReference getBinaryElementRelationLink_Param2() {
438 return (EReference)binaryElementRelationLinkEClass.getEStructuralFeatures().get(1);
439 }
440
441 /**
442 * <!-- begin-user-doc -->
443 * <!-- end-user-doc -->
444 * @generated
445 */
446 public EClass getNaryRelationLink() {
447 return naryRelationLinkEClass;
448 }
449
450 /**
451 * <!-- begin-user-doc -->
452 * <!-- end-user-doc -->
453 * @generated
454 */
455 public EReference getNaryRelationLink_Elements() {
456 return (EReference)naryRelationLinkEClass.getEStructuralFeatures().get(0);
457 }
458
459 /**
460 * <!-- begin-user-doc -->
461 * <!-- end-user-doc -->
462 * @generated
463 */
464 public EClass getNaryRelationLinkElement() {
465 return naryRelationLinkElementEClass;
466 }
467
468 /**
469 * <!-- begin-user-doc -->
470 * <!-- end-user-doc -->
471 * @generated
472 */
473 public EAttribute getNaryRelationLinkElement_Index() {
474 return (EAttribute)naryRelationLinkElementEClass.getEStructuralFeatures().get(0);
475 }
476
477 /**
478 * <!-- begin-user-doc -->
479 * <!-- end-user-doc -->
480 * @generated
481 */
482 public PartialinterpretationFactory getPartialinterpretationFactory() {
483 return (PartialinterpretationFactory)getEFactoryInstance();
484 }
485
486 /**
487 * <!-- begin-user-doc -->
488 * <!-- end-user-doc -->
489 * @generated
490 */
491 private boolean isCreated = false;
492
493 /**
494 * Creates the meta-model objects for the package. This method is
495 * guarded to have no affect on any invocation but its first.
496 * <!-- begin-user-doc -->
497 * <!-- end-user-doc -->
498 * @generated
499 */
500 public void createPackageContents() {
501 if (isCreated) return;
502 isCreated = true;
503
504 // Create classes and their features
505 partialInterpretationEClass = createEClass(PARTIAL_INTERPRETATION);
506 createEReference(partialInterpretationEClass, PARTIAL_INTERPRETATION__PROBLEM);
507 createEReference(partialInterpretationEClass, PARTIAL_INTERPRETATION__PARTIALCONSTANTINTERPRETATION);
508 createEReference(partialInterpretationEClass, PARTIAL_INTERPRETATION__PARTIALRELATIONINTERPRETATION);
509 createEReference(partialInterpretationEClass, PARTIAL_INTERPRETATION__PARTIALFUNCTIONINTERPRETATION);
510 createEReference(partialInterpretationEClass, PARTIAL_INTERPRETATION__NEW_ELEMENTS);
511 createEReference(partialInterpretationEClass, PARTIAL_INTERPRETATION__PARTIALTYPEINTERPRATATION);
512 createEAttribute(partialInterpretationEClass, PARTIAL_INTERPRETATION__MIN_NEW_ELEMENTS);
513 createEAttribute(partialInterpretationEClass, PARTIAL_INTERPRETATION__MAX_NEW_ELEMENTS);
514 createEReference(partialInterpretationEClass, PARTIAL_INTERPRETATION__OPEN_WORLD_ELEMENT_PROTOTYPE);
515 createEReference(partialInterpretationEClass, PARTIAL_INTERPRETATION__PROBLEM_CONAINER);
516
517 partialConstantInterpretationEClass = createEClass(PARTIAL_CONSTANT_INTERPRETATION);
518 createEReference(partialConstantInterpretationEClass, PARTIAL_CONSTANT_INTERPRETATION__INTERPRETATION_OF);
519
520 partialRelationInterpretationEClass = createEClass(PARTIAL_RELATION_INTERPRETATION);
521 createEReference(partialRelationInterpretationEClass, PARTIAL_RELATION_INTERPRETATION__INTERPRETATION_OF);
522 createEReference(partialRelationInterpretationEClass, PARTIAL_RELATION_INTERPRETATION__RELATIONLINKS);
523 createEReference(partialRelationInterpretationEClass, PARTIAL_RELATION_INTERPRETATION__PARAM1);
524 createEReference(partialRelationInterpretationEClass, PARTIAL_RELATION_INTERPRETATION__PARAM2);
525
526 partialFunctionInterpretationEClass = createEClass(PARTIAL_FUNCTION_INTERPRETATION);
527 createEReference(partialFunctionInterpretationEClass, PARTIAL_FUNCTION_INTERPRETATION__INTERPRETATION_OF);
528
529 partialTypeInterpratationEClass = createEClass(PARTIAL_TYPE_INTERPRATATION);
530 createEReference(partialTypeInterpratationEClass, PARTIAL_TYPE_INTERPRATATION__INTERPRETATION_OF);
531 createEReference(partialTypeInterpratationEClass, PARTIAL_TYPE_INTERPRATATION__ELEMENTS);
532 createEReference(partialTypeInterpratationEClass, PARTIAL_TYPE_INTERPRATATION__SUPERTYPE_INTERPRETATION);
533
534 relationLinkEClass = createEClass(RELATION_LINK);
535
536 unaryElementRelationLinkEClass = createEClass(UNARY_ELEMENT_RELATION_LINK);
537 createEReference(unaryElementRelationLinkEClass, UNARY_ELEMENT_RELATION_LINK__PARAM1);
538
539 binaryElementRelationLinkEClass = createEClass(BINARY_ELEMENT_RELATION_LINK);
540 createEReference(binaryElementRelationLinkEClass, BINARY_ELEMENT_RELATION_LINK__PARAM1);
541 createEReference(binaryElementRelationLinkEClass, BINARY_ELEMENT_RELATION_LINK__PARAM2);
542
543 naryRelationLinkEClass = createEClass(NARY_RELATION_LINK);
544 createEReference(naryRelationLinkEClass, NARY_RELATION_LINK__ELEMENTS);
545
546 naryRelationLinkElementEClass = createEClass(NARY_RELATION_LINK_ELEMENT);
547 createEAttribute(naryRelationLinkElementEClass, NARY_RELATION_LINK_ELEMENT__INDEX);
548 }
549
550 /**
551 * <!-- begin-user-doc -->
552 * <!-- end-user-doc -->
553 * @generated
554 */
555 private boolean isInitialized = false;
556
557 /**
558 * Complete the initialization of the package and its meta-model. This
559 * method is guarded to have no affect on any invocation but its first.
560 * <!-- begin-user-doc -->
561 * <!-- end-user-doc -->
562 * @generated
563 */
564 public void initializePackageContents() {
565 if (isInitialized) return;
566 isInitialized = true;
567
568 // Initialize package
569 setName(eNAME);
570 setNsPrefix(eNS_PREFIX);
571 setNsURI(eNS_URI);
572
573 // Obtain other dependent packages
574 LogicproblemPackage theLogicproblemPackage = (LogicproblemPackage)EPackage.Registry.INSTANCE.getEPackage(LogicproblemPackage.eNS_URI);
575 LogiclanguagePackage theLogiclanguagePackage = (LogiclanguagePackage)EPackage.Registry.INSTANCE.getEPackage(LogiclanguagePackage.eNS_URI);
576
577 // Create type parameters
578
579 // Set bounds for type parameters
580
581 // Add supertypes to classes
582 unaryElementRelationLinkEClass.getESuperTypes().add(this.getRelationLink());
583 binaryElementRelationLinkEClass.getESuperTypes().add(this.getRelationLink());
584 naryRelationLinkEClass.getESuperTypes().add(this.getRelationLink());
585
586 // Initialize classes, features, and operations; add parameters
587 initEClass(partialInterpretationEClass, PartialInterpretation.class, "PartialInterpretation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
588 initEReference(getPartialInterpretation_Problem(), theLogicproblemPackage.getLogicProblem(), null, "problem", null, 1, 1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
589 initEReference(getPartialInterpretation_Partialconstantinterpretation(), this.getPartialConstantInterpretation(), null, "partialconstantinterpretation", null, 0, -1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
590 initEReference(getPartialInterpretation_Partialrelationinterpretation(), this.getPartialRelationInterpretation(), null, "partialrelationinterpretation", null, 0, -1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
591 initEReference(getPartialInterpretation_Partialfunctioninterpretation(), this.getPartialFunctionInterpretation(), null, "partialfunctioninterpretation", null, 0, -1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
592 initEReference(getPartialInterpretation_NewElements(), theLogiclanguagePackage.getDefinedElement(), null, "newElements", null, 0, -1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
593 initEReference(getPartialInterpretation_Partialtypeinterpratation(), this.getPartialTypeInterpratation(), null, "partialtypeinterpratation", null, 0, -1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
594 initEAttribute(getPartialInterpretation_MinNewElements(), ecorePackage.getEInt(), "minNewElements", "0", 1, 1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
595 initEAttribute(getPartialInterpretation_MaxNewElements(), ecorePackage.getEInt(), "maxNewElements", "0", 1, 1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
596 initEReference(getPartialInterpretation_OpenWorldElementPrototype(), theLogiclanguagePackage.getDefinedElement(), null, "openWorldElementPrototype", null, 1, 1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
597 initEReference(getPartialInterpretation_ProblemConainer(), theLogicproblemPackage.getLogicProblem(), null, "problemConainer", null, 0, 1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
598
599 initEClass(partialConstantInterpretationEClass, PartialConstantInterpretation.class, "PartialConstantInterpretation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
600 initEReference(getPartialConstantInterpretation_InterpretationOf(), theLogiclanguagePackage.getConstantDeclaration(), null, "interpretationOf", null, 1, 1, PartialConstantInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
601
602 initEClass(partialRelationInterpretationEClass, PartialRelationInterpretation.class, "PartialRelationInterpretation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
603 initEReference(getPartialRelationInterpretation_InterpretationOf(), theLogiclanguagePackage.getRelationDeclaration(), null, "interpretationOf", null, 1, 1, PartialRelationInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
604 initEReference(getPartialRelationInterpretation_Relationlinks(), this.getRelationLink(), null, "relationlinks", null, 0, -1, PartialRelationInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
605 initEReference(getPartialRelationInterpretation_Param1(), theLogiclanguagePackage.getTypeReference(), null, "param1", null, 0, 1, PartialRelationInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
606 initEReference(getPartialRelationInterpretation_Param2(), theLogiclanguagePackage.getTypeReference(), null, "param2", null, 0, 1, PartialRelationInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
607
608 initEClass(partialFunctionInterpretationEClass, PartialFunctionInterpretation.class, "PartialFunctionInterpretation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
609 initEReference(getPartialFunctionInterpretation_InterpretationOf(), theLogiclanguagePackage.getFunctionDeclaration(), null, "interpretationOf", null, 1, 1, PartialFunctionInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
610
611 initEClass(partialTypeInterpratationEClass, PartialTypeInterpratation.class, "PartialTypeInterpratation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
612 initEReference(getPartialTypeInterpratation_InterpretationOf(), theLogiclanguagePackage.getTypeDeclaration(), null, "interpretationOf", null, 1, 1, PartialTypeInterpratation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
613 initEReference(getPartialTypeInterpratation_Elements(), theLogiclanguagePackage.getDefinedElement(), null, "elements", null, 0, -1, PartialTypeInterpratation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
614 initEReference(getPartialTypeInterpratation_SupertypeInterpretation(), this.getPartialTypeInterpratation(), null, "supertypeInterpretation", null, 0, -1, PartialTypeInterpratation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
615
616 initEClass(relationLinkEClass, RelationLink.class, "RelationLink", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
617
618 initEClass(unaryElementRelationLinkEClass, UnaryElementRelationLink.class, "UnaryElementRelationLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
619 initEReference(getUnaryElementRelationLink_Param1(), theLogiclanguagePackage.getDefinedElement(), null, "param1", null, 1, 1, UnaryElementRelationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
620
621 initEClass(binaryElementRelationLinkEClass, BinaryElementRelationLink.class, "BinaryElementRelationLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
622 initEReference(getBinaryElementRelationLink_Param1(), theLogiclanguagePackage.getDefinedElement(), null, "param1", null, 1, 1, BinaryElementRelationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
623 initEReference(getBinaryElementRelationLink_Param2(), theLogiclanguagePackage.getDefinedElement(), null, "param2", null, 1, 1, BinaryElementRelationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
624
625 initEClass(naryRelationLinkEClass, NaryRelationLink.class, "NaryRelationLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
626 initEReference(getNaryRelationLink_Elements(), this.getNaryRelationLinkElement(), null, "elements", null, 0, -1, NaryRelationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
627
628 initEClass(naryRelationLinkElementEClass, NaryRelationLinkElement.class, "NaryRelationLinkElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
629 initEAttribute(getNaryRelationLinkElement_Index(), ecorePackage.getEInt(), "index", null, 0, 1, NaryRelationLinkElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
630
631 // Create resource
632 createResource(eNS_URI);
633 }
634
635} //PartialinterpretationPackageImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/RelationLinkImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/RelationLinkImpl.java
new file mode 100644
index 00000000..5eda35c7
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/RelationLinkImpl.java
@@ -0,0 +1,39 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl;
4
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RelationLink;
7
8import org.eclipse.emf.ecore.EClass;
9
10import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
11
12/**
13 * <!-- begin-user-doc -->
14 * An implementation of the model object '<em><b>Relation Link</b></em>'.
15 * <!-- end-user-doc -->
16 *
17 * @generated
18 */
19public abstract class RelationLinkImpl extends MinimalEObjectImpl.Container implements RelationLink {
20 /**
21 * <!-- begin-user-doc -->
22 * <!-- end-user-doc -->
23 * @generated
24 */
25 protected RelationLinkImpl() {
26 super();
27 }
28
29 /**
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @generated
33 */
34 @Override
35 protected EClass eStaticClass() {
36 return PartialinterpretationPackage.Literals.RELATION_LINK;
37 }
38
39} //RelationLinkImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/UnaryElementRelationLinkImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/UnaryElementRelationLinkImpl.java
new file mode 100644
index 00000000..2cb56323
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/UnaryElementRelationLinkImpl.java
@@ -0,0 +1,157 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement;
6
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
8import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.UnaryElementRelationLink;
9
10import org.eclipse.emf.common.notify.Notification;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16
17/**
18 * <!-- begin-user-doc -->
19 * An implementation of the model object '<em><b>Unary Element Relation Link</b></em>'.
20 * <!-- end-user-doc -->
21 * <p>
22 * The following features are implemented:
23 * </p>
24 * <ul>
25 * <li>{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.UnaryElementRelationLinkImpl#getParam1 <em>Param1</em>}</li>
26 * </ul>
27 *
28 * @generated
29 */
30public class UnaryElementRelationLinkImpl extends RelationLinkImpl implements UnaryElementRelationLink {
31 /**
32 * The cached value of the '{@link #getParam1() <em>Param1</em>}' reference.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #getParam1()
36 * @generated
37 * @ordered
38 */
39 protected DefinedElement param1;
40
41 /**
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @generated
45 */
46 protected UnaryElementRelationLinkImpl() {
47 super();
48 }
49
50 /**
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @generated
54 */
55 @Override
56 protected EClass eStaticClass() {
57 return PartialinterpretationPackage.Literals.UNARY_ELEMENT_RELATION_LINK;
58 }
59
60 /**
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @generated
64 */
65 public DefinedElement getParam1() {
66 if (param1 != null && param1.eIsProxy()) {
67 InternalEObject oldParam1 = (InternalEObject)param1;
68 param1 = (DefinedElement)eResolveProxy(oldParam1);
69 if (param1 != oldParam1) {
70 if (eNotificationRequired())
71 eNotify(new ENotificationImpl(this, Notification.RESOLVE, PartialinterpretationPackage.UNARY_ELEMENT_RELATION_LINK__PARAM1, oldParam1, param1));
72 }
73 }
74 return param1;
75 }
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 public DefinedElement basicGetParam1() {
83 return param1;
84 }
85
86 /**
87 * <!-- begin-user-doc -->
88 * <!-- end-user-doc -->
89 * @generated
90 */
91 public void setParam1(DefinedElement newParam1) {
92 DefinedElement oldParam1 = param1;
93 param1 = newParam1;
94 if (eNotificationRequired())
95 eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.UNARY_ELEMENT_RELATION_LINK__PARAM1, oldParam1, param1));
96 }
97
98 /**
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 @Override
104 public Object eGet(int featureID, boolean resolve, boolean coreType) {
105 switch (featureID) {
106 case PartialinterpretationPackage.UNARY_ELEMENT_RELATION_LINK__PARAM1:
107 if (resolve) return getParam1();
108 return basicGetParam1();
109 }
110 return super.eGet(featureID, resolve, coreType);
111 }
112
113 /**
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @generated
117 */
118 @Override
119 public void eSet(int featureID, Object newValue) {
120 switch (featureID) {
121 case PartialinterpretationPackage.UNARY_ELEMENT_RELATION_LINK__PARAM1:
122 setParam1((DefinedElement)newValue);
123 return;
124 }
125 super.eSet(featureID, newValue);
126 }
127
128 /**
129 * <!-- begin-user-doc -->
130 * <!-- end-user-doc -->
131 * @generated
132 */
133 @Override
134 public void eUnset(int featureID) {
135 switch (featureID) {
136 case PartialinterpretationPackage.UNARY_ELEMENT_RELATION_LINK__PARAM1:
137 setParam1((DefinedElement)null);
138 return;
139 }
140 super.eUnset(featureID);
141 }
142
143 /**
144 * <!-- begin-user-doc -->
145 * <!-- end-user-doc -->
146 * @generated
147 */
148 @Override
149 public boolean eIsSet(int featureID) {
150 switch (featureID) {
151 case PartialinterpretationPackage.UNARY_ELEMENT_RELATION_LINK__PARAM1:
152 return param1 != null;
153 }
154 return super.eIsSet(featureID);
155 }
156
157} //UnaryElementRelationLinkImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/util/PartialinterpretationAdapterFactory.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/util/PartialinterpretationAdapterFactory.java
new file mode 100644
index 00000000..628d56eb
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/util/PartialinterpretationAdapterFactory.java
@@ -0,0 +1,282 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.util;
4
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.*;
6
7import org.eclipse.emf.common.notify.Adapter;
8import org.eclipse.emf.common.notify.Notifier;
9
10import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
11
12import org.eclipse.emf.ecore.EObject;
13
14/**
15 * <!-- begin-user-doc -->
16 * The <b>Adapter Factory</b> for the model.
17 * It provides an adapter <code>createXXX</code> method for each class of the model.
18 * <!-- end-user-doc -->
19 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage
20 * @generated
21 */
22public class PartialinterpretationAdapterFactory extends AdapterFactoryImpl {
23 /**
24 * The cached model package.
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 protected static PartialinterpretationPackage modelPackage;
30
31 /**
32 * Creates an instance of the adapter factory.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @generated
36 */
37 public PartialinterpretationAdapterFactory() {
38 if (modelPackage == null) {
39 modelPackage = PartialinterpretationPackage.eINSTANCE;
40 }
41 }
42
43 /**
44 * Returns whether this factory is applicable for the type of the object.
45 * <!-- begin-user-doc -->
46 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
47 * <!-- end-user-doc -->
48 * @return whether this factory is applicable for the type of the object.
49 * @generated
50 */
51 @Override
52 public boolean isFactoryForType(Object object) {
53 if (object == modelPackage) {
54 return true;
55 }
56 if (object instanceof EObject) {
57 return ((EObject)object).eClass().getEPackage() == modelPackage;
58 }
59 return false;
60 }
61
62 /**
63 * The switch that delegates to the <code>createXXX</code> methods.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @generated
67 */
68 protected PartialinterpretationSwitch<Adapter> modelSwitch =
69 new PartialinterpretationSwitch<Adapter>() {
70 @Override
71 public Adapter casePartialInterpretation(PartialInterpretation object) {
72 return createPartialInterpretationAdapter();
73 }
74 @Override
75 public Adapter casePartialConstantInterpretation(PartialConstantInterpretation object) {
76 return createPartialConstantInterpretationAdapter();
77 }
78 @Override
79 public Adapter casePartialRelationInterpretation(PartialRelationInterpretation object) {
80 return createPartialRelationInterpretationAdapter();
81 }
82 @Override
83 public Adapter casePartialFunctionInterpretation(PartialFunctionInterpretation object) {
84 return createPartialFunctionInterpretationAdapter();
85 }
86 @Override
87 public Adapter casePartialTypeInterpratation(PartialTypeInterpratation object) {
88 return createPartialTypeInterpratationAdapter();
89 }
90 @Override
91 public Adapter caseRelationLink(RelationLink object) {
92 return createRelationLinkAdapter();
93 }
94 @Override
95 public Adapter caseUnaryElementRelationLink(UnaryElementRelationLink object) {
96 return createUnaryElementRelationLinkAdapter();
97 }
98 @Override
99 public Adapter caseBinaryElementRelationLink(BinaryElementRelationLink object) {
100 return createBinaryElementRelationLinkAdapter();
101 }
102 @Override
103 public Adapter caseNaryRelationLink(NaryRelationLink object) {
104 return createNaryRelationLinkAdapter();
105 }
106 @Override
107 public Adapter caseNaryRelationLinkElement(NaryRelationLinkElement object) {
108 return createNaryRelationLinkElementAdapter();
109 }
110 @Override
111 public Adapter defaultCase(EObject object) {
112 return createEObjectAdapter();
113 }
114 };
115
116 /**
117 * Creates an adapter for the <code>target</code>.
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @param target the object to adapt.
121 * @return the adapter for the <code>target</code>.
122 * @generated
123 */
124 @Override
125 public Adapter createAdapter(Notifier target) {
126 return modelSwitch.doSwitch((EObject)target);
127 }
128
129
130 /**
131 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation <em>Partial Interpretation</em>}'.
132 * <!-- begin-user-doc -->
133 * This default implementation returns null so that we can easily ignore cases;
134 * it's useful to ignore a case when inheritance will catch all the cases anyway.
135 * <!-- end-user-doc -->
136 * @return the new adapter.
137 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
138 * @generated
139 */
140 public Adapter createPartialInterpretationAdapter() {
141 return null;
142 }
143
144 /**
145 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation <em>Partial Constant Interpretation</em>}'.
146 * <!-- begin-user-doc -->
147 * This default implementation returns null so that we can easily ignore cases;
148 * it's useful to ignore a case when inheritance will catch all the cases anyway.
149 * <!-- end-user-doc -->
150 * @return the new adapter.
151 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation
152 * @generated
153 */
154 public Adapter createPartialConstantInterpretationAdapter() {
155 return null;
156 }
157
158 /**
159 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation <em>Partial Relation Interpretation</em>}'.
160 * <!-- begin-user-doc -->
161 * This default implementation returns null so that we can easily ignore cases;
162 * it's useful to ignore a case when inheritance will catch all the cases anyway.
163 * <!-- end-user-doc -->
164 * @return the new adapter.
165 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation
166 * @generated
167 */
168 public Adapter createPartialRelationInterpretationAdapter() {
169 return null;
170 }
171
172 /**
173 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation <em>Partial Function Interpretation</em>}'.
174 * <!-- begin-user-doc -->
175 * This default implementation returns null so that we can easily ignore cases;
176 * it's useful to ignore a case when inheritance will catch all the cases anyway.
177 * <!-- end-user-doc -->
178 * @return the new adapter.
179 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation
180 * @generated
181 */
182 public Adapter createPartialFunctionInterpretationAdapter() {
183 return null;
184 }
185
186 /**
187 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation <em>Partial Type Interpratation</em>}'.
188 * <!-- begin-user-doc -->
189 * This default implementation returns null so that we can easily ignore cases;
190 * it's useful to ignore a case when inheritance will catch all the cases anyway.
191 * <!-- end-user-doc -->
192 * @return the new adapter.
193 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation
194 * @generated
195 */
196 public Adapter createPartialTypeInterpratationAdapter() {
197 return null;
198 }
199
200 /**
201 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RelationLink <em>Relation Link</em>}'.
202 * <!-- begin-user-doc -->
203 * This default implementation returns null so that we can easily ignore cases;
204 * it's useful to ignore a case when inheritance will catch all the cases anyway.
205 * <!-- end-user-doc -->
206 * @return the new adapter.
207 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RelationLink
208 * @generated
209 */
210 public Adapter createRelationLinkAdapter() {
211 return null;
212 }
213
214 /**
215 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.UnaryElementRelationLink <em>Unary Element Relation Link</em>}'.
216 * <!-- begin-user-doc -->
217 * This default implementation returns null so that we can easily ignore cases;
218 * it's useful to ignore a case when inheritance will catch all the cases anyway.
219 * <!-- end-user-doc -->
220 * @return the new adapter.
221 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.UnaryElementRelationLink
222 * @generated
223 */
224 public Adapter createUnaryElementRelationLinkAdapter() {
225 return null;
226 }
227
228 /**
229 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink <em>Binary Element Relation Link</em>}'.
230 * <!-- begin-user-doc -->
231 * This default implementation returns null so that we can easily ignore cases;
232 * it's useful to ignore a case when inheritance will catch all the cases anyway.
233 * <!-- end-user-doc -->
234 * @return the new adapter.
235 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
236 * @generated
237 */
238 public Adapter createBinaryElementRelationLinkAdapter() {
239 return null;
240 }
241
242 /**
243 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLink <em>Nary Relation Link</em>}'.
244 * <!-- begin-user-doc -->
245 * This default implementation returns null so that we can easily ignore cases;
246 * it's useful to ignore a case when inheritance will catch all the cases anyway.
247 * <!-- end-user-doc -->
248 * @return the new adapter.
249 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLink
250 * @generated
251 */
252 public Adapter createNaryRelationLinkAdapter() {
253 return null;
254 }
255
256 /**
257 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLinkElement <em>Nary Relation Link Element</em>}'.
258 * <!-- begin-user-doc -->
259 * This default implementation returns null so that we can easily ignore cases;
260 * it's useful to ignore a case when inheritance will catch all the cases anyway.
261 * <!-- end-user-doc -->
262 * @return the new adapter.
263 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.NaryRelationLinkElement
264 * @generated
265 */
266 public Adapter createNaryRelationLinkElementAdapter() {
267 return null;
268 }
269
270 /**
271 * Creates a new adapter for the default case.
272 * <!-- begin-user-doc -->
273 * This default implementation returns null.
274 * <!-- end-user-doc -->
275 * @return the new adapter.
276 * @generated
277 */
278 public Adapter createEObjectAdapter() {
279 return null;
280 }
281
282} //PartialinterpretationAdapterFactory
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/util/PartialinterpretationSwitch.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/util/PartialinterpretationSwitch.java
new file mode 100644
index 00000000..f99b2d76
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/util/PartialinterpretationSwitch.java
@@ -0,0 +1,302 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.util;
4
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.*;
6
7import org.eclipse.emf.ecore.EObject;
8import org.eclipse.emf.ecore.EPackage;
9
10import org.eclipse.emf.ecore.util.Switch;
11
12/**
13 * <!-- begin-user-doc -->
14 * The <b>Switch</b> for the model's inheritance hierarchy.
15 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
16 * to invoke the <code>caseXXX</code> method for each class of the model,
17 * starting with the actual class of the object
18 * and proceeding up the inheritance hierarchy
19 * until a non-null result is returned,
20 * which is the result of the switch.
21 * <!-- end-user-doc -->
22 * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage
23 * @generated
24 */
25public class PartialinterpretationSwitch<T> extends Switch<T> {
26 /**
27 * The cached model package
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 protected static PartialinterpretationPackage modelPackage;
33
34 /**
35 * Creates an instance of the switch.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 public PartialinterpretationSwitch() {
41 if (modelPackage == null) {
42 modelPackage = PartialinterpretationPackage.eINSTANCE;
43 }
44 }
45
46 /**
47 * Checks whether this is a switch for the given package.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @param ePackage the package in question.
51 * @return whether this is a switch for the given package.
52 * @generated
53 */
54 @Override
55 protected boolean isSwitchFor(EPackage ePackage) {
56 return ePackage == modelPackage;
57 }
58
59 /**
60 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @return the first non-null result returned by a <code>caseXXX</code> call.
64 * @generated
65 */
66 @Override
67 protected T doSwitch(int classifierID, EObject theEObject) {
68 switch (classifierID) {
69 case PartialinterpretationPackage.PARTIAL_INTERPRETATION: {
70 PartialInterpretation partialInterpretation = (PartialInterpretation)theEObject;
71 T result = casePartialInterpretation(partialInterpretation);
72 if (result == null) result = defaultCase(theEObject);
73 return result;
74 }
75 case PartialinterpretationPackage.PARTIAL_CONSTANT_INTERPRETATION: {
76 PartialConstantInterpretation partialConstantInterpretation = (PartialConstantInterpretation)theEObject;
77 T result = casePartialConstantInterpretation(partialConstantInterpretation);
78 if (result == null) result = defaultCase(theEObject);
79 return result;
80 }
81 case PartialinterpretationPackage.PARTIAL_RELATION_INTERPRETATION: {
82 PartialRelationInterpretation partialRelationInterpretation = (PartialRelationInterpretation)theEObject;
83 T result = casePartialRelationInterpretation(partialRelationInterpretation);
84 if (result == null) result = defaultCase(theEObject);
85 return result;
86 }
87 case PartialinterpretationPackage.PARTIAL_FUNCTION_INTERPRETATION: {
88 PartialFunctionInterpretation partialFunctionInterpretation = (PartialFunctionInterpretation)theEObject;
89 T result = casePartialFunctionInterpretation(partialFunctionInterpretation);
90 if (result == null) result = defaultCase(theEObject);
91 return result;
92 }
93 case PartialinterpretationPackage.PARTIAL_TYPE_INTERPRATATION: {
94 PartialTypeInterpratation partialTypeInterpratation = (PartialTypeInterpratation)theEObject;
95 T result = casePartialTypeInterpratation(partialTypeInterpratation);
96 if (result == null) result = defaultCase(theEObject);
97 return result;
98 }
99 case PartialinterpretationPackage.RELATION_LINK: {
100 RelationLink relationLink = (RelationLink)theEObject;
101 T result = caseRelationLink(relationLink);
102 if (result == null) result = defaultCase(theEObject);
103 return result;
104 }
105 case PartialinterpretationPackage.UNARY_ELEMENT_RELATION_LINK: {
106 UnaryElementRelationLink unaryElementRelationLink = (UnaryElementRelationLink)theEObject;
107 T result = caseUnaryElementRelationLink(unaryElementRelationLink);
108 if (result == null) result = caseRelationLink(unaryElementRelationLink);
109 if (result == null) result = defaultCase(theEObject);
110 return result;
111 }
112 case PartialinterpretationPackage.BINARY_ELEMENT_RELATION_LINK: {
113 BinaryElementRelationLink binaryElementRelationLink = (BinaryElementRelationLink)theEObject;
114 T result = caseBinaryElementRelationLink(binaryElementRelationLink);
115 if (result == null) result = caseRelationLink(binaryElementRelationLink);
116 if (result == null) result = defaultCase(theEObject);
117 return result;
118 }
119 case PartialinterpretationPackage.NARY_RELATION_LINK: {
120 NaryRelationLink naryRelationLink = (NaryRelationLink)theEObject;
121 T result = caseNaryRelationLink(naryRelationLink);
122 if (result == null) result = caseRelationLink(naryRelationLink);
123 if (result == null) result = defaultCase(theEObject);
124 return result;
125 }
126 case PartialinterpretationPackage.NARY_RELATION_LINK_ELEMENT: {
127 NaryRelationLinkElement naryRelationLinkElement = (NaryRelationLinkElement)theEObject;
128 T result = caseNaryRelationLinkElement(naryRelationLinkElement);
129 if (result == null) result = defaultCase(theEObject);
130 return result;
131 }
132 default: return defaultCase(theEObject);
133 }
134 }
135
136 /**
137 * Returns the result of interpreting the object as an instance of '<em>Partial Interpretation</em>'.
138 * <!-- begin-user-doc -->
139 * This implementation returns null;
140 * returning a non-null result will terminate the switch.
141 * <!-- end-user-doc -->
142 * @param object the target of the switch.
143 * @return the result of interpreting the object as an instance of '<em>Partial Interpretation</em>'.
144 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
145 * @generated
146 */
147 public T casePartialInterpretation(PartialInterpretation object) {
148 return null;
149 }
150
151 /**
152 * Returns the result of interpreting the object as an instance of '<em>Partial Constant Interpretation</em>'.
153 * <!-- begin-user-doc -->
154 * This implementation returns null;
155 * returning a non-null result will terminate the switch.
156 * <!-- end-user-doc -->
157 * @param object the target of the switch.
158 * @return the result of interpreting the object as an instance of '<em>Partial Constant Interpretation</em>'.
159 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
160 * @generated
161 */
162 public T casePartialConstantInterpretation(PartialConstantInterpretation object) {
163 return null;
164 }
165
166 /**
167 * Returns the result of interpreting the object as an instance of '<em>Partial Relation Interpretation</em>'.
168 * <!-- begin-user-doc -->
169 * This implementation returns null;
170 * returning a non-null result will terminate the switch.
171 * <!-- end-user-doc -->
172 * @param object the target of the switch.
173 * @return the result of interpreting the object as an instance of '<em>Partial Relation Interpretation</em>'.
174 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
175 * @generated
176 */
177 public T casePartialRelationInterpretation(PartialRelationInterpretation object) {
178 return null;
179 }
180
181 /**
182 * Returns the result of interpreting the object as an instance of '<em>Partial Function Interpretation</em>'.
183 * <!-- begin-user-doc -->
184 * This implementation returns null;
185 * returning a non-null result will terminate the switch.
186 * <!-- end-user-doc -->
187 * @param object the target of the switch.
188 * @return the result of interpreting the object as an instance of '<em>Partial Function Interpretation</em>'.
189 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
190 * @generated
191 */
192 public T casePartialFunctionInterpretation(PartialFunctionInterpretation object) {
193 return null;
194 }
195
196 /**
197 * Returns the result of interpreting the object as an instance of '<em>Partial Type Interpratation</em>'.
198 * <!-- begin-user-doc -->
199 * This implementation returns null;
200 * returning a non-null result will terminate the switch.
201 * <!-- end-user-doc -->
202 * @param object the target of the switch.
203 * @return the result of interpreting the object as an instance of '<em>Partial Type Interpratation</em>'.
204 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
205 * @generated
206 */
207 public T casePartialTypeInterpratation(PartialTypeInterpratation object) {
208 return null;
209 }
210
211 /**
212 * Returns the result of interpreting the object as an instance of '<em>Relation Link</em>'.
213 * <!-- begin-user-doc -->
214 * This implementation returns null;
215 * returning a non-null result will terminate the switch.
216 * <!-- end-user-doc -->
217 * @param object the target of the switch.
218 * @return the result of interpreting the object as an instance of '<em>Relation Link</em>'.
219 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
220 * @generated
221 */
222 public T caseRelationLink(RelationLink object) {
223 return null;
224 }
225
226 /**
227 * Returns the result of interpreting the object as an instance of '<em>Unary Element Relation Link</em>'.
228 * <!-- begin-user-doc -->
229 * This implementation returns null;
230 * returning a non-null result will terminate the switch.
231 * <!-- end-user-doc -->
232 * @param object the target of the switch.
233 * @return the result of interpreting the object as an instance of '<em>Unary Element Relation Link</em>'.
234 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
235 * @generated
236 */
237 public T caseUnaryElementRelationLink(UnaryElementRelationLink object) {
238 return null;
239 }
240
241 /**
242 * Returns the result of interpreting the object as an instance of '<em>Binary Element Relation Link</em>'.
243 * <!-- begin-user-doc -->
244 * This implementation returns null;
245 * returning a non-null result will terminate the switch.
246 * <!-- end-user-doc -->
247 * @param object the target of the switch.
248 * @return the result of interpreting the object as an instance of '<em>Binary Element Relation Link</em>'.
249 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
250 * @generated
251 */
252 public T caseBinaryElementRelationLink(BinaryElementRelationLink object) {
253 return null;
254 }
255
256 /**
257 * Returns the result of interpreting the object as an instance of '<em>Nary Relation Link</em>'.
258 * <!-- begin-user-doc -->
259 * This implementation returns null;
260 * returning a non-null result will terminate the switch.
261 * <!-- end-user-doc -->
262 * @param object the target of the switch.
263 * @return the result of interpreting the object as an instance of '<em>Nary Relation Link</em>'.
264 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
265 * @generated
266 */
267 public T caseNaryRelationLink(NaryRelationLink object) {
268 return null;
269 }
270
271 /**
272 * Returns the result of interpreting the object as an instance of '<em>Nary Relation Link Element</em>'.
273 * <!-- begin-user-doc -->
274 * This implementation returns null;
275 * returning a non-null result will terminate the switch.
276 * <!-- end-user-doc -->
277 * @param object the target of the switch.
278 * @return the result of interpreting the object as an instance of '<em>Nary Relation Link Element</em>'.
279 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
280 * @generated
281 */
282 public T caseNaryRelationLinkElement(NaryRelationLinkElement object) {
283 return null;
284 }
285
286 /**
287 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
288 * <!-- begin-user-doc -->
289 * This implementation returns null;
290 * returning a non-null result will terminate the switch, but this is the last case anyway.
291 * <!-- end-user-doc -->
292 * @param object the target of the switch.
293 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
294 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
295 * @generated
296 */
297 @Override
298 public T defaultCase(EObject object) {
299 return null;
300 }
301
302} //PartialinterpretationSwitch
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.aird b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.aird
new file mode 100644
index 00000000..319af04b
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.aird
@@ -0,0 +1,2710 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<viewpoint:DAnalysis 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" xmi:id="_LPTx0LW_EeamG-Ij7YnW7w" selectedViews="_LRSu0LW_EeamG-Ij7YnW7w _LRdt8LW_EeamG-Ij7YnW7w _LRimcLW_EeamG-Ij7YnW7w _LRrwYLW_EeamG-Ij7YnW7w" version="10.1.0.201509162000">
3 <semanticResources>PartialInterpretation.ecore</semanticResources>
4 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore</semanticResources>
5 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore</semanticResources>
6 <semanticResources>http://www.eclipse.org/emf/2002/Ecore</semanticResources>
7 <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_LRSu0LW_EeamG-Ij7YnW7w">
8 <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_MAfXILW_EeamG-Ij7YnW7w" name="partialinterpretation class diagram">
9 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_MAfXIbW_EeamG-Ij7YnW7w" source="DANNOTATION_CUSTOMIZATION_KEY">
10 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_MAfXIrW_EeamG-Ij7YnW7w">
11 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_v4J-ALW_EeamG-Ij7YnW7w" routingStyle="manhattan">
12 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
13 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_v4J-AbW_EeamG-Ij7YnW7w" showIcon="false" labelExpression="service:render">
14 <labelFormat>bold</labelFormat>
15 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
16 </centerLabelStyleDescription>
17 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_v4J-ArW_EeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
18 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
19 </endLabelStyleDescription>
20 </computedStyleDescriptions>
21 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_5K2RYLW_EeamG-Ij7YnW7w" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
22 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
23 <labelFormat>bold</labelFormat>
24 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
25 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
26 </computedStyleDescriptions>
27 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_5K7J4LW_EeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan">
28 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
29 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_5K7J4bW_EeamG-Ij7YnW7w" showIcon="false" labelExpression="service:render">
30 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
31 </centerLabelStyleDescription>
32 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_5K7J4rW_EeamG-Ij7YnW7w" 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="_UkL5ML5UEea19paI6HZj1w" sourceArrow="FillDiamond" routingStyle="manhattan">
37 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
38 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_UkL5Mb5UEea19paI6HZj1w" showIcon="false" labelExpression="service:render">
39 <labelFormat>bold</labelFormat>
40 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
41 </centerLabelStyleDescription>
42 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_UkL5Mr5UEea19paI6HZj1w" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
43 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
44 </endLabelStyleDescription>
45 </computedStyleDescriptions>
46 </data>
47 </ownedAnnotationEntries>
48 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_MA7cALW_EeamG-Ij7YnW7w" source="GMF_DIAGRAMS">
49 <data xmi:type="notation:Diagram" xmi:id="_MA7cAbW_EeamG-Ij7YnW7w" type="Sirius" element="_MAfXILW_EeamG-Ij7YnW7w" measurementUnit="Pixel">
50 <children xmi:type="notation:Node" xmi:id="_ggJ5QLW_EeamG-Ij7YnW7w" type="2003" element="_gf_hMLW_EeamG-Ij7YnW7w">
51 <children xmi:type="notation:Node" xmi:id="_ggLucLW_EeamG-Ij7YnW7w" type="5007"/>
52 <children xmi:type="notation:Node" xmi:id="_ggM8kLW_EeamG-Ij7YnW7w" type="7004">
53 <children xmi:type="notation:Node" xmi:id="_-4VQwL5TEea19paI6HZj1w" type="3010" element="_-3bR0L5TEea19paI6HZj1w">
54 <styles xmi:type="notation:FontStyle" xmi:id="_-4VQwb5TEea19paI6HZj1w" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
55 <layoutConstraint xmi:type="notation:Location" xmi:id="_-4VQwr5TEea19paI6HZj1w"/>
56 </children>
57 <children xmi:type="notation:Node" xmi:id="_BBy3oL5UEea19paI6HZj1w" type="3010" element="_BBOP4L5UEea19paI6HZj1w">
58 <styles xmi:type="notation:FontStyle" xmi:id="_BBy3ob5UEea19paI6HZj1w" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
59 <layoutConstraint xmi:type="notation:Location" xmi:id="_BBy3or5UEea19paI6HZj1w"/>
60 </children>
61 <styles xmi:type="notation:SortingStyle" xmi:id="_ggM8kbW_EeamG-Ij7YnW7w"/>
62 <styles xmi:type="notation:FilteringStyle" xmi:id="_ggM8krW_EeamG-Ij7YnW7w"/>
63 </children>
64 <styles xmi:type="notation:ShapeStyle" xmi:id="_ggJ5QbW_EeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
65 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ggJ5QrW_EeamG-Ij7YnW7w" x="387" y="490" width="183" height="68"/>
66 </children>
67 <children xmi:type="notation:Node" xmi:id="_v4LzMLW_EeamG-Ij7YnW7w" type="2003" element="_v4CCMLW_EeamG-Ij7YnW7w">
68 <children xmi:type="notation:Node" xmi:id="_v4MaQLW_EeamG-Ij7YnW7w" type="5007"/>
69 <children xmi:type="notation:Node" xmi:id="_v4MaQbW_EeamG-Ij7YnW7w" type="7004">
70 <styles xmi:type="notation:SortingStyle" xmi:id="_v4MaQrW_EeamG-Ij7YnW7w"/>
71 <styles xmi:type="notation:FilteringStyle" xmi:id="_v4MaQ7W_EeamG-Ij7YnW7w"/>
72 </children>
73 <styles xmi:type="notation:ShapeStyle" xmi:id="_v4LzMbW_EeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" fillColor="8047085"/>
74 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4LzMrW_EeamG-Ij7YnW7w" x="567" y="15"/>
75 </children>
76 <children xmi:type="notation:Node" xmi:id="_5LFh8LW_EeamG-Ij7YnW7w" type="2003" element="_5KlLoLW_EeamG-Ij7YnW7w">
77 <children xmi:type="notation:Node" xmi:id="_5LFh87W_EeamG-Ij7YnW7w" type="5007"/>
78 <children xmi:type="notation:Node" xmi:id="_5LGJALW_EeamG-Ij7YnW7w" type="7004">
79 <styles xmi:type="notation:SortingStyle" xmi:id="_5LGJAbW_EeamG-Ij7YnW7w"/>
80 <styles xmi:type="notation:FilteringStyle" xmi:id="_5LGJArW_EeamG-Ij7YnW7w"/>
81 </children>
82 <styles xmi:type="notation:ShapeStyle" xmi:id="_5LFh8bW_EeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" italic="true" fillColor="8047085"/>
83 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LFh8rW_EeamG-Ij7YnW7w" x="689" y="165" height="18"/>
84 </children>
85 <children xmi:type="notation:Node" xmi:id="_5LGwELW_EeamG-Ij7YnW7w" type="2003" element="_5KnA0LW_EeamG-Ij7YnW7w">
86 <children xmi:type="notation:Node" xmi:id="_5LHXILW_EeamG-Ij7YnW7w" type="5007"/>
87 <children xmi:type="notation:Node" xmi:id="_5LHXIbW_EeamG-Ij7YnW7w" type="7004">
88 <styles xmi:type="notation:SortingStyle" xmi:id="_5LHXIrW_EeamG-Ij7YnW7w"/>
89 <styles xmi:type="notation:FilteringStyle" xmi:id="_5LHXI7W_EeamG-Ij7YnW7w"/>
90 </children>
91 <styles xmi:type="notation:ShapeStyle" xmi:id="_5LGwEbW_EeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" fillColor="8047085"/>
92 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LGwErW_EeamG-Ij7YnW7w" x="247" y="165" height="41"/>
93 </children>
94 <children xmi:type="notation:Node" xmi:id="_5LH-MLW_EeamG-Ij7YnW7w" type="2003" element="_5KoO8LW_EeamG-Ij7YnW7w">
95 <children xmi:type="notation:Node" xmi:id="_5LIlQLW_EeamG-Ij7YnW7w" type="5007"/>
96 <children xmi:type="notation:Node" xmi:id="_5LIlQbW_EeamG-Ij7YnW7w" type="7004">
97 <styles xmi:type="notation:SortingStyle" xmi:id="_5LIlQrW_EeamG-Ij7YnW7w"/>
98 <styles xmi:type="notation:FilteringStyle" xmi:id="_5LIlQ7W_EeamG-Ij7YnW7w"/>
99 </children>
100 <styles xmi:type="notation:ShapeStyle" xmi:id="_5LH-MbW_EeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" italic="true" fillColor="8047085"/>
101 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LH-MrW_EeamG-Ij7YnW7w" x="1069" y="165" height="8"/>
102 </children>
103 <children xmi:type="notation:Node" xmi:id="_5LIlRLW_EeamG-Ij7YnW7w" type="2003" element="_5KqEILW_EeamG-Ij7YnW7w">
104 <children xmi:type="notation:Node" xmi:id="_5LJMULW_EeamG-Ij7YnW7w" type="5007"/>
105 <children xmi:type="notation:Node" xmi:id="_5LJMUbW_EeamG-Ij7YnW7w" type="7004">
106 <styles xmi:type="notation:SortingStyle" xmi:id="_5LJMUrW_EeamG-Ij7YnW7w"/>
107 <styles xmi:type="notation:FilteringStyle" xmi:id="_5LJMU7W_EeamG-Ij7YnW7w"/>
108 </children>
109 <styles xmi:type="notation:ShapeStyle" xmi:id="_5LIlRbW_EeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" italic="true" fillColor="8047085"/>
110 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LIlRrW_EeamG-Ij7YnW7w" x="870" y="165" height="33"/>
111 </children>
112 <children xmi:type="notation:Node" xmi:id="_5LJzYLW_EeamG-Ij7YnW7w" type="2003" element="_5Kr5ULW_EeamG-Ij7YnW7w">
113 <children xmi:type="notation:Node" xmi:id="_5LJzY7W_EeamG-Ij7YnW7w" type="5007"/>
114 <children xmi:type="notation:Node" xmi:id="_5LKacLW_EeamG-Ij7YnW7w" type="7004">
115 <children xmi:type="notation:Node" xmi:id="_5LLokLW_EeamG-Ij7YnW7w" visible="false" type="3010" element="_5K1qULW_EeamG-Ij7YnW7w">
116 <styles xmi:type="notation:FontStyle" xmi:id="_5LLokbW_EeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" bold="true"/>
117 <layoutConstraint xmi:type="notation:Location" xmi:id="_5LLokrW_EeamG-Ij7YnW7w"/>
118 </children>
119 <children xmi:type="notation:Node" xmi:id="_5LMPoLW_EeamG-Ij7YnW7w" visible="false" type="3010" element="_5K3fgLW_EeamG-Ij7YnW7w">
120 <styles xmi:type="notation:FontStyle" xmi:id="_5LMPobW_EeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" bold="true"/>
121 <layoutConstraint xmi:type="notation:Location" xmi:id="_5LMPorW_EeamG-Ij7YnW7w"/>
122 </children>
123 <styles xmi:type="notation:SortingStyle" xmi:id="_5LKacbW_EeamG-Ij7YnW7w"/>
124 <styles xmi:type="notation:FilteringStyle" xmi:id="_5LKacrW_EeamG-Ij7YnW7w"/>
125 </children>
126 <styles xmi:type="notation:ShapeStyle" xmi:id="_5LJzYbW_EeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" italic="true" fillColor="8047085"/>
127 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LJzYrW_EeamG-Ij7YnW7w" x="387" y="165" height="38"/>
128 </children>
129 <children xmi:type="notation:Node" xmi:id="_OeTn8LXAEeamG-Ij7YnW7w" type="2003" element="_OeBUELXAEeamG-Ij7YnW7w">
130 <children xmi:type="notation:Node" xmi:id="_OeUPALXAEeamG-Ij7YnW7w" type="5007"/>
131 <children xmi:type="notation:Node" xmi:id="_OeUPAbXAEeamG-Ij7YnW7w" type="7004">
132 <styles xmi:type="notation:SortingStyle" xmi:id="_OeUPArXAEeamG-Ij7YnW7w"/>
133 <styles xmi:type="notation:FilteringStyle" xmi:id="_OeUPA7XAEeamG-Ij7YnW7w"/>
134 </children>
135 <styles xmi:type="notation:ShapeStyle" xmi:id="_OeTn8bXAEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" fillColor="8047085"/>
136 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OeTn8rXAEeamG-Ij7YnW7w" x="684" y="224" height="8"/>
137 </children>
138 <children xmi:type="notation:Node" xmi:id="_P3ExsLXAEeamG-Ij7YnW7w" type="2003" element="_P22IMLXAEeamG-Ij7YnW7w">
139 <children xmi:type="notation:Node" xmi:id="_P3Exs7XAEeamG-Ij7YnW7w" type="5007"/>
140 <children xmi:type="notation:Node" xmi:id="_P3ExtLXAEeamG-Ij7YnW7w" type="7004">
141 <styles xmi:type="notation:SortingStyle" xmi:id="_P3ExtbXAEeamG-Ij7YnW7w"/>
142 <styles xmi:type="notation:FilteringStyle" xmi:id="_P3ExtrXAEeamG-Ij7YnW7w"/>
143 </children>
144 <styles xmi:type="notation:ShapeStyle" xmi:id="_P3ExsbXAEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" fillColor="8047085"/>
145 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3ExsrXAEeamG-Ij7YnW7w" x="867" y="224" height="14"/>
146 </children>
147 <children xmi:type="notation:Node" xmi:id="_RpdVULXAEeamG-Ij7YnW7w" type="2003" element="_RpETwLXAEeamG-Ij7YnW7w">
148 <children xmi:type="notation:Node" xmi:id="_RpdVU7XAEeamG-Ij7YnW7w" type="5007"/>
149 <children xmi:type="notation:Node" xmi:id="_Rpd8YLXAEeamG-Ij7YnW7w" type="7004">
150 <styles xmi:type="notation:SortingStyle" xmi:id="_Rpd8YbXAEeamG-Ij7YnW7w"/>
151 <styles xmi:type="notation:FilteringStyle" xmi:id="_Rpd8YrXAEeamG-Ij7YnW7w"/>
152 </children>
153 <styles xmi:type="notation:ShapeStyle" xmi:id="_RpdVUbXAEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" fillColor="8047085"/>
154 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RpdVUrXAEeamG-Ij7YnW7w" x="1065" y="224" height="8"/>
155 </children>
156 <children xmi:type="notation:Node" xmi:id="_WfHcsLXAEeamG-Ij7YnW7w" type="2003" element="_WexecLXAEeamG-Ij7YnW7w">
157 <children xmi:type="notation:Node" xmi:id="_WfIDwLXAEeamG-Ij7YnW7w" type="5007"/>
158 <children xmi:type="notation:Node" xmi:id="_WfIDwbXAEeamG-Ij7YnW7w" type="7004">
159 <styles xmi:type="notation:SortingStyle" xmi:id="_WfIDwrXAEeamG-Ij7YnW7w"/>
160 <styles xmi:type="notation:FilteringStyle" xmi:id="_WfIDw7XAEeamG-Ij7YnW7w"/>
161 </children>
162 <styles xmi:type="notation:ShapeStyle" xmi:id="_WfHcsbXAEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" fillColor="8047085"/>
163 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WfHcsrXAEeamG-Ij7YnW7w" x="387" y="222" height="43"/>
164 </children>
165 <children xmi:type="notation:Node" xmi:id="_KQMMQLXBEeamG-Ij7YnW7w" type="2003" element="_KP9iwLXBEeamG-Ij7YnW7w">
166 <children xmi:type="notation:Node" xmi:id="_KQMzULXBEeamG-Ij7YnW7w" type="5007"/>
167 <children xmi:type="notation:Node" xmi:id="_KQMzUbXBEeamG-Ij7YnW7w" type="7004">
168 <styles xmi:type="notation:SortingStyle" xmi:id="_KQMzUrXBEeamG-Ij7YnW7w"/>
169 <styles xmi:type="notation:FilteringStyle" xmi:id="_KQMzU7XBEeamG-Ij7YnW7w"/>
170 </children>
171 <styles xmi:type="notation:ShapeStyle" xmi:id="_KQMMQbXBEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
172 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KQMMQrXBEeamG-Ij7YnW7w" x="647" y="355" width="186" height="63"/>
173 </children>
174 <children xmi:type="notation:Node" xmi:id="_WUEN0LXBEeamG-Ij7YnW7w" type="2003" element="_WTu2oLXBEeamG-Ij7YnW7w">
175 <children xmi:type="notation:Node" xmi:id="_WUEN07XBEeamG-Ij7YnW7w" type="5007"/>
176 <children xmi:type="notation:Node" xmi:id="_WUEN1LXBEeamG-Ij7YnW7w" type="7004">
177 <styles xmi:type="notation:SortingStyle" xmi:id="_WUEN1bXBEeamG-Ij7YnW7w"/>
178 <styles xmi:type="notation:FilteringStyle" xmi:id="_WUEN1rXBEeamG-Ij7YnW7w"/>
179 </children>
180 <styles xmi:type="notation:ShapeStyle" xmi:id="_WUEN0bXBEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
181 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WUEN0rXBEeamG-Ij7YnW7w" x="847" y="355" width="178" height="63"/>
182 </children>
183 <children xmi:type="notation:Node" xmi:id="_cCnFALXBEeamG-Ij7YnW7w" type="2003" element="_cCYbgLXBEeamG-Ij7YnW7w">
184 <children xmi:type="notation:Node" xmi:id="_cCnFA7XBEeamG-Ij7YnW7w" type="5007"/>
185 <children xmi:type="notation:Node" xmi:id="_cCnFBLXBEeamG-Ij7YnW7w" type="7004">
186 <styles xmi:type="notation:SortingStyle" xmi:id="_cCnFBbXBEeamG-Ij7YnW7w"/>
187 <styles xmi:type="notation:FilteringStyle" xmi:id="_cCnFBrXBEeamG-Ij7YnW7w"/>
188 </children>
189 <styles xmi:type="notation:ShapeStyle" xmi:id="_cCnFAbXBEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
190 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cCnFArXBEeamG-Ij7YnW7w" x="1037" y="355" width="183" height="63"/>
191 </children>
192 <children xmi:type="notation:Node" xmi:id="_Tg2p4LXCEeamG-Ij7YnW7w" type="2003" element="_TgoAYLXCEeamG-Ij7YnW7w">
193 <children xmi:type="notation:Node" xmi:id="_Tg3Q8LXCEeamG-Ij7YnW7w" type="5007"/>
194 <children xmi:type="notation:Node" xmi:id="_Tg3Q8bXCEeamG-Ij7YnW7w" type="7004">
195 <styles xmi:type="notation:SortingStyle" xmi:id="_Tg3Q8rXCEeamG-Ij7YnW7w"/>
196 <styles xmi:type="notation:FilteringStyle" xmi:id="_Tg3Q87XCEeamG-Ij7YnW7w"/>
197 </children>
198 <styles xmi:type="notation:ShapeStyle" xmi:id="_Tg2p4bXCEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
199 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tg2p4rXCEeamG-Ij7YnW7w" x="325" y="355" width="168" height="63"/>
200 </children>
201 <styles xmi:type="notation:DiagramStyle" xmi:id="_MA7cArW_EeamG-Ij7YnW7w"/>
202 <edges xmi:type="notation:Edge" xmi:id="_v4QEoLW_EeamG-Ij7YnW7w" type="4001" element="_v4JW8LW_EeamG-Ij7YnW7w" source="_ggJ5QLW_EeamG-Ij7YnW7w" target="_v4LzMLW_EeamG-Ij7YnW7w">
203 <children xmi:type="notation:Node" xmi:id="_v4R50LW_EeamG-Ij7YnW7w" type="6001">
204 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4R50bW_EeamG-Ij7YnW7w" x="-13"/>
205 </children>
206 <children xmi:type="notation:Node" xmi:id="_v4Sg4LW_EeamG-Ij7YnW7w" type="6002">
207 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4Sg4bW_EeamG-Ij7YnW7w" x="111"/>
208 </children>
209 <children xmi:type="notation:Node" xmi:id="_v4UWELW_EeamG-Ij7YnW7w" type="6003">
210 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v4UWEbW_EeamG-Ij7YnW7w" x="-54"/>
211 </children>
212 <styles xmi:type="notation:ConnectorStyle" xmi:id="_v4QEobW_EeamG-Ij7YnW7w" routing="Rectilinear"/>
213 <styles xmi:type="notation:FontStyle" xmi:id="_v4QEorW_EeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
214 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v4QEo7W_EeamG-Ij7YnW7w" points="[76, -39, -70, 436]$[130, -39, -16, 436]$[130, -426, -16, 49]"/>
215 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4YngLW_EeamG-Ij7YnW7w" id="(0.5138482649044885,0.7424242424242424)"/>
216 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v4YngbW_EeamG-Ij7YnW7w" id="(0.5,0.5)"/>
217 </edges>
218 <edges xmi:type="notation:Edge" xmi:id="_5LM2sLW_EeamG-Ij7YnW7w" type="4001" element="_5K6i0LW_EeamG-Ij7YnW7w" source="_v4LzMLW_EeamG-Ij7YnW7w" target="_5LJzYLW_EeamG-Ij7YnW7w">
219 <children xmi:type="notation:Node" xmi:id="_5LM2tLW_EeamG-Ij7YnW7w" type="6001">
220 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LM2tbW_EeamG-Ij7YnW7w" x="6" y="-11"/>
221 </children>
222 <children xmi:type="notation:Node" xmi:id="_5LM2trW_EeamG-Ij7YnW7w" type="6002">
223 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LM2t7W_EeamG-Ij7YnW7w" x="10" y="-10"/>
224 </children>
225 <children xmi:type="notation:Node" xmi:id="_5LNdwLW_EeamG-Ij7YnW7w" type="6003">
226 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LNdwbW_EeamG-Ij7YnW7w" x="-16" y="9"/>
227 </children>
228 <styles xmi:type="notation:ConnectorStyle" xmi:id="_5LM2sbW_EeamG-Ij7YnW7w" routing="Rectilinear"/>
229 <styles xmi:type="notation:FontStyle" xmi:id="_5LM2srW_EeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
230 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5LM2s7W_EeamG-Ij7YnW7w" points="[-59, 89, 121, -167]$[-166, 89, 14, -167]$[-166, 150, 14, -106]"/>
231 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5LPS8LW_EeamG-Ij7YnW7w" id="(0.5,0.0)"/>
232 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5LPS8bW_EeamG-Ij7YnW7w" id="(0.5,2.7222222222222223)"/>
233 </edges>
234 <edges xmi:type="notation:Edge" xmi:id="_5LPS8rW_EeamG-Ij7YnW7w" type="4001" element="_5K7w8LW_EeamG-Ij7YnW7w" source="_v4LzMLW_EeamG-Ij7YnW7w" target="_5LH-MLW_EeamG-Ij7YnW7w">
235 <children xmi:type="notation:Node" xmi:id="_5LP6A7W_EeamG-Ij7YnW7w" type="6001">
236 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LP6BLW_EeamG-Ij7YnW7w" x="128" y="79"/>
237 </children>
238 <children xmi:type="notation:Node" xmi:id="_5LP6BbW_EeamG-Ij7YnW7w" type="6002">
239 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LP6BrW_EeamG-Ij7YnW7w" x="-77" y="-10"/>
240 </children>
241 <children xmi:type="notation:Node" xmi:id="_5LP6B7W_EeamG-Ij7YnW7w" type="6003">
242 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LP6CLW_EeamG-Ij7YnW7w" x="278" y="24"/>
243 </children>
244 <styles xmi:type="notation:ConnectorStyle" xmi:id="_5LP6ALW_EeamG-Ij7YnW7w" routing="Rectilinear"/>
245 <styles xmi:type="notation:FontStyle" xmi:id="_5LP6AbW_EeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
246 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5LP6ArW_EeamG-Ij7YnW7w" points="[59, 65, -443, -1359]$[501, 65, -1, -1359]$[501, 150, -1, -1274]"/>
247 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5LQhELW_EeamG-Ij7YnW7w" id="(0.5,0.0)"/>
248 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5LQhEbW_EeamG-Ij7YnW7w" id="(0.5,32.666666666666664)"/>
249 </edges>
250 <edges xmi:type="notation:Edge" xmi:id="_5LQhErW_EeamG-Ij7YnW7w" type="4001" element="_5K9mI7W_EeamG-Ij7YnW7w" source="_v4LzMLW_EeamG-Ij7YnW7w" target="_5LIlRLW_EeamG-Ij7YnW7w">
251 <children xmi:type="notation:Node" xmi:id="_5LRIILW_EeamG-Ij7YnW7w" type="6001">
252 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LRIIbW_EeamG-Ij7YnW7w" x="34" y="78"/>
253 </children>
254 <children xmi:type="notation:Node" xmi:id="_5LRIIrW_EeamG-Ij7YnW7w" type="6002">
255 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LRII7W_EeamG-Ij7YnW7w" x="-30" y="10"/>
256 </children>
257 <children xmi:type="notation:Node" xmi:id="_5LRIJLW_EeamG-Ij7YnW7w" type="6003">
258 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LRIJbW_EeamG-Ij7YnW7w" x="-37" y="118"/>
259 </children>
260 <styles xmi:type="notation:ConnectorStyle" xmi:id="_5LQhE7W_EeamG-Ij7YnW7w" routing="Rectilinear"/>
261 <styles xmi:type="notation:FontStyle" xmi:id="_5LQhFLW_EeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
262 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5LQhFbW_EeamG-Ij7YnW7w" points="[59, 65, -244, -208]$[302, 65, -1, -208]$[302, 150, -1, -123]"/>
263 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5LRIJrW_EeamG-Ij7YnW7w" id="(0.5,0.0)"/>
264 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5LRIJ7W_EeamG-Ij7YnW7w" id="(0.5,3.161290322580645)"/>
265 </edges>
266 <edges xmi:type="notation:Edge" xmi:id="_5LRvMLW_EeamG-Ij7YnW7w" type="4001" element="_5K_bULW_EeamG-Ij7YnW7w" source="_v4LzMLW_EeamG-Ij7YnW7w" target="_5LFh8LW_EeamG-Ij7YnW7w">
267 <children xmi:type="notation:Node" xmi:id="_5LRvNLW_EeamG-Ij7YnW7w" type="6001">
268 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LRvNbW_EeamG-Ij7YnW7w" x="69" y="47"/>
269 </children>
270 <children xmi:type="notation:Node" xmi:id="_5LRvNrW_EeamG-Ij7YnW7w" type="6002">
271 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LRvN7W_EeamG-Ij7YnW7w" x="-7" y="10"/>
272 </children>
273 <children xmi:type="notation:Node" xmi:id="_5LRvOLW_EeamG-Ij7YnW7w" type="6003">
274 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LRvObW_EeamG-Ij7YnW7w" x="18"/>
275 </children>
276 <styles xmi:type="notation:ConnectorStyle" xmi:id="_5LRvMbW_EeamG-Ij7YnW7w" routing="Rectilinear"/>
277 <styles xmi:type="notation:FontStyle" xmi:id="_5LRvMrW_EeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
278 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5LRvM7W_EeamG-Ij7YnW7w" points="[59, 65, -63, -323]$[138, 65, 16, -323]$[138, 150, 16, -238]"/>
279 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5LSWQLW_EeamG-Ij7YnW7w" id="(0.5,0.0)"/>
280 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5LSWQbW_EeamG-Ij7YnW7w" id="(0.5,6.125)"/>
281 </edges>
282 <edges xmi:type="notation:Edge" xmi:id="_5LSWQrW_EeamG-Ij7YnW7w" type="4001" element="_5LApcLW_EeamG-Ij7YnW7w" source="_v4LzMLW_EeamG-Ij7YnW7w" target="_5LGwELW_EeamG-Ij7YnW7w">
283 <children xmi:type="notation:Node" xmi:id="_5LS9ULW_EeamG-Ij7YnW7w" type="6001">
284 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LS9UbW_EeamG-Ij7YnW7w" x="-2" y="10"/>
285 </children>
286 <children xmi:type="notation:Node" xmi:id="_5LS9UrW_EeamG-Ij7YnW7w" type="6002">
287 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LS9U7W_EeamG-Ij7YnW7w" x="105" y="-10"/>
288 </children>
289 <children xmi:type="notation:Node" xmi:id="_5LS9VLW_EeamG-Ij7YnW7w" type="6003">
290 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LS9VbW_EeamG-Ij7YnW7w" x="-15" y="-218"/>
291 </children>
292 <styles xmi:type="notation:ConnectorStyle" xmi:id="_5LSWQ7W_EeamG-Ij7YnW7w" routing="Rectilinear"/>
293 <styles xmi:type="notation:FontStyle" xmi:id="_5LSWRLW_EeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
294 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5LSWRbW_EeamG-Ij7YnW7w" points="[-59, 70, 261, -178]$[-344, 70, -24, -178]$[-344, 150, -24, -98]"/>
295 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5LS9VrW_EeamG-Ij7YnW7w" id="(0.5,0.0)"/>
296 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5LS9V7W_EeamG-Ij7YnW7w" id="(0.5,2.5128205128205128)"/>
297 </edges>
298 <edges xmi:type="notation:Edge" xmi:id="_5LTkYLW_EeamG-Ij7YnW7w" visible="false" type="4001" element="_5LB3kLW_EeamG-Ij7YnW7w" source="_5LJzYLW_EeamG-Ij7YnW7w" target="_5LJzYLW_EeamG-Ij7YnW7w">
299 <children xmi:type="notation:Node" xmi:id="_5LTkZLW_EeamG-Ij7YnW7w" type="6001">
300 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LTkZbW_EeamG-Ij7YnW7w" y="-10"/>
301 </children>
302 <children xmi:type="notation:Node" xmi:id="_5LTkZrW_EeamG-Ij7YnW7w" type="6002">
303 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LTkZ7W_EeamG-Ij7YnW7w" y="10"/>
304 </children>
305 <children xmi:type="notation:Node" xmi:id="_5LTkaLW_EeamG-Ij7YnW7w" type="6003">
306 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5LTkabW_EeamG-Ij7YnW7w" y="10"/>
307 </children>
308 <styles xmi:type="notation:ConnectorStyle" xmi:id="_5LTkYbW_EeamG-Ij7YnW7w" routing="Rectilinear"/>
309 <styles xmi:type="notation:FontStyle" xmi:id="_5LTkYrW_EeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
310 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5LTkY7W_EeamG-Ij7YnW7w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
311 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5LULcLW_EeamG-Ij7YnW7w" id="(0.5,1.3611111111111112)"/>
312 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5LULcbW_EeamG-Ij7YnW7w" id="(0.5,1.3611111111111112)"/>
313 </edges>
314 <edges xmi:type="notation:Edge" xmi:id="_OeU2ELXAEeamG-Ij7YnW7w" type="4001" element="_OePWgLXAEeamG-Ij7YnW7w" source="_OeTn8LXAEeamG-Ij7YnW7w" target="_5LFh8LW_EeamG-Ij7YnW7w">
315 <children xmi:type="notation:Node" xmi:id="_OeVdILXAEeamG-Ij7YnW7w" type="6001">
316 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OeVdIbXAEeamG-Ij7YnW7w" x="6" y="-10"/>
317 </children>
318 <children xmi:type="notation:Node" xmi:id="_OeVdIrXAEeamG-Ij7YnW7w" type="6002">
319 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OeVdI7XAEeamG-Ij7YnW7w" x="2" y="10"/>
320 </children>
321 <children xmi:type="notation:Node" xmi:id="_OeVdJLXAEeamG-Ij7YnW7w" type="6003">
322 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OeVdJbXAEeamG-Ij7YnW7w" x="-3" y="10"/>
323 </children>
324 <styles xmi:type="notation:ConnectorStyle" xmi:id="_OeU2EbXAEeamG-Ij7YnW7w" routing="Tree"/>
325 <styles xmi:type="notation:FontStyle" xmi:id="_OeU2ErXAEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
326 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OeU2E7XAEeamG-Ij7YnW7w" points="[0, -49, 4, 86]$[0, -74, 4, 61]$[0, -74, 4, 61]$[0, -86, 4, 49]"/>
327 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OeVdJrXAEeamG-Ij7YnW7w" id="(0.5,16.333333333333332)"/>
328 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OeVdJ7XAEeamG-Ij7YnW7w" id="(0.5,3.0625)"/>
329 </edges>
330 <edges xmi:type="notation:Edge" xmi:id="_P3FYwLXAEeamG-Ij7YnW7w" type="4001" element="_P3BuYLXAEeamG-Ij7YnW7w" source="_P3ExsLXAEeamG-Ij7YnW7w" target="_5LIlRLW_EeamG-Ij7YnW7w">
331 <children xmi:type="notation:Node" xmi:id="_P3F_0LXAEeamG-Ij7YnW7w" type="6001">
332 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3F_0bXAEeamG-Ij7YnW7w" x="-54"/>
333 </children>
334 <children xmi:type="notation:Node" xmi:id="_P3F_0rXAEeamG-Ij7YnW7w" type="6002">
335 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3F_07XAEeamG-Ij7YnW7w" x="11" y="-2"/>
336 </children>
337 <children xmi:type="notation:Node" xmi:id="_P3F_1LXAEeamG-Ij7YnW7w" type="6003">
338 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3F_1bXAEeamG-Ij7YnW7w" x="-29" y="25"/>
339 </children>
340 <styles xmi:type="notation:ConnectorStyle" xmi:id="_P3FYwbXAEeamG-Ij7YnW7w" routing="Tree"/>
341 <styles xmi:type="notation:FontStyle" xmi:id="_P3FYwrXAEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
342 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_P3FYw7XAEeamG-Ij7YnW7w" points="[0, -159, -1, -2]$[0, -163, -1, -6]$[-3, -163, -4, -6]$[-3, -179, -4, -22]"/>
343 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P3Gm4LXAEeamG-Ij7YnW7w" id="(0.5,4.083333333333333)"/>
344 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P3Gm4bXAEeamG-Ij7YnW7w" id="(0.5,1.5806451612903225)"/>
345 </edges>
346 <edges xmi:type="notation:Edge" xmi:id="_RpejcLXAEeamG-Ij7YnW7w" type="4001" element="_RpYc0LXAEeamG-Ij7YnW7w" source="_RpdVULXAEeamG-Ij7YnW7w" target="_5LH-MLW_EeamG-Ij7YnW7w">
347 <children xmi:type="notation:Node" xmi:id="_RpfKgLXAEeamG-Ij7YnW7w" type="6001">
348 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RpfKgbXAEeamG-Ij7YnW7w" x="10"/>
349 </children>
350 <children xmi:type="notation:Node" xmi:id="_RpfKgrXAEeamG-Ij7YnW7w" type="6002">
351 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RpfKg7XAEeamG-Ij7YnW7w" x="12" y="10"/>
352 </children>
353 <children xmi:type="notation:Node" xmi:id="_RpfKhLXAEeamG-Ij7YnW7w" type="6003">
354 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RpfKhbXAEeamG-Ij7YnW7w" x="-10"/>
355 </children>
356 <styles xmi:type="notation:ConnectorStyle" xmi:id="_RpejcbXAEeamG-Ij7YnW7w" routing="Tree"/>
357 <styles xmi:type="notation:FontStyle" xmi:id="_RpejcrXAEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
358 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Rpejc7XAEeamG-Ij7YnW7w" points="[0, -637, 0, -578]$[0, -637, 0, -578]$[-1, -637, -1, -578]$[-1, -657, -1, -598]"/>
359 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RpfxkLXAEeamG-Ij7YnW7w" id="(0.5,16.333333333333332)"/>
360 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RpfxkbXAEeamG-Ij7YnW7w" id="(0.5,16.333333333333332)"/>
361 </edges>
362 <edges xmi:type="notation:Edge" xmi:id="_WfJR4LXAEeamG-Ij7YnW7w" type="4001" element="_WfDLQLXAEeamG-Ij7YnW7w" source="_WfHcsLXAEeamG-Ij7YnW7w" target="_5LJzYLW_EeamG-Ij7YnW7w">
363 <children xmi:type="notation:Node" xmi:id="_WfJ48LXAEeamG-Ij7YnW7w" type="6001">
364 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WfJ48bXAEeamG-Ij7YnW7w" x="3" y="-1"/>
365 </children>
366 <children xmi:type="notation:Node" xmi:id="_WfKgALXAEeamG-Ij7YnW7w" type="6002">
367 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WfKgAbXAEeamG-Ij7YnW7w"/>
368 </children>
369 <children xmi:type="notation:Node" xmi:id="_WfLHELXAEeamG-Ij7YnW7w" type="6003">
370 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WfLHEbXAEeamG-Ij7YnW7w" x="-13" y="9"/>
371 </children>
372 <styles xmi:type="notation:ConnectorStyle" xmi:id="_WfJR4bXAEeamG-Ij7YnW7w" routing="Tree"/>
373 <styles xmi:type="notation:FontStyle" xmi:id="_WfJR4rXAEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
374 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WfJR47XAEeamG-Ij7YnW7w" points="[0, -49, 0, 4]$[0, -61, 0, -8]$[-1, -61, -1, -8]$[-1, -67, -1, -14]"/>
375 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WfLHErXAEeamG-Ij7YnW7w" id="(0.5,1.1951219512195121)"/>
376 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WfLHE7XAEeamG-Ij7YnW7w" id="(0.5,1.3611111111111112)"/>
377 </edges>
378 <edges xmi:type="notation:Edge" xmi:id="_jxh4gLXBEeamG-Ij7YnW7w" type="4001" element="_jxT2ELXBEeamG-Ij7YnW7w" source="_KQMMQLXBEeamG-Ij7YnW7w" target="_OeTn8LXAEeamG-Ij7YnW7w">
379 <children xmi:type="notation:Node" xmi:id="_jxh4hLXBEeamG-Ij7YnW7w" type="6001">
380 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxh4hbXBEeamG-Ij7YnW7w" x="-2" y="-62"/>
381 </children>
382 <children xmi:type="notation:Node" xmi:id="_jxh4hrXBEeamG-Ij7YnW7w" type="6002">
383 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxh4h7XBEeamG-Ij7YnW7w" y="10"/>
384 </children>
385 <children xmi:type="notation:Node" xmi:id="_jxh4iLXBEeamG-Ij7YnW7w" type="6003">
386 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxh4ibXBEeamG-Ij7YnW7w" y="10"/>
387 </children>
388 <styles xmi:type="notation:ConnectorStyle" xmi:id="_jxh4gbXBEeamG-Ij7YnW7w" routing="Rectilinear"/>
389 <styles xmi:type="notation:FontStyle" xmi:id="_jxh4grXBEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
390 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jxh4g7XBEeamG-Ij7YnW7w" points="[0, 0, 0, 92]$[0, -92, 0, 0]"/>
391 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jxifkLXBEeamG-Ij7YnW7w" id="(0.7228260869565217,0.0)"/>
392 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jxifkbXBEeamG-Ij7YnW7w" id="(0.7559055118110236,1.0)"/>
393 </edges>
394 <edges xmi:type="notation:Edge" xmi:id="_owtIQLXBEeamG-Ij7YnW7w" type="4001" element="_owbbcLXBEeamG-Ij7YnW7w" source="_WUEN0LXBEeamG-Ij7YnW7w" target="_P3ExsLXAEeamG-Ij7YnW7w">
395 <children xmi:type="notation:Node" xmi:id="_owtvULXBEeamG-Ij7YnW7w" type="6001">
396 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_owtvUbXBEeamG-Ij7YnW7w" x="-7" y="-67"/>
397 </children>
398 <children xmi:type="notation:Node" xmi:id="_owtvUrXBEeamG-Ij7YnW7w" type="6002">
399 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_owtvU7XBEeamG-Ij7YnW7w" x="1" y="10"/>
400 </children>
401 <children xmi:type="notation:Node" xmi:id="_owtvVLXBEeamG-Ij7YnW7w" type="6003">
402 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_owtvVbXBEeamG-Ij7YnW7w" x="-1" y="10"/>
403 </children>
404 <styles xmi:type="notation:ConnectorStyle" xmi:id="_owtIQbXBEeamG-Ij7YnW7w" routing="Rectilinear"/>
405 <styles xmi:type="notation:FontStyle" xmi:id="_owtIQrXBEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
406 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_owtIQ7XBEeamG-Ij7YnW7w" points="[38, 0, 0, 92]$[38, -92, 0, 0]"/>
407 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_owtvVrXBEeamG-Ij7YnW7w" id="(0.3125,0.0)"/>
408 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_owtvV7XBEeamG-Ij7YnW7w" id="(0.5934959349593496,1.0)"/>
409 </edges>
410 <edges xmi:type="notation:Edge" xmi:id="_qsii0LXBEeamG-Ij7YnW7w" type="4001" element="_qsPn4LXBEeamG-Ij7YnW7w" source="_cCnFALXBEeamG-Ij7YnW7w" target="_RpdVULXAEeamG-Ij7YnW7w">
411 <children xmi:type="notation:Node" xmi:id="_qsjJ4LXBEeamG-Ij7YnW7w" type="6001">
412 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qsjJ4bXBEeamG-Ij7YnW7w" x="3" y="-59"/>
413 </children>
414 <children xmi:type="notation:Node" xmi:id="_qsjJ4rXBEeamG-Ij7YnW7w" type="6002">
415 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qsjJ47XBEeamG-Ij7YnW7w" x="11" y="10"/>
416 </children>
417 <children xmi:type="notation:Node" xmi:id="_qsjJ5LXBEeamG-Ij7YnW7w" type="6003">
418 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qsjJ5bXBEeamG-Ij7YnW7w" x="-11" y="10"/>
419 </children>
420 <styles xmi:type="notation:ConnectorStyle" xmi:id="_qsii0bXBEeamG-Ij7YnW7w" routing="Rectilinear"/>
421 <styles xmi:type="notation:FontStyle" xmi:id="_qsii0rXBEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
422 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qsii07XBEeamG-Ij7YnW7w" points="[-1, 0, -33, 92]$[-1, -92, -33, 0]"/>
423 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qsjJ5rXBEeamG-Ij7YnW7w" id="(0.5027624309392266,0.0)"/>
424 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qsjJ57XBEeamG-Ij7YnW7w" id="(0.753968253968254,1.0)"/>
425 </edges>
426 <edges xmi:type="notation:Edge" xmi:id="_2G-l0LXBEeamG-Ij7YnW7w" type="4001" element="_2Grq4LXBEeamG-Ij7YnW7w" source="_ggJ5QLW_EeamG-Ij7YnW7w" target="_KQMMQLXBEeamG-Ij7YnW7w">
427 <children xmi:type="notation:Node" xmi:id="_2G-l1LXBEeamG-Ij7YnW7w" type="6001">
428 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2G-l1bXBEeamG-Ij7YnW7w" x="-58" y="-12"/>
429 </children>
430 <children xmi:type="notation:Node" xmi:id="_2G_M4LXBEeamG-Ij7YnW7w" type="6002">
431 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2G_M4bXBEeamG-Ij7YnW7w" x="29" y="10"/>
432 </children>
433 <children xmi:type="notation:Node" xmi:id="_2G_M4rXBEeamG-Ij7YnW7w" type="6003">
434 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2G_M47XBEeamG-Ij7YnW7w" x="-85" y="-14"/>
435 </children>
436 <styles xmi:type="notation:ConnectorStyle" xmi:id="_2G-l0bXBEeamG-Ij7YnW7w" routing="Rectilinear"/>
437 <styles xmi:type="notation:FontStyle" xmi:id="_2G-l0rXBEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
438 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2G-l07XBEeamG-Ij7YnW7w" points="[0, -27, -91, 143]$[191, -27, 100, 143]$[191, -149, 100, 21]"/>
439 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2G_M5LXBEeamG-Ij7YnW7w" id="(0.9337016574585635,1.1363636363636365)"/>
440 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2G_M5bXBEeamG-Ij7YnW7w" id="(0.0,0.6557377049180327)"/>
441 </edges>
442 <edges xmi:type="notation:Edge" xmi:id="_2333QLXBEeamG-Ij7YnW7w" type="4001" element="_23ljYLXBEeamG-Ij7YnW7w" source="_ggJ5QLW_EeamG-Ij7YnW7w" target="_WUEN0LXBEeamG-Ij7YnW7w">
443 <children xmi:type="notation:Node" xmi:id="_234eULXBEeamG-Ij7YnW7w" type="6001">
444 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_234eUbXBEeamG-Ij7YnW7w" x="44" y="-12"/>
445 </children>
446 <children xmi:type="notation:Node" xmi:id="_235FYLXBEeamG-Ij7YnW7w" type="6002">
447 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_235FYbXBEeamG-Ij7YnW7w" x="31" y="10"/>
448 </children>
449 <children xmi:type="notation:Node" xmi:id="_235scLXBEeamG-Ij7YnW7w" type="6003">
450 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_235scbXBEeamG-Ij7YnW7w" x="-55" y="-141"/>
451 </children>
452 <styles xmi:type="notation:ConnectorStyle" xmi:id="_2333QbXBEeamG-Ij7YnW7w" routing="Rectilinear"/>
453 <styles xmi:type="notation:FontStyle" xmi:id="_2333QrXBEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
454 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2333Q7XBEeamG-Ij7YnW7w" points="[0, -37, -291, 148]$[391, -37, 100, 148]$[391, -159, 100, 26]"/>
455 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_236TgLXBEeamG-Ij7YnW7w" id="(0.9337016574585635,1.2878787878787878)"/>
456 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_236TgbXBEeamG-Ij7YnW7w" id="(0.0,0.5737704918032787)"/>
457 </edges>
458 <edges xmi:type="notation:Edge" xmi:id="_3UZbMLXBEeamG-Ij7YnW7w" type="4001" element="_3UBAsLXBEeamG-Ij7YnW7w" source="_ggJ5QLW_EeamG-Ij7YnW7w" target="_cCnFALXBEeamG-Ij7YnW7w">
459 <children xmi:type="notation:Node" xmi:id="_3UaCQLXBEeamG-Ij7YnW7w" type="6001">
460 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3UaCQbXBEeamG-Ij7YnW7w" x="134" y="-12"/>
461 </children>
462 <children xmi:type="notation:Node" xmi:id="_3UaCQrXBEeamG-Ij7YnW7w" type="6002">
463 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3UaCQ7XBEeamG-Ij7YnW7w" x="29" y="10"/>
464 </children>
465 <children xmi:type="notation:Node" xmi:id="_3UaCRLXBEeamG-Ij7YnW7w" type="6003">
466 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3UaCRbXBEeamG-Ij7YnW7w" x="-26" y="-173"/>
467 </children>
468 <styles xmi:type="notation:ConnectorStyle" xmi:id="_3UZbMbXBEeamG-Ij7YnW7w" routing="Rectilinear"/>
469 <styles xmi:type="notation:FontStyle" xmi:id="_3UZbMrXBEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
470 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3UZbM7XBEeamG-Ij7YnW7w" points="[0, -32, -481, 143]$[586, -32, 105, 143]$[586, -154, 105, 21]"/>
471 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3UapULXBEeamG-Ij7YnW7w" id="(0.9337016574585635,1.2121212121212122)"/>
472 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3UapUbXBEeamG-Ij7YnW7w" id="(0.0,0.6557377049180327)"/>
473 </edges>
474 <edges xmi:type="notation:Edge" xmi:id="_H4oCgLXCEeamG-Ij7YnW7w" type="4001" element="_H4YK4LXCEeamG-Ij7YnW7w" source="_ggJ5QLW_EeamG-Ij7YnW7w" target="_5LGwELW_EeamG-Ij7YnW7w">
475 <children xmi:type="notation:Node" xmi:id="_H4oChLXCEeamG-Ij7YnW7w" type="6001">
476 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H4oChbXCEeamG-Ij7YnW7w" x="-20" y="35"/>
477 </children>
478 <children xmi:type="notation:Node" xmi:id="_H4oChrXCEeamG-Ij7YnW7w" type="6002">
479 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H4oCh7XCEeamG-Ij7YnW7w" x="32" y="223"/>
480 </children>
481 <children xmi:type="notation:Node" xmi:id="_H4opkLXCEeamG-Ij7YnW7w" type="6003">
482 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H4opkbXCEeamG-Ij7YnW7w" x="23" y="10"/>
483 </children>
484 <styles xmi:type="notation:ConnectorStyle" xmi:id="_H4oCgbXCEeamG-Ij7YnW7w" routing="Rectilinear"/>
485 <styles xmi:type="notation:FontStyle" xmi:id="_H4oCgrXCEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
486 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_H4oCg7XCEeamG-Ij7YnW7w" points="[-57, 75, 113, 361]$[-170, 75, 0, 361]$[-170, -286, 0, 0]"/>
487 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_H4opkrXCEeamG-Ij7YnW7w" id="(0.4143646408839779,0.0)"/>
488 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_H4opk7XCEeamG-Ij7YnW7w" id="(0.3813559322033898,1.0)"/>
489 </edges>
490 <edges xmi:type="notation:Edge" xmi:id="_zI5OoLXCEeamG-Ij7YnW7w" type="4001" element="_zIoI4LXCEeamG-Ij7YnW7w" source="_Tg2p4LXCEeamG-Ij7YnW7w" target="_WfHcsLXAEeamG-Ij7YnW7w">
491 <children xmi:type="notation:Node" xmi:id="_zI5OpLXCEeamG-Ij7YnW7w" type="6001">
492 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zI5OpbXCEeamG-Ij7YnW7w" x="8" y="66"/>
493 </children>
494 <children xmi:type="notation:Node" xmi:id="_zI5OprXCEeamG-Ij7YnW7w" type="6002">
495 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zI5Op7XCEeamG-Ij7YnW7w" x="20" y="6"/>
496 </children>
497 <children xmi:type="notation:Node" xmi:id="_zI51sLXCEeamG-Ij7YnW7w" type="6003">
498 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zI51sbXCEeamG-Ij7YnW7w" x="-32" y="2"/>
499 </children>
500 <styles xmi:type="notation:ConnectorStyle" xmi:id="_zI5OobXCEeamG-Ij7YnW7w" routing="Rectilinear"/>
501 <styles xmi:type="notation:FontStyle" xmi:id="_zI5OorXCEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
502 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zI5Oo7XCEeamG-Ij7YnW7w" points="[30, 0, 0, 92]$[30, -92, 0, 0]"/>
503 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zI51srXCEeamG-Ij7YnW7w" id="(0.6325301204819277,0.0)"/>
504 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zI51s7XCEeamG-Ij7YnW7w" id="(0.6186440677966102,1.0)"/>
505 </edges>
506 <edges xmi:type="notation:Edge" xmi:id="_2TIWALXCEeamG-Ij7YnW7w" type="4001" element="_2Sy-0LXCEeamG-Ij7YnW7w" source="_ggJ5QLW_EeamG-Ij7YnW7w" target="_Tg2p4LXCEeamG-Ij7YnW7w">
507 <children xmi:type="notation:Node" xmi:id="_2TI9ELXCEeamG-Ij7YnW7w" type="6001">
508 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2TI9EbXCEeamG-Ij7YnW7w" x="7" y="86"/>
509 </children>
510 <children xmi:type="notation:Node" xmi:id="_2TI9ErXCEeamG-Ij7YnW7w" type="6002">
511 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2TI9E7XCEeamG-Ij7YnW7w" x="-13" y="-11"/>
512 </children>
513 <children xmi:type="notation:Node" xmi:id="_2TI9FLXCEeamG-Ij7YnW7w" type="6003">
514 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2TI9FbXCEeamG-Ij7YnW7w" x="-64" y="34"/>
515 </children>
516 <styles xmi:type="notation:ConnectorStyle" xmi:id="_2TIWAbXCEeamG-Ij7YnW7w" routing="Rectilinear"/>
517 <styles xmi:type="notation:FontStyle" xmi:id="_2TIWArXCEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
518 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2TIWA7XCEeamG-Ij7YnW7w" points="[0, -45, -86, 119]$[-41, -45, -127, 119]$[-41, -134, -127, 30]"/>
519 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2TI9FrXCEeamG-Ij7YnW7w" id="(0.09944751381215469,0.9090909090909091)"/>
520 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2TI9F7XCEeamG-Ij7YnW7w" id="(1.0,0.5081967213114754)"/>
521 </edges>
522 <edges xmi:type="notation:Edge" xmi:id="_kldk8LXDEeamG-Ij7YnW7w" type="4001" element="_klNtULXDEeamG-Ij7YnW7w" source="_Tg2p4LXCEeamG-Ij7YnW7w" target="_5LGwELW_EeamG-Ij7YnW7w">
523 <children xmi:type="notation:Node" xmi:id="_kleMALXDEeamG-Ij7YnW7w" type="6001">
524 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kleMAbXDEeamG-Ij7YnW7w" y="-10"/>
525 </children>
526 <children xmi:type="notation:Node" xmi:id="_kleMArXDEeamG-Ij7YnW7w" type="6002">
527 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kleMA7XDEeamG-Ij7YnW7w" y="10"/>
528 </children>
529 <children xmi:type="notation:Node" xmi:id="_kleMBLXDEeamG-Ij7YnW7w" type="6003">
530 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kleMBbXDEeamG-Ij7YnW7w" y="10"/>
531 </children>
532 <styles xmi:type="notation:ConnectorStyle" xmi:id="_kldk8bXDEeamG-Ij7YnW7w" routing="Rectilinear"/>
533 <styles xmi:type="notation:FontStyle" xmi:id="_kldk8rXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
534 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kldk87XDEeamG-Ij7YnW7w" points="[325, 355, 325, 355]$[247, 165, 247, 165]"/>
535 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kleMBrXDEeamG-Ij7YnW7w" id="(0.5,0.49206349206349204)"/>
536 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kleMB7XDEeamG-Ij7YnW7w" id="(0.5,0.4878048780487805)"/>
537 </edges>
538 <edges xmi:type="notation:Edge" xmi:id="_Qrl3AL5UEea19paI6HZj1w" type="4001" element="_QrIkAL5UEea19paI6HZj1w" source="_ggJ5QLW_EeamG-Ij7YnW7w" target="_5LGwELW_EeamG-Ij7YnW7w">
539 <children xmi:type="notation:Node" xmi:id="_QrphYL5UEea19paI6HZj1w" type="6001">
540 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QrphYb5UEea19paI6HZj1w" x="-101" y="85"/>
541 </children>
542 <children xmi:type="notation:Node" xmi:id="_QrqvgL5UEea19paI6HZj1w" type="6002">
543 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qrqvgb5UEea19paI6HZj1w" x="-65" y="18"/>
544 </children>
545 <children xmi:type="notation:Node" xmi:id="_Qrr9oL5UEea19paI6HZj1w" type="6003">
546 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qrr9ob5UEea19paI6HZj1w" x="20" y="10"/>
547 </children>
548 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Qrl3Ab5UEea19paI6HZj1w" routing="Rectilinear"/>
549 <styles xmi:type="notation:FontStyle" xmi:id="_Qrl3Ar5UEea19paI6HZj1w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
550 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Qrl3A75UEea19paI6HZj1w" points="[0, 66, 170, 352]$[0, 100, 170, 386]$[-170, 100, 0, 386]$[-170, -286, 0, 0]"/>
551 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QrtLwL5UEea19paI6HZj1w" id="(0.23756906077348067,0.0)"/>
552 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QrtLwb5UEea19paI6HZj1w" id="(0.11016949152542373,1.0)"/>
553 </edges>
554 </data>
555 </ownedAnnotationEntries>
556 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_gf_hMLW_EeamG-Ij7YnW7w" name="PartialInterpretation" tooltipText="" outgoingEdges="_v4JW8LW_EeamG-Ij7YnW7w _2Grq4LXBEeamG-Ij7YnW7w _23ljYLXBEeamG-Ij7YnW7w _3UBAsLXBEeamG-Ij7YnW7w _H4YK4LXCEeamG-Ij7YnW7w _2Sy-0LXCEeamG-Ij7YnW7w _QrIkAL5UEea19paI6HZj1w" width="12" height="10">
557 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialInterpretation"/>
558 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialInterpretation"/>
559 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
560 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
561 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
562 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HsFlYL5UEea19paI6HZj1w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
563 <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"/>
564 </ownedStyle>
565 <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']"/>
566 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_-3bR0L5TEea19paI6HZj1w" name="minNewElements : EInt = 0" tooltipText="">
567 <target xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//PartialInterpretation/minNewElements"/>
568 <semanticElements xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//PartialInterpretation/minNewElements"/>
569 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_Fh17YL5UEea19paI6HZj1w" labelAlignment="LEFT" description="_5K2RYLW_EeamG-Ij7YnW7w">
570 <labelFormat>bold</labelFormat>
571 </ownedStyle>
572 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
573 </ownedElements>
574 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_BBOP4L5UEea19paI6HZj1w" name="maxNewElements : EInt = 0" tooltipText="">
575 <target xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//PartialInterpretation/maxNewElements"/>
576 <semanticElements xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//PartialInterpretation/maxNewElements"/>
577 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HsLE8L5UEea19paI6HZj1w" labelAlignment="LEFT" description="_5K2RYLW_EeamG-Ij7YnW7w">
578 <labelFormat>bold</labelFormat>
579 </ownedStyle>
580 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
581 </ownedElements>
582 </ownedDiagramElements>
583 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_v4CCMLW_EeamG-Ij7YnW7w" name="LogicProblem" tooltipText="" outgoingEdges="_5K6i0LW_EeamG-Ij7YnW7w _5K7w8LW_EeamG-Ij7YnW7w _5K9mI7W_EeamG-Ij7YnW7w _5K_bULW_EeamG-Ij7YnW7w _5LApcLW_EeamG-Ij7YnW7w" incomingEdges="_v4JW8LW_EeamG-Ij7YnW7w" width="12" height="10">
584 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem"/>
585 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem"/>
586 <decorations xmi:type="viewpoint:Decoration" xmi:id="_v4II0LW_EeamG-Ij7YnW7w">
587 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
588 </decorations>
589 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
590 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
591 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
592 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_v4DQULW_EeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
593 <customFeatures>backgroundColor</customFeatures>
594 <customFeatures>foregroundColor</customFeatures>
595 <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"/>
596 </ownedStyle>
597 <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']"/>
598 </ownedDiagramElements>
599 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_v4JW8LW_EeamG-Ij7YnW7w" name="[1..1] problem" sourceNode="_gf_hMLW_EeamG-Ij7YnW7w" targetNode="_v4CCMLW_EeamG-Ij7YnW7w">
600 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/problem"/>
601 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/problem"/>
602 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_v4KlELW_EeamG-Ij7YnW7w" description="_v4J-ALW_EeamG-Ij7YnW7w" routingStyle="manhattan" strokeColor="0,0,0">
603 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_v4KlEbW_EeamG-Ij7YnW7w" showIcon="false">
604 <customFeatures>labelSize</customFeatures>
605 <labelFormat>bold</labelFormat>
606 </centerLabelStyle>
607 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_v4KlErW_EeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
608 <customFeatures>labelSize</customFeatures>
609 </endLabelStyle>
610 </ownedStyle>
611 <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']"/>
612 </ownedDiagramElements>
613 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_5KlLoLW_EeamG-Ij7YnW7w" name="Constant" tooltipText="" incomingEdges="_5K_bULW_EeamG-Ij7YnW7w _OePWgLXAEeamG-Ij7YnW7w" width="12" height="10">
614 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Constant"/>
615 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Constant"/>
616 <decorations xmi:type="viewpoint:Decoration" xmi:id="_5K4toLW_EeamG-Ij7YnW7w">
617 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
618 </decorations>
619 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
620 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
621 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
622 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_5KlysLW_EeamG-Ij7YnW7w" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
623 <customFeatures>backgroundColor</customFeatures>
624 <customFeatures>foregroundColor</customFeatures>
625 <labelFormat>italic</labelFormat>
626 <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"/>
627 </ownedStyle>
628 <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']"/>
629 </ownedDiagramElements>
630 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_5KnA0LW_EeamG-Ij7YnW7w" name="DefinedElement" tooltipText="" incomingEdges="_5LApcLW_EeamG-Ij7YnW7w _H4YK4LXCEeamG-Ij7YnW7w _klNtULXDEeamG-Ij7YnW7w _QrIkAL5UEea19paI6HZj1w" width="12" height="10">
631 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//DefinedElement"/>
632 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//DefinedElement"/>
633 <decorations xmi:type="viewpoint:Decoration" xmi:id="_5K4tobW_EeamG-Ij7YnW7w">
634 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
635 </decorations>
636 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
637 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
638 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
639 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_5KnA0bW_EeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
640 <customFeatures>backgroundColor</customFeatures>
641 <customFeatures>foregroundColor</customFeatures>
642 <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"/>
643 </ownedStyle>
644 <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']"/>
645 </ownedDiagramElements>
646 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_5KoO8LW_EeamG-Ij7YnW7w" name="Function" tooltipText="" incomingEdges="_5K7w8LW_EeamG-Ij7YnW7w _RpYc0LXAEeamG-Ij7YnW7w" width="12" height="10">
647 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Function"/>
648 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Function"/>
649 <decorations xmi:type="viewpoint:Decoration" xmi:id="_5K4torW_EeamG-Ij7YnW7w">
650 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
651 </decorations>
652 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
653 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
654 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
655 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_5Ko2ALW_EeamG-Ij7YnW7w" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
656 <customFeatures>backgroundColor</customFeatures>
657 <customFeatures>foregroundColor</customFeatures>
658 <labelFormat>italic</labelFormat>
659 <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"/>
660 </ownedStyle>
661 <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']"/>
662 </ownedDiagramElements>
663 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_5KqEILW_EeamG-Ij7YnW7w" name="Relation" tooltipText="" incomingEdges="_5K9mI7W_EeamG-Ij7YnW7w _P3BuYLXAEeamG-Ij7YnW7w" width="12" height="10">
664 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation"/>
665 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation"/>
666 <decorations xmi:type="viewpoint:Decoration" xmi:id="_5K4to7W_EeamG-Ij7YnW7w">
667 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
668 </decorations>
669 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
670 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
671 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
672 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_5KqrMLW_EeamG-Ij7YnW7w" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
673 <customFeatures>backgroundColor</customFeatures>
674 <customFeatures>foregroundColor</customFeatures>
675 <labelFormat>italic</labelFormat>
676 <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"/>
677 </ownedStyle>
678 <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']"/>
679 </ownedDiagramElements>
680 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_5Kr5ULW_EeamG-Ij7YnW7w" name="Type" tooltipText="" outgoingEdges="_5LB3kLW_EeamG-Ij7YnW7w" incomingEdges="_5K6i0LW_EeamG-Ij7YnW7w _5LB3kLW_EeamG-Ij7YnW7w _WfDLQLXAEeamG-Ij7YnW7w" width="12" height="10">
681 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type"/>
682 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type"/>
683 <decorations xmi:type="viewpoint:Decoration" xmi:id="_5K4tpLW_EeamG-Ij7YnW7w">
684 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
685 </decorations>
686 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
687 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
688 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
689 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_5KtHcLW_EeamG-Ij7YnW7w" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
690 <customFeatures>backgroundColor</customFeatures>
691 <customFeatures>foregroundColor</customFeatures>
692 <labelFormat>italic</labelFormat>
693 <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"/>
694 </ownedStyle>
695 <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']"/>
696 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_5K1qULW_EeamG-Ij7YnW7w" name="name : EString" visible="false" tooltipText="">
697 <target xmi:type="ecore:EAttribute" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/name"/>
698 <semanticElements xmi:type="ecore:EAttribute" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/name"/>
699 <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_VCbcQLXAEeamG-Ij7YnW7w"/>
700 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_5K24cLW_EeamG-Ij7YnW7w" labelAlignment="LEFT" description="_5K2RYLW_EeamG-Ij7YnW7w">
701 <labelFormat>bold</labelFormat>
702 </ownedStyle>
703 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
704 </ownedElements>
705 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_5K3fgLW_EeamG-Ij7YnW7w" name="isAbstract : EBoolean = false" visible="false" tooltipText="">
706 <target xmi:type="ecore:EAttribute" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/isAbstract"/>
707 <semanticElements xmi:type="ecore:EAttribute" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/isAbstract"/>
708 <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_VCbcQbXAEeamG-Ij7YnW7w"/>
709 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_5K4GkLW_EeamG-Ij7YnW7w" labelAlignment="LEFT" description="_5K2RYLW_EeamG-Ij7YnW7w">
710 <labelFormat>bold</labelFormat>
711 </ownedStyle>
712 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
713 </ownedElements>
714 </ownedDiagramElements>
715 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_5K6i0LW_EeamG-Ij7YnW7w" name="[0..*] types" sourceNode="_v4CCMLW_EeamG-Ij7YnW7w" targetNode="_5Kr5ULW_EeamG-Ij7YnW7w">
716 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/types"/>
717 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/types"/>
718 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_5K7J47W_EeamG-Ij7YnW7w" description="_5K7J4LW_EeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
719 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_5K7J5LW_EeamG-Ij7YnW7w" showIcon="false">
720 <customFeatures>labelSize</customFeatures>
721 </centerLabelStyle>
722 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_5K7J5bW_EeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
723 <customFeatures>labelSize</customFeatures>
724 </endLabelStyle>
725 </ownedStyle>
726 <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']"/>
727 </ownedDiagramElements>
728 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_5K7w8LW_EeamG-Ij7YnW7w" name="[0..*] functions" sourceNode="_v4CCMLW_EeamG-Ij7YnW7w" targetNode="_5KoO8LW_EeamG-Ij7YnW7w">
729 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/functions"/>
730 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/functions"/>
731 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_5K9mILW_EeamG-Ij7YnW7w" description="_5K7J4LW_EeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
732 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_5K9mIbW_EeamG-Ij7YnW7w" showIcon="false">
733 <customFeatures>labelSize</customFeatures>
734 </centerLabelStyle>
735 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_5K9mIrW_EeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
736 <customFeatures>labelSize</customFeatures>
737 </endLabelStyle>
738 </ownedStyle>
739 <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']"/>
740 </ownedDiagramElements>
741 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_5K9mI7W_EeamG-Ij7YnW7w" name="[0..*] relations" sourceNode="_v4CCMLW_EeamG-Ij7YnW7w" targetNode="_5KqEILW_EeamG-Ij7YnW7w">
742 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/relations"/>
743 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/relations"/>
744 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_5K-0QLW_EeamG-Ij7YnW7w" description="_5K7J4LW_EeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
745 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_5K-0QbW_EeamG-Ij7YnW7w" showIcon="false">
746 <customFeatures>labelSize</customFeatures>
747 </centerLabelStyle>
748 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_5K-0QrW_EeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
749 <customFeatures>labelSize</customFeatures>
750 </endLabelStyle>
751 </ownedStyle>
752 <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']"/>
753 </ownedDiagramElements>
754 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_5K_bULW_EeamG-Ij7YnW7w" name="[0..*] constants" sourceNode="_v4CCMLW_EeamG-Ij7YnW7w" targetNode="_5KlLoLW_EeamG-Ij7YnW7w">
755 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/constants"/>
756 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/constants"/>
757 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_5LACYLW_EeamG-Ij7YnW7w" description="_5K7J4LW_EeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
758 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_5LACYbW_EeamG-Ij7YnW7w" showIcon="false">
759 <customFeatures>labelSize</customFeatures>
760 </centerLabelStyle>
761 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_5LACYrW_EeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
762 <customFeatures>labelSize</customFeatures>
763 </endLabelStyle>
764 </ownedStyle>
765 <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']"/>
766 </ownedDiagramElements>
767 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_5LApcLW_EeamG-Ij7YnW7w" name="[0..*] elements" sourceNode="_v4CCMLW_EeamG-Ij7YnW7w" targetNode="_5KnA0LW_EeamG-Ij7YnW7w">
768 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/elements"/>
769 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/elements"/>
770 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_5LBQgLW_EeamG-Ij7YnW7w" description="_5K7J4LW_EeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
771 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_5LBQgbW_EeamG-Ij7YnW7w" showIcon="false">
772 <customFeatures>labelSize</customFeatures>
773 </centerLabelStyle>
774 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_5LBQgrW_EeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
775 <customFeatures>labelSize</customFeatures>
776 </endLabelStyle>
777 </ownedStyle>
778 <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']"/>
779 </ownedDiagramElements>
780 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_5LB3kLW_EeamG-Ij7YnW7w" visible="false" sourceNode="_5Kr5ULW_EeamG-Ij7YnW7w" targetNode="_5Kr5ULW_EeamG-Ij7YnW7w" beginLabel="[0..*] supertypes" endLabel="[0..*] subtypes">
781 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/subtypes"/>
782 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/subtypes"/>
783 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/supertypes"/>
784 <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="__p-4ALW_EeamG-Ij7YnW7w"/>
785 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_5LCeoLW_EeamG-Ij7YnW7w" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
786 <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='Bi-directional%20EC_EReference%20']/@style"/>
787 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_5LCeobW_EeamG-Ij7YnW7w" showIcon="false"/>
788 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_5LCeorW_EeamG-Ij7YnW7w" showIcon="false"/>
789 </ownedStyle>
790 <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']"/>
791 </ownedDiagramElements>
792 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_OeBUELXAEeamG-Ij7YnW7w" name="ConstantDeclaration" tooltipText="" outgoingEdges="_OePWgLXAEeamG-Ij7YnW7w" incomingEdges="_jxT2ELXBEeamG-Ij7YnW7w" width="12" height="10">
793 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//ConstantDeclaration"/>
794 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//ConstantDeclaration"/>
795 <decorations xmi:type="viewpoint:Decoration" xmi:id="_OeKeALXAEeamG-Ij7YnW7w">
796 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
797 </decorations>
798 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
799 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
800 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
801 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_OeB7ILXAEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
802 <customFeatures>backgroundColor</customFeatures>
803 <customFeatures>foregroundColor</customFeatures>
804 <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"/>
805 </ownedStyle>
806 <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']"/>
807 </ownedDiagramElements>
808 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_OePWgLXAEeamG-Ij7YnW7w" sourceNode="_OeBUELXAEeamG-Ij7YnW7w" targetNode="_5KlLoLW_EeamG-Ij7YnW7w">
809 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//ConstantDeclaration"/>
810 <semanticElements xmi:type="ecore:EGenericType" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//ConstantDeclaration/@eGenericSuperTypes.0"/>
811 <decorations xmi:type="viewpoint:Decoration" xmi:id="_jxRZ0LXBEeamG-Ij7YnW7w">
812 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
813 </decorations>
814 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_OeP9kLXAEeamG-Ij7YnW7w" targetArrow="InputClosedArrow" routingStyle="tree">
815 <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"/>
816 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_OeP9kbXAEeamG-Ij7YnW7w" showIcon="false">
817 <labelFormat>italic</labelFormat>
818 </beginLabelStyle>
819 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_OeP9krXAEeamG-Ij7YnW7w" showIcon="false"/>
820 </ownedStyle>
821 <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']"/>
822 </ownedDiagramElements>
823 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_P22IMLXAEeamG-Ij7YnW7w" name="RelationDeclaration" tooltipText="" outgoingEdges="_P3BuYLXAEeamG-Ij7YnW7w" incomingEdges="_owbbcLXBEeamG-Ij7YnW7w" width="12" height="10">
824 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//RelationDeclaration"/>
825 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//RelationDeclaration"/>
826 <decorations xmi:type="viewpoint:Decoration" xmi:id="_P29c8LXAEeamG-Ij7YnW7w">
827 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
828 </decorations>
829 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
830 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
831 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
832 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_P22vQLXAEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
833 <customFeatures>backgroundColor</customFeatures>
834 <customFeatures>foregroundColor</customFeatures>
835 <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"/>
836 </ownedStyle>
837 <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']"/>
838 </ownedDiagramElements>
839 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_P3BuYLXAEeamG-Ij7YnW7w" sourceNode="_P22IMLXAEeamG-Ij7YnW7w" targetNode="_5KqEILW_EeamG-Ij7YnW7w">
840 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//RelationDeclaration"/>
841 <semanticElements xmi:type="ecore:EGenericType" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//RelationDeclaration/@eGenericSuperTypes.0"/>
842 <decorations xmi:type="viewpoint:Decoration" xmi:id="_jxRZ0bXBEeamG-Ij7YnW7w">
843 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
844 </decorations>
845 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_P3CVcLXAEeamG-Ij7YnW7w" targetArrow="InputClosedArrow" routingStyle="tree">
846 <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"/>
847 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_P3CVcbXAEeamG-Ij7YnW7w" showIcon="false">
848 <labelFormat>italic</labelFormat>
849 </beginLabelStyle>
850 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_P3CVcrXAEeamG-Ij7YnW7w" showIcon="false"/>
851 </ownedStyle>
852 <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']"/>
853 </ownedDiagramElements>
854 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_RpETwLXAEeamG-Ij7YnW7w" name="FunctionDeclaration" tooltipText="" outgoingEdges="_RpYc0LXAEeamG-Ij7YnW7w" incomingEdges="_qsPn4LXBEeamG-Ij7YnW7w" width="12" height="10">
855 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//FunctionDeclaration"/>
856 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//FunctionDeclaration"/>
857 <decorations xmi:type="viewpoint:Decoration" xmi:id="_RpS9QLXAEeamG-Ij7YnW7w">
858 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
859 </decorations>
860 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
861 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
862 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
863 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_ezOjwLXHEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
864 <customFeatures>backgroundColor</customFeatures>
865 <customFeatures>foregroundColor</customFeatures>
866 <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"/>
867 </ownedStyle>
868 <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']"/>
869 </ownedDiagramElements>
870 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_RpYc0LXAEeamG-Ij7YnW7w" sourceNode="_RpETwLXAEeamG-Ij7YnW7w" targetNode="_5KoO8LW_EeamG-Ij7YnW7w">
871 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//FunctionDeclaration"/>
872 <semanticElements xmi:type="ecore:EGenericType" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//FunctionDeclaration/@eGenericSuperTypes.0"/>
873 <decorations xmi:type="viewpoint:Decoration" xmi:id="_jxRZ0rXBEeamG-Ij7YnW7w">
874 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
875 </decorations>
876 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_RpZD4LXAEeamG-Ij7YnW7w" targetArrow="InputClosedArrow" routingStyle="tree">
877 <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"/>
878 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_RpZD4bXAEeamG-Ij7YnW7w" showIcon="false">
879 <labelFormat>italic</labelFormat>
880 </beginLabelStyle>
881 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_RpZD4rXAEeamG-Ij7YnW7w" showIcon="false"/>
882 </ownedStyle>
883 <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']"/>
884 </ownedDiagramElements>
885 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_WexecLXAEeamG-Ij7YnW7w" name="TypeDeclaration" tooltipText="" outgoingEdges="_WfDLQLXAEeamG-Ij7YnW7w" incomingEdges="_zIoI4LXCEeamG-Ij7YnW7w" width="12" height="10">
886 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeDeclaration"/>
887 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeDeclaration"/>
888 <decorations xmi:type="viewpoint:Decoration" xmi:id="_We8dkLXAEeamG-Ij7YnW7w">
889 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
890 </decorations>
891 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
892 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
893 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
894 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_WeyFgLXAEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
895 <customFeatures>backgroundColor</customFeatures>
896 <customFeatures>foregroundColor</customFeatures>
897 <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"/>
898 </ownedStyle>
899 <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']"/>
900 </ownedDiagramElements>
901 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_WfDLQLXAEeamG-Ij7YnW7w" sourceNode="_WexecLXAEeamG-Ij7YnW7w" targetNode="_5Kr5ULW_EeamG-Ij7YnW7w">
902 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeDeclaration"/>
903 <semanticElements xmi:type="ecore:EGenericType" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeDeclaration/@eGenericSuperTypes.0"/>
904 <decorations xmi:type="viewpoint:Decoration" xmi:id="_jxRZ07XBEeamG-Ij7YnW7w">
905 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
906 </decorations>
907 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_WfDLQbXAEeamG-Ij7YnW7w" targetArrow="InputClosedArrow" routingStyle="tree">
908 <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"/>
909 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_WfDLQrXAEeamG-Ij7YnW7w" showIcon="false">
910 <labelFormat>italic</labelFormat>
911 </beginLabelStyle>
912 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_WfDLQ7XAEeamG-Ij7YnW7w" showIcon="false"/>
913 </ownedStyle>
914 <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']"/>
915 </ownedDiagramElements>
916 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_KP9iwLXBEeamG-Ij7YnW7w" name="PartialConstantInterpretation" tooltipText="" outgoingEdges="_jxT2ELXBEeamG-Ij7YnW7w" incomingEdges="_2Grq4LXBEeamG-Ij7YnW7w" width="12" height="10">
917 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialConstantInterpretation"/>
918 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialConstantInterpretation"/>
919 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
920 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
921 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
922 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_KP-J0LXBEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
923 <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"/>
924 </ownedStyle>
925 <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']"/>
926 </ownedDiagramElements>
927 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_WTu2oLXBEeamG-Ij7YnW7w" name="PartialRelationInterpretation" tooltipText="" outgoingEdges="_owbbcLXBEeamG-Ij7YnW7w" incomingEdges="_23ljYLXBEeamG-Ij7YnW7w" width="12" height="10">
928 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialRelationInterpretation"/>
929 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialRelationInterpretation"/>
930 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
931 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
932 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
933 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_WTvdsLXBEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
934 <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"/>
935 </ownedStyle>
936 <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']"/>
937 </ownedDiagramElements>
938 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_cCYbgLXBEeamG-Ij7YnW7w" name="PartialFunctionInterpretation" tooltipText="" outgoingEdges="_qsPn4LXBEeamG-Ij7YnW7w" incomingEdges="_3UBAsLXBEeamG-Ij7YnW7w" width="12" height="10">
939 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialFunctionInterpretation"/>
940 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialFunctionInterpretation"/>
941 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
942 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
943 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
944 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_cCZCkLXBEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
945 <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"/>
946 </ownedStyle>
947 <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']"/>
948 </ownedDiagramElements>
949 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_jxT2ELXBEeamG-Ij7YnW7w" name="[1..1] interpretationOf" sourceNode="_KP9iwLXBEeamG-Ij7YnW7w" targetNode="_OeBUELXAEeamG-Ij7YnW7w">
950 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialConstantInterpretation/interpretationOf"/>
951 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialConstantInterpretation/interpretationOf"/>
952 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_nsVhMLXBEeamG-Ij7YnW7w" description="_v4J-ALW_EeamG-Ij7YnW7w" routingStyle="manhattan" strokeColor="0,0,0">
953 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_nsVhMbXBEeamG-Ij7YnW7w" showIcon="false">
954 <labelFormat>bold</labelFormat>
955 </centerLabelStyle>
956 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_nsVhMrXBEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelColor="39,76,114"/>
957 </ownedStyle>
958 <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']"/>
959 </ownedDiagramElements>
960 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_owbbcLXBEeamG-Ij7YnW7w" name="[1..1] interpretationOf" sourceNode="_WTu2oLXBEeamG-Ij7YnW7w" targetNode="_P22IMLXAEeamG-Ij7YnW7w">
961 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialRelationInterpretation/interpretationOf"/>
962 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialRelationInterpretation/interpretationOf"/>
963 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_p9nnULXBEeamG-Ij7YnW7w" description="_v4J-ALW_EeamG-Ij7YnW7w" routingStyle="manhattan" strokeColor="0,0,0">
964 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_p9nnUbXBEeamG-Ij7YnW7w" showIcon="false">
965 <labelFormat>bold</labelFormat>
966 </centerLabelStyle>
967 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_p9nnUrXBEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelColor="39,76,114"/>
968 </ownedStyle>
969 <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']"/>
970 </ownedDiagramElements>
971 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_qsPn4LXBEeamG-Ij7YnW7w" name="[1..1] interpretationOf" sourceNode="_cCYbgLXBEeamG-Ij7YnW7w" targetNode="_RpETwLXAEeamG-Ij7YnW7w">
972 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialFunctionInterpretation/interpretationOf"/>
973 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialFunctionInterpretation/interpretationOf"/>
974 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_r0Gn0LXBEeamG-Ij7YnW7w" description="_v4J-ALW_EeamG-Ij7YnW7w" routingStyle="manhattan" strokeColor="0,0,0">
975 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_r0Gn0bXBEeamG-Ij7YnW7w" showIcon="false">
976 <labelFormat>bold</labelFormat>
977 </centerLabelStyle>
978 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_r0Gn0rXBEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelColor="39,76,114"/>
979 </ownedStyle>
980 <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']"/>
981 </ownedDiagramElements>
982 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_2Grq4LXBEeamG-Ij7YnW7w" name="[0..*] partialconstantinterpretation" sourceNode="_gf_hMLW_EeamG-Ij7YnW7w" targetNode="_KP9iwLXBEeamG-Ij7YnW7w">
983 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/partialconstantinterpretation"/>
984 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/partialconstantinterpretation"/>
985 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_2GsR8LXBEeamG-Ij7YnW7w" description="_5K7J4LW_EeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
986 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_2GsR8bXBEeamG-Ij7YnW7w" showIcon="false">
987 <customFeatures>labelSize</customFeatures>
988 </centerLabelStyle>
989 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_2GsR8rXBEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
990 <customFeatures>labelSize</customFeatures>
991 </endLabelStyle>
992 </ownedStyle>
993 <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']"/>
994 </ownedDiagramElements>
995 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_23ljYLXBEeamG-Ij7YnW7w" name="[0..*] partialrelationinterpretation" sourceNode="_gf_hMLW_EeamG-Ij7YnW7w" targetNode="_WTu2oLXBEeamG-Ij7YnW7w">
996 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/partialrelationinterpretation"/>
997 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/partialrelationinterpretation"/>
998 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_23mKcLXBEeamG-Ij7YnW7w" description="_5K7J4LW_EeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
999 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_23mKcbXBEeamG-Ij7YnW7w" showIcon="false">
1000 <customFeatures>labelSize</customFeatures>
1001 </centerLabelStyle>
1002 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_23mKcrXBEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
1003 <customFeatures>labelSize</customFeatures>
1004 </endLabelStyle>
1005 </ownedStyle>
1006 <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']"/>
1007 </ownedDiagramElements>
1008 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_3UBAsLXBEeamG-Ij7YnW7w" name="[0..*] partialfunctioninterpretation" sourceNode="_gf_hMLW_EeamG-Ij7YnW7w" targetNode="_cCYbgLXBEeamG-Ij7YnW7w">
1009 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/partialfunctioninterpretation"/>
1010 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/partialfunctioninterpretation"/>
1011 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_3UBnwLXBEeamG-Ij7YnW7w" description="_5K7J4LW_EeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1012 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_3UBnwbXBEeamG-Ij7YnW7w" showIcon="false">
1013 <customFeatures>labelSize</customFeatures>
1014 </centerLabelStyle>
1015 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_3UBnwrXBEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
1016 <customFeatures>labelSize</customFeatures>
1017 </endLabelStyle>
1018 </ownedStyle>
1019 <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']"/>
1020 </ownedDiagramElements>
1021 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_H4YK4LXCEeamG-Ij7YnW7w" name="[0..*] newElements" sourceNode="_gf_hMLW_EeamG-Ij7YnW7w" targetNode="_5KnA0LW_EeamG-Ij7YnW7w">
1022 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/newElements"/>
1023 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/newElements"/>
1024 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_H4Yx8LXCEeamG-Ij7YnW7w" description="_5K7J4LW_EeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1025 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_H4Yx8bXCEeamG-Ij7YnW7w" showIcon="false">
1026 <customFeatures>labelSize</customFeatures>
1027 </centerLabelStyle>
1028 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_H4Yx8rXCEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
1029 <customFeatures>labelSize</customFeatures>
1030 </endLabelStyle>
1031 </ownedStyle>
1032 <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']"/>
1033 </ownedDiagramElements>
1034 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_TgoAYLXCEeamG-Ij7YnW7w" name="PartialTypeInterpratation" tooltipText="" outgoingEdges="_zIoI4LXCEeamG-Ij7YnW7w _klNtULXDEeamG-Ij7YnW7w" incomingEdges="_2Sy-0LXCEeamG-Ij7YnW7w" width="12" height="10">
1035 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialTypeInterpratation"/>
1036 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialTypeInterpratation"/>
1037 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1038 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1039 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1040 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_TgoncLXCEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1041 <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"/>
1042 </ownedStyle>
1043 <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']"/>
1044 </ownedDiagramElements>
1045 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_zIoI4LXCEeamG-Ij7YnW7w" name="[1..1] interpretationOf" sourceNode="_TgoAYLXCEeamG-Ij7YnW7w" targetNode="_WexecLXAEeamG-Ij7YnW7w">
1046 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialTypeInterpratation/interpretationOf"/>
1047 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialTypeInterpratation/interpretationOf"/>
1048 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_04uNgLXCEeamG-Ij7YnW7w" description="_v4J-ALW_EeamG-Ij7YnW7w" routingStyle="manhattan" strokeColor="0,0,0">
1049 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_04uNgbXCEeamG-Ij7YnW7w" showIcon="false">
1050 <labelFormat>bold</labelFormat>
1051 </centerLabelStyle>
1052 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_04uNgrXCEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelColor="39,76,114"/>
1053 </ownedStyle>
1054 <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']"/>
1055 </ownedDiagramElements>
1056 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_2Sy-0LXCEeamG-Ij7YnW7w" name="[0..*] partialtypeinterpratation" sourceNode="_gf_hMLW_EeamG-Ij7YnW7w" targetNode="_TgoAYLXCEeamG-Ij7YnW7w">
1057 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/partialtypeinterpratation"/>
1058 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/partialtypeinterpratation"/>
1059 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_2Szl4LXCEeamG-Ij7YnW7w" description="_5K7J4LW_EeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1060 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_2Szl4bXCEeamG-Ij7YnW7w" showIcon="false">
1061 <customFeatures>labelSize</customFeatures>
1062 </centerLabelStyle>
1063 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_2Szl4rXCEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
1064 <customFeatures>labelSize</customFeatures>
1065 </endLabelStyle>
1066 </ownedStyle>
1067 <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']"/>
1068 </ownedDiagramElements>
1069 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_klNtULXDEeamG-Ij7YnW7w" name="[0..*] elements" sourceNode="_TgoAYLXCEeamG-Ij7YnW7w" targetNode="_5KnA0LW_EeamG-Ij7YnW7w">
1070 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialTypeInterpratation/elements"/>
1071 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialTypeInterpratation/elements"/>
1072 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_M5BNcL3JEeaj7tVusjQpHg" routingStyle="manhattan" strokeColor="0,0,0">
1073 <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_EReference']/@style"/>
1074 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_M5BNcb3JEeaj7tVusjQpHg" showIcon="false"/>
1075 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_M5BNcr3JEeaj7tVusjQpHg" labelSize="6" showIcon="false" labelColor="39,76,114"/>
1076 </ownedStyle>
1077 <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']"/>
1078 </ownedDiagramElements>
1079 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_QrIkAL5UEea19paI6HZj1w" name="[1..1] openWorldElementPrototype" sourceNode="_gf_hMLW_EeamG-Ij7YnW7w" targetNode="_5KnA0LW_EeamG-Ij7YnW7w">
1080 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/openWorldElementPrototype"/>
1081 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/openWorldElementPrototype"/>
1082 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_UkL5M75UEea19paI6HZj1w" description="_UkL5ML5UEea19paI6HZj1w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1083 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_UkL5NL5UEea19paI6HZj1w" showIcon="false">
1084 <labelFormat>bold</labelFormat>
1085 </centerLabelStyle>
1086 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_UkL5Nb5UEea19paI6HZj1w" labelSize="6" showIcon="false" labelColor="39,76,114"/>
1087 </ownedStyle>
1088 <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']"/>
1089 </ownedDiagramElements>
1090 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
1091 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_MAfXJbW_EeamG-Ij7YnW7w"/>
1092 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
1093 <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']"/>
1094 <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']"/>
1095 <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']"/>
1096 <target xmi:type="ecore:EPackage" href="PartialInterpretation.ecore#/"/>
1097 </ownedRepresentations>
1098 <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_ccUTkLXDEeamG-Ij7YnW7w" name="type interpratation">
1099 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_ccUTkbXDEeamG-Ij7YnW7w" source="DANNOTATION_CUSTOMIZATION_KEY">
1100 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_ccUTkrXDEeamG-Ij7YnW7w">
1101 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_ccUTk7XDEeamG-Ij7YnW7w" routingStyle="manhattan">
1102 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1103 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_ccUTlLXDEeamG-Ij7YnW7w" showIcon="false" labelExpression="service:render">
1104 <labelFormat>bold</labelFormat>
1105 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1106 </centerLabelStyleDescription>
1107 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_ccUTlbXDEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
1108 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1109 </endLabelStyleDescription>
1110 </computedStyleDescriptions>
1111 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_ccUTlrXDEeamG-Ij7YnW7w" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
1112 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1113 <labelFormat>bold</labelFormat>
1114 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1115 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1116 </computedStyleDescriptions>
1117 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_ccUTl7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan">
1118 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1119 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_ccUTmLXDEeamG-Ij7YnW7w" showIcon="false" labelExpression="service:render">
1120 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1121 </centerLabelStyleDescription>
1122 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_ccUTmbXDEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
1123 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1124 </endLabelStyleDescription>
1125 </computedStyleDescriptions>
1126 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_QlTfMMF9Eea_b6UyFzv22g" sourceArrow="FillDiamond" routingStyle="manhattan">
1127 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1128 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_QlTfMcF9Eea_b6UyFzv22g" showIcon="false" labelExpression="service:render">
1129 <labelFormat>bold</labelFormat>
1130 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1131 </centerLabelStyleDescription>
1132 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_QlTfMsF9Eea_b6UyFzv22g" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
1133 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1134 </endLabelStyleDescription>
1135 </computedStyleDescriptions>
1136 </data>
1137 </ownedAnnotationEntries>
1138 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_ccUTmrXDEeamG-Ij7YnW7w" source="GMF_DIAGRAMS">
1139 <data xmi:type="notation:Diagram" xmi:id="_ccUTm7XDEeamG-Ij7YnW7w" type="Sirius" element="_ccUTkLXDEeamG-Ij7YnW7w" measurementUnit="Pixel">
1140 <children xmi:type="notation:Node" xmi:id="_ccUTnLXDEeamG-Ij7YnW7w" type="2003" element="_ccU7VbXDEeamG-Ij7YnW7w">
1141 <children xmi:type="notation:Node" xmi:id="_ccUTnbXDEeamG-Ij7YnW7w" type="5007"/>
1142 <children xmi:type="notation:Node" xmi:id="_ccUTnrXDEeamG-Ij7YnW7w" type="7004">
1143 <children xmi:type="notation:Node" xmi:id="_QlZl0MF9Eea_b6UyFzv22g" type="3010" element="_QlJHIMF9Eea_b6UyFzv22g">
1144 <styles xmi:type="notation:FontStyle" xmi:id="_QlZl0cF9Eea_b6UyFzv22g" fontName="Segoe UI" fontHeight="8" bold="true"/>
1145 <layoutConstraint xmi:type="notation:Location" xmi:id="_QlZl0sF9Eea_b6UyFzv22g"/>
1146 </children>
1147 <children xmi:type="notation:Node" xmi:id="_QlaM4MF9Eea_b6UyFzv22g" type="3010" element="_QlLjYMF9Eea_b6UyFzv22g">
1148 <styles xmi:type="notation:FontStyle" xmi:id="_QlaM4cF9Eea_b6UyFzv22g" fontName="Segoe UI" fontHeight="8" bold="true"/>
1149 <layoutConstraint xmi:type="notation:Location" xmi:id="_QlaM4sF9Eea_b6UyFzv22g"/>
1150 </children>
1151 <styles xmi:type="notation:SortingStyle" xmi:id="_ccUTn7XDEeamG-Ij7YnW7w"/>
1152 <styles xmi:type="notation:FilteringStyle" xmi:id="_ccUToLXDEeamG-Ij7YnW7w"/>
1153 </children>
1154 <styles xmi:type="notation:ShapeStyle" xmi:id="_ccUTobXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
1155 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUTorXDEeamG-Ij7YnW7w" x="5" y="470" width="178" height="63"/>
1156 </children>
1157 <children xmi:type="notation:Node" xmi:id="_ccUTo7XDEeamG-Ij7YnW7w" type="2003" element="_ccU7V7XDEeamG-Ij7YnW7w">
1158 <children xmi:type="notation:Node" xmi:id="_ccUTpLXDEeamG-Ij7YnW7w" type="5007"/>
1159 <children xmi:type="notation:Node" xmi:id="_ccUTpbXDEeamG-Ij7YnW7w" type="7004">
1160 <styles xmi:type="notation:SortingStyle" xmi:id="_ccUTprXDEeamG-Ij7YnW7w"/>
1161 <styles xmi:type="notation:FilteringStyle" xmi:id="_ccUTp7XDEeamG-Ij7YnW7w"/>
1162 </children>
1163 <styles xmi:type="notation:ShapeStyle" xmi:id="_ccUTqLXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" fillColor="8047085"/>
1164 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUTqbXDEeamG-Ij7YnW7w" x="15" y="45"/>
1165 </children>
1166 <children xmi:type="notation:Node" xmi:id="_ccUTsbXDEeamG-Ij7YnW7w" type="2003" element="_ccU7YbXDEeamG-Ij7YnW7w">
1167 <children xmi:type="notation:Node" xmi:id="_ccUTsrXDEeamG-Ij7YnW7w" type="5007"/>
1168 <children xmi:type="notation:Node" xmi:id="_ccUTs7XDEeamG-Ij7YnW7w" type="7004">
1169 <styles xmi:type="notation:SortingStyle" xmi:id="_ccUTtLXDEeamG-Ij7YnW7w"/>
1170 <styles xmi:type="notation:FilteringStyle" xmi:id="_ccUTtbXDEeamG-Ij7YnW7w"/>
1171 </children>
1172 <styles xmi:type="notation:ShapeStyle" xmi:id="_ccUTtrXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" fillColor="8047085"/>
1173 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUTt7XDEeamG-Ij7YnW7w" x="247" y="165" height="41"/>
1174 </children>
1175 <children xmi:type="notation:Node" xmi:id="_ccUTxrXDEeamG-Ij7YnW7w" type="2003" element="_ccU7arXDEeamG-Ij7YnW7w">
1176 <children xmi:type="notation:Node" xmi:id="_ccUTx7XDEeamG-Ij7YnW7w" type="5007"/>
1177 <children xmi:type="notation:Node" xmi:id="_ccUTyLXDEeamG-Ij7YnW7w" type="7004">
1178 <children xmi:type="notation:Node" xmi:id="_ccUTybXDEeamG-Ij7YnW7w" visible="false" type="3010" element="_ccU7bbXDEeamG-Ij7YnW7w">
1179 <styles xmi:type="notation:FontStyle" xmi:id="_ccUTyrXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" bold="true"/>
1180 <layoutConstraint xmi:type="notation:Location" xmi:id="_ccUTy7XDEeamG-Ij7YnW7w"/>
1181 </children>
1182 <children xmi:type="notation:Node" xmi:id="_ccUTzLXDEeamG-Ij7YnW7w" visible="false" type="3010" element="_ccU7cLXDEeamG-Ij7YnW7w">
1183 <styles xmi:type="notation:FontStyle" xmi:id="_ccUTzbXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" bold="true"/>
1184 <layoutConstraint xmi:type="notation:Location" xmi:id="_ccUTzrXDEeamG-Ij7YnW7w"/>
1185 </children>
1186 <styles xmi:type="notation:SortingStyle" xmi:id="_ccUTz7XDEeamG-Ij7YnW7w"/>
1187 <styles xmi:type="notation:FilteringStyle" xmi:id="_ccUT0LXDEeamG-Ij7YnW7w"/>
1188 </children>
1189 <styles xmi:type="notation:ShapeStyle" xmi:id="_ccUT0bXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" italic="true" fillColor="8047085"/>
1190 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUT0rXDEeamG-Ij7YnW7w" x="387" y="165" height="38"/>
1191 </children>
1192 <children xmi:type="notation:Node" xmi:id="_ccUT6LXDEeamG-Ij7YnW7w" type="2003" element="_ccU7pLXDEeamG-Ij7YnW7w">
1193 <children xmi:type="notation:Node" xmi:id="_ccUT6bXDEeamG-Ij7YnW7w" type="5007"/>
1194 <children xmi:type="notation:Node" xmi:id="_ccUT6rXDEeamG-Ij7YnW7w" type="7004">
1195 <styles xmi:type="notation:SortingStyle" xmi:id="_ccUT67XDEeamG-Ij7YnW7w"/>
1196 <styles xmi:type="notation:FilteringStyle" xmi:id="_ccUT7LXDEeamG-Ij7YnW7w"/>
1197 </children>
1198 <styles xmi:type="notation:ShapeStyle" xmi:id="_ccUT7bXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" fillColor="8047085"/>
1199 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUT7rXDEeamG-Ij7YnW7w" x="387" y="222" height="43"/>
1200 </children>
1201 <children xmi:type="notation:Node" xmi:id="_ccUUBLXDEeamG-Ij7YnW7w" type="2003" element="_ccU7zrXDEeamG-Ij7YnW7w">
1202 <children xmi:type="notation:Node" xmi:id="_ccUUBbXDEeamG-Ij7YnW7w" type="5007"/>
1203 <children xmi:type="notation:Node" xmi:id="_ccUUBrXDEeamG-Ij7YnW7w" type="7004">
1204 <styles xmi:type="notation:SortingStyle" xmi:id="_ccUUB7XDEeamG-Ij7YnW7w"/>
1205 <styles xmi:type="notation:FilteringStyle" xmi:id="_ccUUCLXDEeamG-Ij7YnW7w"/>
1206 </children>
1207 <styles xmi:type="notation:ShapeStyle" xmi:id="_ccUUCbXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
1208 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUUCrXDEeamG-Ij7YnW7w" x="370" y="355" width="168" height="63"/>
1209 </children>
1210 <styles xmi:type="notation:DiagramStyle" xmi:id="_ccUUC7XDEeamG-Ij7YnW7w"/>
1211 <edges xmi:type="notation:Edge" xmi:id="_ccUUDLXDEeamG-Ij7YnW7w" type="4001" element="_ccU7WrXDEeamG-Ij7YnW7w" source="_ccUTnLXDEeamG-Ij7YnW7w" target="_ccUTo7XDEeamG-Ij7YnW7w">
1212 <children xmi:type="notation:Node" xmi:id="_ccUUDbXDEeamG-Ij7YnW7w" type="6001">
1213 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUUDrXDEeamG-Ij7YnW7w" x="-30"/>
1214 </children>
1215 <children xmi:type="notation:Node" xmi:id="_ccUUD7XDEeamG-Ij7YnW7w" type="6002">
1216 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUUELXDEeamG-Ij7YnW7w" x="61"/>
1217 </children>
1218 <children xmi:type="notation:Node" xmi:id="_ccUUEbXDEeamG-Ij7YnW7w" type="6003">
1219 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUUErXDEeamG-Ij7YnW7w" x="-38"/>
1220 </children>
1221 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ccUUE7XDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1222 <styles xmi:type="notation:FontStyle" xmi:id="_ccUUFLXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1223 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ccUUFbXDEeamG-Ij7YnW7w" points="[-22, -49, -16, 396]$[-22, -396, -16, 49]"/>
1224 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccUUFrXDEeamG-Ij7YnW7w" id="(0.42617349970291146,1.1311475409836065)"/>
1225 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccUUF7XDEeamG-Ij7YnW7w" id="(0.5,0.5)"/>
1226 </edges>
1227 <edges xmi:type="notation:Edge" xmi:id="_ccUUGLXDEeamG-Ij7YnW7w" type="4001" element="_ccU7c7XDEeamG-Ij7YnW7w" source="_ccUTo7XDEeamG-Ij7YnW7w" target="_ccUTxrXDEeamG-Ij7YnW7w">
1228 <children xmi:type="notation:Node" xmi:id="_ccUUGbXDEeamG-Ij7YnW7w" type="6001">
1229 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUUGrXDEeamG-Ij7YnW7w" x="61" y="11"/>
1230 </children>
1231 <children xmi:type="notation:Node" xmi:id="_ccUUG7XDEeamG-Ij7YnW7w" type="6002">
1232 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUUHLXDEeamG-Ij7YnW7w" x="42" y="10"/>
1233 </children>
1234 <children xmi:type="notation:Node" xmi:id="_ccUUHbXDEeamG-Ij7YnW7w" type="6003">
1235 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccUUHrXDEeamG-Ij7YnW7w" x="43" y="9"/>
1236 </children>
1237 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ccUUH7XDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1238 <styles xmi:type="notation:FontStyle" xmi:id="_ccUUILXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1239 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ccUUIbXDEeamG-Ij7YnW7w" points="[59, 20, -313, -206]$[386, 20, 14, -206]$[386, 120, 14, -106]"/>
1240 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccUUIrXDEeamG-Ij7YnW7w" id="(0.5,0.0)"/>
1241 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccUUI7XDEeamG-Ij7YnW7w" id="(0.5,2.7222222222222223)"/>
1242 </edges>
1243 <edges xmi:type="notation:Edge" xmi:id="_ccU6oLXDEeamG-Ij7YnW7w" type="4001" element="_ccU7g7XDEeamG-Ij7YnW7w" source="_ccUTo7XDEeamG-Ij7YnW7w" target="_ccUTsbXDEeamG-Ij7YnW7w">
1244 <children xmi:type="notation:Node" xmi:id="_ccU6obXDEeamG-Ij7YnW7w" type="6001">
1245 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU6orXDEeamG-Ij7YnW7w" x="-6" y="-10"/>
1246 </children>
1247 <children xmi:type="notation:Node" xmi:id="_ccU6o7XDEeamG-Ij7YnW7w" type="6002">
1248 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU6pLXDEeamG-Ij7YnW7w" x="54" y="10"/>
1249 </children>
1250 <children xmi:type="notation:Node" xmi:id="_ccU6pbXDEeamG-Ij7YnW7w" type="6003">
1251 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU6prXDEeamG-Ij7YnW7w" x="-10" y="114"/>
1252 </children>
1253 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ccU6p7XDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1254 <styles xmi:type="notation:FontStyle" xmi:id="_ccU6qLXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1255 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ccU6qbXDEeamG-Ij7YnW7w" points="[59, 70, -173, -148]$[208, 70, -24, -148]$[208, 120, -24, -98]"/>
1256 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccU6qrXDEeamG-Ij7YnW7w" id="(0.5,0.0)"/>
1257 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccU6q7XDEeamG-Ij7YnW7w" id="(0.5,2.5128205128205128)"/>
1258 </edges>
1259 <edges xmi:type="notation:Edge" xmi:id="_ccU6rLXDEeamG-Ij7YnW7w" visible="false" type="4001" element="_ccU7h7XDEeamG-Ij7YnW7w" source="_ccUTxrXDEeamG-Ij7YnW7w" target="_ccUTxrXDEeamG-Ij7YnW7w">
1260 <children xmi:type="notation:Node" xmi:id="_ccU6rbXDEeamG-Ij7YnW7w" type="6001">
1261 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU6rrXDEeamG-Ij7YnW7w" y="-10"/>
1262 </children>
1263 <children xmi:type="notation:Node" xmi:id="_ccU6r7XDEeamG-Ij7YnW7w" type="6002">
1264 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU6sLXDEeamG-Ij7YnW7w" y="10"/>
1265 </children>
1266 <children xmi:type="notation:Node" xmi:id="_ccU6sbXDEeamG-Ij7YnW7w" type="6003">
1267 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU6srXDEeamG-Ij7YnW7w" y="10"/>
1268 </children>
1269 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ccU6s7XDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1270 <styles xmi:type="notation:FontStyle" xmi:id="_ccU6tLXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
1271 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ccU6tbXDEeamG-Ij7YnW7w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
1272 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccU6trXDEeamG-Ij7YnW7w" id="(0.5,1.3611111111111112)"/>
1273 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccU6t7XDEeamG-Ij7YnW7w" id="(0.5,1.3611111111111112)"/>
1274 </edges>
1275 <edges xmi:type="notation:Edge" xmi:id="_ccU63LXDEeamG-Ij7YnW7w" type="4001" element="_ccU7p7XDEeamG-Ij7YnW7w" source="_ccUT6LXDEeamG-Ij7YnW7w" target="_ccUTxrXDEeamG-Ij7YnW7w">
1276 <children xmi:type="notation:Node" xmi:id="_ccU63bXDEeamG-Ij7YnW7w" type="6001">
1277 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU63rXDEeamG-Ij7YnW7w" x="3" y="-1"/>
1278 </children>
1279 <children xmi:type="notation:Node" xmi:id="_ccU637XDEeamG-Ij7YnW7w" type="6002">
1280 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU64LXDEeamG-Ij7YnW7w"/>
1281 </children>
1282 <children xmi:type="notation:Node" xmi:id="_ccU64bXDEeamG-Ij7YnW7w" type="6003">
1283 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU64rXDEeamG-Ij7YnW7w" x="-13" y="9"/>
1284 </children>
1285 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ccU647XDEeamG-Ij7YnW7w" routing="Tree"/>
1286 <styles xmi:type="notation:FontStyle" xmi:id="_ccU65LXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
1287 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ccU65bXDEeamG-Ij7YnW7w" points="[0, -49, 0, 4]$[0, -61, 0, -8]$[-1, -61, -1, -8]$[-1, -67, -1, -14]"/>
1288 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccU65rXDEeamG-Ij7YnW7w" id="(0.5,1.1951219512195121)"/>
1289 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccU657XDEeamG-Ij7YnW7w" id="(0.5,1.3611111111111112)"/>
1290 </edges>
1291 <edges xmi:type="notation:Edge" xmi:id="_ccU7MLXDEeamG-Ij7YnW7w" type="4001" element="_ccU7yrXDEeamG-Ij7YnW7w" source="_ccUTnLXDEeamG-Ij7YnW7w" target="_ccUTsbXDEeamG-Ij7YnW7w">
1292 <children xmi:type="notation:Node" xmi:id="_ccU7MbXDEeamG-Ij7YnW7w" type="6001">
1293 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU7MrXDEeamG-Ij7YnW7w" x="15" y="-55"/>
1294 </children>
1295 <children xmi:type="notation:Node" xmi:id="_ccU7M7XDEeamG-Ij7YnW7w" type="6002">
1296 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU7NLXDEeamG-Ij7YnW7w" x="90" y="-208"/>
1297 </children>
1298 <children xmi:type="notation:Node" xmi:id="_ccU7NbXDEeamG-Ij7YnW7w" type="6003">
1299 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU7NrXDEeamG-Ij7YnW7w" x="23" y="10"/>
1300 </children>
1301 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ccU7N7XDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1302 <styles xmi:type="notation:FontStyle" xmi:id="_ccU7OLXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1303 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ccU7ObXDEeamG-Ij7YnW7w" points="[119, 10, -111, 296]$[233, 10, 3, 296]$[233, -286, 3, 0]"/>
1304 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccU7OrXDEeamG-Ij7YnW7w" id="(0.32386363636363635,0.3278688524590164)"/>
1305 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccU7O7XDEeamG-Ij7YnW7w" id="(0.3813559322033898,1.0)"/>
1306 </edges>
1307 <edges xmi:type="notation:Edge" xmi:id="_ccU7PLXDEeamG-Ij7YnW7w" type="4001" element="_ccU70LXDEeamG-Ij7YnW7w" source="_ccUUBLXDEeamG-Ij7YnW7w" target="_ccUT6LXDEeamG-Ij7YnW7w">
1308 <children xmi:type="notation:Node" xmi:id="_ccU7PbXDEeamG-Ij7YnW7w" type="6001">
1309 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU7PrXDEeamG-Ij7YnW7w" x="3" y="71"/>
1310 </children>
1311 <children xmi:type="notation:Node" xmi:id="_ccU7P7XDEeamG-Ij7YnW7w" type="6002">
1312 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU7QLXDEeamG-Ij7YnW7w" x="20" y="6"/>
1313 </children>
1314 <children xmi:type="notation:Node" xmi:id="_ccU7QbXDEeamG-Ij7YnW7w" type="6003">
1315 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU7QrXDEeamG-Ij7YnW7w" x="-32" y="2"/>
1316 </children>
1317 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ccU7Q7XDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1318 <styles xmi:type="notation:FontStyle" xmi:id="_ccU7RLXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1319 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ccU7RbXDEeamG-Ij7YnW7w" points="[-30, 0, -15, 92]$[-30, -92, -15, 0]"/>
1320 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccU7RrXDEeamG-Ij7YnW7w" id="(0.6325301204819277,0.0)"/>
1321 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccU7R7XDEeamG-Ij7YnW7w" id="(0.6186440677966102,1.0)"/>
1322 </edges>
1323 <edges xmi:type="notation:Edge" xmi:id="_ccU7SLXDEeamG-Ij7YnW7w" type="4001" element="_ccU71LXDEeamG-Ij7YnW7w" source="_ccUTnLXDEeamG-Ij7YnW7w" target="_ccUUBLXDEeamG-Ij7YnW7w">
1324 <children xmi:type="notation:Node" xmi:id="_ccU7SbXDEeamG-Ij7YnW7w" type="6001">
1325 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU7SrXDEeamG-Ij7YnW7w" x="162" y="-37"/>
1326 </children>
1327 <children xmi:type="notation:Node" xmi:id="_ccU7S7XDEeamG-Ij7YnW7w" type="6002">
1328 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU7TLXDEeamG-Ij7YnW7w" x="50" y="11"/>
1329 </children>
1330 <children xmi:type="notation:Node" xmi:id="_ccU7TbXDEeamG-Ij7YnW7w" type="6003">
1331 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccU7TrXDEeamG-Ij7YnW7w" x="-52" y="-170"/>
1332 </children>
1333 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ccU7T7XDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1334 <styles xmi:type="notation:FontStyle" xmi:id="_ccU7ULXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1335 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ccU7UbXDEeamG-Ij7YnW7w" points="[151, -17, -380, 147]$[430, -17, -101, 147]$[430, -134, -101, 30]"/>
1336 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccU7UrXDEeamG-Ij7YnW7w" id="(0.0,1.3114754098360655)"/>
1337 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ccU7U7XDEeamG-Ij7YnW7w" id="(1.0,0.5081967213114754)"/>
1338 </edges>
1339 <edges xmi:type="notation:Edge" xmi:id="_klahoLXDEeamG-Ij7YnW7w" type="4001" element="_klCuMLXDEeamG-Ij7YnW7w" source="_ccUUBLXDEeamG-Ij7YnW7w" target="_ccUTsbXDEeamG-Ij7YnW7w">
1340 <children xmi:type="notation:Node" xmi:id="_klbIsLXDEeamG-Ij7YnW7w" type="6001">
1341 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_klbIsbXDEeamG-Ij7YnW7w" x="-2" y="54"/>
1342 </children>
1343 <children xmi:type="notation:Node" xmi:id="_klbIsrXDEeamG-Ij7YnW7w" type="6002">
1344 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_klbIs7XDEeamG-Ij7YnW7w" x="5" y="67"/>
1345 </children>
1346 <children xmi:type="notation:Node" xmi:id="_klbItLXDEeamG-Ij7YnW7w" type="6003">
1347 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_klbItbXDEeamG-Ij7YnW7w" x="-2" y="10"/>
1348 </children>
1349 <styles xmi:type="notation:ConnectorStyle" xmi:id="_klahobXDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1350 <styles xmi:type="notation:FontStyle" xmi:id="_klahorXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1351 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_klaho7XDEeamG-Ij7YnW7w" points="[-45, 30, 50, 181]$[-95, 30, 0, 181]$[-95, -151, 0, 0]"/>
1352 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_klbItrXDEeamG-Ij7YnW7w" id="(0.2710843373493976,0.0)"/>
1353 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_klbIt7XDEeamG-Ij7YnW7w" id="(0.6186440677966102,1.0)"/>
1354 </edges>
1355 <edges xmi:type="notation:Edge" xmi:id="_QlbbAMF9Eea_b6UyFzv22g" type="4001" element="_QlS4IMF9Eea_b6UyFzv22g" source="_ccUTnLXDEeamG-Ij7YnW7w" target="_ccUTsbXDEeamG-Ij7YnW7w">
1356 <children xmi:type="notation:Node" xmi:id="_QlcCEMF9Eea_b6UyFzv22g" type="6001">
1357 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QlcCEcF9Eea_b6UyFzv22g" y="-10"/>
1358 </children>
1359 <children xmi:type="notation:Node" xmi:id="_QlcCEsF9Eea_b6UyFzv22g" type="6002">
1360 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QlcCE8F9Eea_b6UyFzv22g" y="10"/>
1361 </children>
1362 <children xmi:type="notation:Node" xmi:id="_QlcCFMF9Eea_b6UyFzv22g" type="6003">
1363 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QlcCFcF9Eea_b6UyFzv22g" y="10"/>
1364 </children>
1365 <styles xmi:type="notation:ConnectorStyle" xmi:id="_QlbbAcF9Eea_b6UyFzv22g" routing="Rectilinear"/>
1366 <styles xmi:type="notation:FontStyle" xmi:id="_QlbbAsF9Eea_b6UyFzv22g" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1367 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QlbbA8F9Eea_b6UyFzv22g" points="[5, 490, 5, 490]$[247, 165, 247, 165]"/>
1368 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qld3QMF9Eea_b6UyFzv22g" id="(0.42617349970291146,0.7049180327868853)"/>
1369 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qld3QcF9Eea_b6UyFzv22g" id="(0.5,0.4878048780487805)"/>
1370 </edges>
1371 <edges xmi:type="notation:Edge" xmi:id="_bL5d4NUaEear_rf-Vav0Gw" type="4001" element="_bLJ3ANUaEear_rf-Vav0Gw" source="_ccUUBLXDEeamG-Ij7YnW7w" target="_ccUUBLXDEeamG-Ij7YnW7w">
1372 <children xmi:type="notation:Node" xmi:id="_bMEdANUaEear_rf-Vav0Gw" type="6001">
1373 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bMEdAdUaEear_rf-Vav0Gw" x="-3" y="-10"/>
1374 </children>
1375 <children xmi:type="notation:Node" xmi:id="_bMFrINUaEear_rf-Vav0Gw" type="6002">
1376 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bMFrIdUaEear_rf-Vav0Gw" x="16" y="10"/>
1377 </children>
1378 <children xmi:type="notation:Node" xmi:id="_bMGSMNUaEear_rf-Vav0Gw" type="6003">
1379 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bMGSMdUaEear_rf-Vav0Gw" x="6" y="4"/>
1380 </children>
1381 <styles xmi:type="notation:ConnectorStyle" xmi:id="_bL5d4dUaEear_rf-Vav0Gw" routing="Rectilinear"/>
1382 <styles xmi:type="notation:FontStyle" xmi:id="_bL5d4tUaEear_rf-Vav0Gw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1383 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bL5d49UaEear_rf-Vav0Gw" points="[0, 25, 6, 45]$[59, 25, 65, 45]$[59, 55, 65, 75]$[-41, 55, -35, 75]$[-41, 41, -35, 61]"/>
1384 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bMHgUNUaEear_rf-Vav0Gw" id="(1.0,0.32786885245901637)"/>
1385 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bMHgUdUaEear_rf-Vav0Gw" id="(0.963855421686747,0.0)"/>
1386 </edges>
1387 <edges xmi:type="notation:Edge" xmi:id="_6YFT4OW_EearOPSxyAbpKw" type="4001" element="_6W19wOW_EearOPSxyAbpKw" source="_ccUTnLXDEeamG-Ij7YnW7w" target="_ccUTo7XDEeamG-Ij7YnW7w">
1388 <children xmi:type="notation:Node" xmi:id="_6YWZoOW_EearOPSxyAbpKw" type="6001">
1389 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6YWZoeW_EearOPSxyAbpKw" y="-10"/>
1390 </children>
1391 <children xmi:type="notation:Node" xmi:id="_6YduYOW_EearOPSxyAbpKw" type="6002">
1392 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6YduYeW_EearOPSxyAbpKw" y="10"/>
1393 </children>
1394 <children xmi:type="notation:Node" xmi:id="_6YeVcOW_EearOPSxyAbpKw" type="6003">
1395 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6YeVceW_EearOPSxyAbpKw" y="10"/>
1396 </children>
1397 <styles xmi:type="notation:ConnectorStyle" xmi:id="_6YFT4eW_EearOPSxyAbpKw" routing="Rectilinear"/>
1398 <styles xmi:type="notation:FontStyle" xmi:id="_6YFT4uW_EearOPSxyAbpKw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1399 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6YFT4-W_EearOPSxyAbpKw" points="[5, 470, 5, 470]$[15, 45, 15, 45]"/>
1400 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6Y3-EOW_EearOPSxyAbpKw" id="(0.5,0.49206349206349204)"/>
1401 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6Y3-EeW_EearOPSxyAbpKw" id="(0.5,0.5)"/>
1402 </edges>
1403 <edges xmi:type="notation:Edge" xmi:id="_N_ukAPMVEeagPYxz1ZWLIQ" type="4001" element="_N-rbIPMVEeagPYxz1ZWLIQ" source="_ccUTnLXDEeamG-Ij7YnW7w" target="_ccUUBLXDEeamG-Ij7YnW7w">
1404 <children xmi:type="notation:Node" xmi:id="_N_vLEPMVEeagPYxz1ZWLIQ" type="6001">
1405 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N_vLEfMVEeagPYxz1ZWLIQ" x="-22" y="-10"/>
1406 </children>
1407 <children xmi:type="notation:Node" xmi:id="_N_vLEvMVEeagPYxz1ZWLIQ" type="6002">
1408 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N_vLE_MVEeagPYxz1ZWLIQ" x="-7" y="10"/>
1409 </children>
1410 <children xmi:type="notation:Node" xmi:id="_N_vLFPMVEeagPYxz1ZWLIQ" type="6003">
1411 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N_vLFfMVEeagPYxz1ZWLIQ" x="7" y="10"/>
1412 </children>
1413 <styles xmi:type="notation:ConnectorStyle" xmi:id="_N_ukAfMVEeagPYxz1ZWLIQ" routing="Rectilinear"/>
1414 <styles xmi:type="notation:FontStyle" xmi:id="_N_ukAvMVEeagPYxz1ZWLIQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1415 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_N_ukA_MVEeagPYxz1ZWLIQ" points="[0, 45, -272, 114]$[272, 45, 0, 114]$[272, -69, 0, 0]"/>
1416 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_N_vyIPMVEeagPYxz1ZWLIQ" id="(1.0,0.2459016393442623)"/>
1417 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_N_vyIfMVEeagPYxz1ZWLIQ" id="(0.5,1.0)"/>
1418 </edges>
1419 </data>
1420 </ownedAnnotationEntries>
1421 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_ccU7VbXDEeamG-Ij7YnW7w" name="PartialInterpretation" tooltipText="" outgoingEdges="_ccU7WrXDEeamG-Ij7YnW7w _ccU7yrXDEeamG-Ij7YnW7w _ccU71LXDEeamG-Ij7YnW7w _QlS4IMF9Eea_b6UyFzv22g _6W19wOW_EearOPSxyAbpKw _N-rbIPMVEeagPYxz1ZWLIQ" width="12" height="10">
1422 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialInterpretation"/>
1423 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialInterpretation"/>
1424 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1425 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1426 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1427 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_QZ78oPMVEeagPYxz1ZWLIQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1428 <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"/>
1429 </ownedStyle>
1430 <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']"/>
1431 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_QlJHIMF9Eea_b6UyFzv22g" name="minNewElements : EInt = 0" tooltipText="">
1432 <target xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//PartialInterpretation/minNewElements"/>
1433 <semanticElements xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//PartialInterpretation/minNewElements"/>
1434 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_QlK8UMF9Eea_b6UyFzv22g" labelAlignment="LEFT" description="_ccUTlrXDEeamG-Ij7YnW7w">
1435 <labelFormat>bold</labelFormat>
1436 </ownedStyle>
1437 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
1438 </ownedElements>
1439 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_QlLjYMF9Eea_b6UyFzv22g" name="maxNewElements : EInt = 0" tooltipText="">
1440 <target xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//PartialInterpretation/maxNewElements"/>
1441 <semanticElements xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//PartialInterpretation/maxNewElements"/>
1442 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_QlLjYcF9Eea_b6UyFzv22g" labelAlignment="LEFT" description="_ccUTlrXDEeamG-Ij7YnW7w">
1443 <labelFormat>bold</labelFormat>
1444 </ownedStyle>
1445 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
1446 </ownedElements>
1447 </ownedDiagramElements>
1448 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_ccU7V7XDEeamG-Ij7YnW7w" name="LogicProblem" tooltipText="" outgoingEdges="_ccU7c7XDEeamG-Ij7YnW7w _ccU7g7XDEeamG-Ij7YnW7w" incomingEdges="_ccU7WrXDEeamG-Ij7YnW7w _6W19wOW_EearOPSxyAbpKw" width="12" height="10">
1449 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem"/>
1450 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem"/>
1451 <decorations xmi:type="viewpoint:Decoration" xmi:id="_ccU7WLXDEeamG-Ij7YnW7w">
1452 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
1453 </decorations>
1454 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1455 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1456 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1457 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_ccU7WbXDEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
1458 <customFeatures>backgroundColor</customFeatures>
1459 <customFeatures>foregroundColor</customFeatures>
1460 <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"/>
1461 </ownedStyle>
1462 <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']"/>
1463 </ownedDiagramElements>
1464 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_ccU7WrXDEeamG-Ij7YnW7w" name="[1..1] problem" sourceNode="_ccU7VbXDEeamG-Ij7YnW7w" targetNode="_ccU7V7XDEeamG-Ij7YnW7w">
1465 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/problem"/>
1466 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/problem"/>
1467 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_ccU7W7XDEeamG-Ij7YnW7w" description="_ccUTk7XDEeamG-Ij7YnW7w" routingStyle="manhattan" strokeColor="0,0,0">
1468 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_ccU7XLXDEeamG-Ij7YnW7w" showIcon="false">
1469 <customFeatures>labelSize</customFeatures>
1470 <labelFormat>bold</labelFormat>
1471 </centerLabelStyle>
1472 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_ccU7XbXDEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
1473 <customFeatures>labelSize</customFeatures>
1474 </endLabelStyle>
1475 </ownedStyle>
1476 <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']"/>
1477 </ownedDiagramElements>
1478 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_ccU7YbXDEeamG-Ij7YnW7w" name="DefinedElement" tooltipText="" incomingEdges="_ccU7g7XDEeamG-Ij7YnW7w _ccU7yrXDEeamG-Ij7YnW7w _klCuMLXDEeamG-Ij7YnW7w _QlS4IMF9Eea_b6UyFzv22g" width="12" height="10">
1479 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//DefinedElement"/>
1480 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//DefinedElement"/>
1481 <decorations xmi:type="viewpoint:Decoration" xmi:id="_ccU7YrXDEeamG-Ij7YnW7w">
1482 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
1483 </decorations>
1484 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1485 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1486 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1487 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_ccU7Y7XDEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
1488 <customFeatures>backgroundColor</customFeatures>
1489 <customFeatures>foregroundColor</customFeatures>
1490 <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"/>
1491 </ownedStyle>
1492 <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']"/>
1493 </ownedDiagramElements>
1494 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_ccU7arXDEeamG-Ij7YnW7w" name="Type" tooltipText="" outgoingEdges="_ccU7h7XDEeamG-Ij7YnW7w" incomingEdges="_ccU7c7XDEeamG-Ij7YnW7w _ccU7h7XDEeamG-Ij7YnW7w _ccU7p7XDEeamG-Ij7YnW7w" width="12" height="10">
1495 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type"/>
1496 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type"/>
1497 <decorations xmi:type="viewpoint:Decoration" xmi:id="_ccU7a7XDEeamG-Ij7YnW7w">
1498 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
1499 </decorations>
1500 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1501 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1502 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1503 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_ccU7bLXDEeamG-Ij7YnW7w" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
1504 <customFeatures>backgroundColor</customFeatures>
1505 <customFeatures>foregroundColor</customFeatures>
1506 <labelFormat>italic</labelFormat>
1507 <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"/>
1508 </ownedStyle>
1509 <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']"/>
1510 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_ccU7bbXDEeamG-Ij7YnW7w" name="name : EString" visible="false" tooltipText="">
1511 <target xmi:type="ecore:EAttribute" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/name"/>
1512 <semanticElements xmi:type="ecore:EAttribute" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/name"/>
1513 <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_ccU7brXDEeamG-Ij7YnW7w"/>
1514 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_ccU7b7XDEeamG-Ij7YnW7w" labelAlignment="LEFT" description="_ccUTlrXDEeamG-Ij7YnW7w">
1515 <labelFormat>bold</labelFormat>
1516 </ownedStyle>
1517 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
1518 </ownedElements>
1519 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_ccU7cLXDEeamG-Ij7YnW7w" name="isAbstract : EBoolean = false" visible="false" tooltipText="">
1520 <target xmi:type="ecore:EAttribute" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/isAbstract"/>
1521 <semanticElements xmi:type="ecore:EAttribute" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/isAbstract"/>
1522 <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_ccU7cbXDEeamG-Ij7YnW7w"/>
1523 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_ccU7crXDEeamG-Ij7YnW7w" labelAlignment="LEFT" description="_ccUTlrXDEeamG-Ij7YnW7w">
1524 <labelFormat>bold</labelFormat>
1525 </ownedStyle>
1526 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
1527 </ownedElements>
1528 </ownedDiagramElements>
1529 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_ccU7c7XDEeamG-Ij7YnW7w" name="[0..*] types" sourceNode="_ccU7V7XDEeamG-Ij7YnW7w" targetNode="_ccU7arXDEeamG-Ij7YnW7w">
1530 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/types"/>
1531 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/types"/>
1532 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_ccU7dLXDEeamG-Ij7YnW7w" description="_ccUTl7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1533 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_ccU7dbXDEeamG-Ij7YnW7w" showIcon="false">
1534 <customFeatures>labelSize</customFeatures>
1535 </centerLabelStyle>
1536 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_ccU7drXDEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
1537 <customFeatures>labelSize</customFeatures>
1538 </endLabelStyle>
1539 </ownedStyle>
1540 <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']"/>
1541 </ownedDiagramElements>
1542 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_ccU7g7XDEeamG-Ij7YnW7w" name="[0..*] elements" sourceNode="_ccU7V7XDEeamG-Ij7YnW7w" targetNode="_ccU7YbXDEeamG-Ij7YnW7w">
1543 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/elements"/>
1544 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/elements"/>
1545 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_ccU7hLXDEeamG-Ij7YnW7w" description="_ccUTl7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1546 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_ccU7hbXDEeamG-Ij7YnW7w" showIcon="false">
1547 <customFeatures>labelSize</customFeatures>
1548 </centerLabelStyle>
1549 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_ccU7hrXDEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
1550 <customFeatures>labelSize</customFeatures>
1551 </endLabelStyle>
1552 </ownedStyle>
1553 <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']"/>
1554 </ownedDiagramElements>
1555 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_ccU7h7XDEeamG-Ij7YnW7w" visible="false" sourceNode="_ccU7arXDEeamG-Ij7YnW7w" targetNode="_ccU7arXDEeamG-Ij7YnW7w" beginLabel="[0..*] supertypes" endLabel="[0..*] subtypes">
1556 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/subtypes"/>
1557 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/subtypes"/>
1558 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Type/supertypes"/>
1559 <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_ccU7iLXDEeamG-Ij7YnW7w"/>
1560 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_ccU7ibXDEeamG-Ij7YnW7w" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
1561 <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='Bi-directional%20EC_EReference%20']/@style"/>
1562 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_ccU7irXDEeamG-Ij7YnW7w" showIcon="false"/>
1563 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_ccU7i7XDEeamG-Ij7YnW7w" showIcon="false"/>
1564 </ownedStyle>
1565 <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']"/>
1566 </ownedDiagramElements>
1567 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_ccU7pLXDEeamG-Ij7YnW7w" name="TypeDeclaration" tooltipText="" outgoingEdges="_ccU7p7XDEeamG-Ij7YnW7w" incomingEdges="_ccU70LXDEeamG-Ij7YnW7w" width="12" height="10">
1568 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeDeclaration"/>
1569 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeDeclaration"/>
1570 <decorations xmi:type="viewpoint:Decoration" xmi:id="_ccU7pbXDEeamG-Ij7YnW7w">
1571 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
1572 </decorations>
1573 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1574 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1575 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1576 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_ccU7prXDEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
1577 <customFeatures>backgroundColor</customFeatures>
1578 <customFeatures>foregroundColor</customFeatures>
1579 <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"/>
1580 </ownedStyle>
1581 <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']"/>
1582 </ownedDiagramElements>
1583 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_ccU7p7XDEeamG-Ij7YnW7w" sourceNode="_ccU7pLXDEeamG-Ij7YnW7w" targetNode="_ccU7arXDEeamG-Ij7YnW7w">
1584 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeDeclaration"/>
1585 <semanticElements xmi:type="ecore:EGenericType" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeDeclaration/@eGenericSuperTypes.0"/>
1586 <decorations xmi:type="viewpoint:Decoration" xmi:id="_ccU7qLXDEeamG-Ij7YnW7w">
1587 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
1588 </decorations>
1589 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_ccU7qbXDEeamG-Ij7YnW7w" targetArrow="InputClosedArrow" routingStyle="tree">
1590 <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"/>
1591 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_ccU7qrXDEeamG-Ij7YnW7w" showIcon="false">
1592 <labelFormat>italic</labelFormat>
1593 </beginLabelStyle>
1594 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_ccU7q7XDEeamG-Ij7YnW7w" showIcon="false"/>
1595 </ownedStyle>
1596 <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']"/>
1597 </ownedDiagramElements>
1598 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_ccU7yrXDEeamG-Ij7YnW7w" name="[0..*] newElements" sourceNode="_ccU7VbXDEeamG-Ij7YnW7w" targetNode="_ccU7YbXDEeamG-Ij7YnW7w">
1599 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/newElements"/>
1600 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/newElements"/>
1601 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_ccU7y7XDEeamG-Ij7YnW7w" description="_ccUTl7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1602 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_ccU7zLXDEeamG-Ij7YnW7w" showIcon="false">
1603 <customFeatures>labelSize</customFeatures>
1604 </centerLabelStyle>
1605 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_ccU7zbXDEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
1606 <customFeatures>labelSize</customFeatures>
1607 </endLabelStyle>
1608 </ownedStyle>
1609 <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']"/>
1610 </ownedDiagramElements>
1611 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_ccU7zrXDEeamG-Ij7YnW7w" name="PartialTypeInterpratation" tooltipText="" outgoingEdges="_ccU70LXDEeamG-Ij7YnW7w _klCuMLXDEeamG-Ij7YnW7w _bLJ3ANUaEear_rf-Vav0Gw" incomingEdges="_ccU71LXDEeamG-Ij7YnW7w _bLJ3ANUaEear_rf-Vav0Gw _N-rbIPMVEeagPYxz1ZWLIQ" width="12" height="10">
1612 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialTypeInterpratation"/>
1613 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialTypeInterpratation"/>
1614 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1615 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1616 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1617 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_ccU7z7XDEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1618 <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"/>
1619 </ownedStyle>
1620 <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']"/>
1621 </ownedDiagramElements>
1622 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_ccU70LXDEeamG-Ij7YnW7w" name="[1..1] interpretationOf" sourceNode="_ccU7zrXDEeamG-Ij7YnW7w" targetNode="_ccU7pLXDEeamG-Ij7YnW7w">
1623 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialTypeInterpratation/interpretationOf"/>
1624 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialTypeInterpratation/interpretationOf"/>
1625 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_ccU70bXDEeamG-Ij7YnW7w" description="_ccUTk7XDEeamG-Ij7YnW7w" routingStyle="manhattan" strokeColor="0,0,0">
1626 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_ccU70rXDEeamG-Ij7YnW7w" showIcon="false">
1627 <labelFormat>bold</labelFormat>
1628 </centerLabelStyle>
1629 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_ccU707XDEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelColor="39,76,114"/>
1630 </ownedStyle>
1631 <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']"/>
1632 </ownedDiagramElements>
1633 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_ccU71LXDEeamG-Ij7YnW7w" name="[0..*] partialtypeinterpratation" sourceNode="_ccU7VbXDEeamG-Ij7YnW7w" targetNode="_ccU7zrXDEeamG-Ij7YnW7w">
1634 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/partialtypeinterpratation"/>
1635 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/partialtypeinterpratation"/>
1636 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_ccU71bXDEeamG-Ij7YnW7w" description="_ccUTl7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1637 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_ccU71rXDEeamG-Ij7YnW7w" showIcon="false">
1638 <customFeatures>labelSize</customFeatures>
1639 </centerLabelStyle>
1640 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_ccU717XDEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
1641 <customFeatures>labelSize</customFeatures>
1642 </endLabelStyle>
1643 </ownedStyle>
1644 <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']"/>
1645 </ownedDiagramElements>
1646 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_klCuMLXDEeamG-Ij7YnW7w" name="[0..*] elements" sourceNode="_ccU7zrXDEeamG-Ij7YnW7w" targetNode="_ccU7YbXDEeamG-Ij7YnW7w">
1647 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialTypeInterpratation/elements"/>
1648 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialTypeInterpratation/elements"/>
1649 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_M5V9kL3JEeaj7tVusjQpHg" routingStyle="manhattan" strokeColor="0,0,0">
1650 <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_EReference']/@style"/>
1651 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_M5V9kb3JEeaj7tVusjQpHg" showIcon="false"/>
1652 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_M5V9kr3JEeaj7tVusjQpHg" labelSize="6" showIcon="false" labelColor="39,76,114"/>
1653 </ownedStyle>
1654 <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']"/>
1655 </ownedDiagramElements>
1656 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_QlS4IMF9Eea_b6UyFzv22g" name="[1..1] openWorldElementPrototype" sourceNode="_ccU7VbXDEeamG-Ij7YnW7w" targetNode="_ccU7YbXDEeamG-Ij7YnW7w">
1657 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/openWorldElementPrototype"/>
1658 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/openWorldElementPrototype"/>
1659 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_QlUGQMF9Eea_b6UyFzv22g" description="_QlTfMMF9Eea_b6UyFzv22g" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1660 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_QlUGQcF9Eea_b6UyFzv22g" showIcon="false">
1661 <customFeatures>labelSize</customFeatures>
1662 <labelFormat>bold</labelFormat>
1663 </centerLabelStyle>
1664 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_QlUGQsF9Eea_b6UyFzv22g" showIcon="false" labelColor="39,76,114">
1665 <customFeatures>labelSize</customFeatures>
1666 </endLabelStyle>
1667 </ownedStyle>
1668 <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']"/>
1669 </ownedDiagramElements>
1670 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_bLJ3ANUaEear_rf-Vav0Gw" name="[0..*] supertypeInterpretation" sourceNode="_ccU7zrXDEeamG-Ij7YnW7w" targetNode="_ccU7zrXDEeamG-Ij7YnW7w">
1671 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialTypeInterpratation/supertypeInterpretation"/>
1672 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialTypeInterpratation/supertypeInterpretation"/>
1673 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_bLLsMNUaEear_rf-Vav0Gw" routingStyle="manhattan" strokeColor="0,0,0">
1674 <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_EReference']/@style"/>
1675 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_bLLsMdUaEear_rf-Vav0Gw" showIcon="false">
1676 <customFeatures>labelSize</customFeatures>
1677 </centerLabelStyle>
1678 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_bLLsMtUaEear_rf-Vav0Gw" showIcon="false" labelColor="39,76,114">
1679 <customFeatures>labelSize</customFeatures>
1680 </endLabelStyle>
1681 </ownedStyle>
1682 <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']"/>
1683 </ownedDiagramElements>
1684 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_6W19wOW_EearOPSxyAbpKw" name="[0..1] problemConainer" sourceNode="_ccU7VbXDEeamG-Ij7YnW7w" targetNode="_ccU7V7XDEeamG-Ij7YnW7w">
1685 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/problemConainer"/>
1686 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/problemConainer"/>
1687 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6W3y8OW_EearOPSxyAbpKw" description="_ccUTl7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1688 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6W3y8eW_EearOPSxyAbpKw" showIcon="false">
1689 <customFeatures>labelSize</customFeatures>
1690 </centerLabelStyle>
1691 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6W3y8uW_EearOPSxyAbpKw" showIcon="false" labelColor="39,76,114">
1692 <customFeatures>labelSize</customFeatures>
1693 </endLabelStyle>
1694 </ownedStyle>
1695 <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']"/>
1696 </ownedDiagramElements>
1697 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_N-rbIPMVEeagPYxz1ZWLIQ" name="[0..*] preGeneratedElements" sourceNode="_ccU7VbXDEeamG-Ij7YnW7w" targetNode="_ccU7zrXDEeamG-Ij7YnW7w">
1698 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/preGeneratedElements"/>
1699 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/preGeneratedElements"/>
1700 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_N-spQPMVEeagPYxz1ZWLIQ" description="_ccUTl7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
1701 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_N-spQfMVEeagPYxz1ZWLIQ" showIcon="false">
1702 <customFeatures>labelSize</customFeatures>
1703 </centerLabelStyle>
1704 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_N-spQvMVEeagPYxz1ZWLIQ" showIcon="false" labelColor="39,76,114">
1705 <customFeatures>labelSize</customFeatures>
1706 </endLabelStyle>
1707 </ownedStyle>
1708 <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']"/>
1709 </ownedDiagramElements>
1710 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
1711 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_ccU72LXDEeamG-Ij7YnW7w"/>
1712 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
1713 <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']"/>
1714 <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']"/>
1715 <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']"/>
1716 <target xmi:type="ecore:EPackage" href="PartialInterpretation.ecore#/"/>
1717 </ownedRepresentations>
1718 <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_pEmCsLXDEeamG-Ij7YnW7w" name="relation interpretation">
1719 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_pEmCsbXDEeamG-Ij7YnW7w" source="DANNOTATION_CUSTOMIZATION_KEY">
1720 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_pEmCsrXDEeamG-Ij7YnW7w">
1721 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_pEmCs7XDEeamG-Ij7YnW7w" routingStyle="manhattan">
1722 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1723 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_pEmCtLXDEeamG-Ij7YnW7w" showIcon="false" labelExpression="service:render">
1724 <labelFormat>bold</labelFormat>
1725 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1726 </centerLabelStyleDescription>
1727 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_pEmCtbXDEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
1728 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1729 </endLabelStyleDescription>
1730 </computedStyleDescriptions>
1731 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_pEmCt7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan">
1732 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1733 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_pEmCuLXDEeamG-Ij7YnW7w" showIcon="false" labelExpression="service:render">
1734 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1735 </centerLabelStyleDescription>
1736 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_pEmCubXDEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
1737 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1738 </endLabelStyleDescription>
1739 </computedStyleDescriptions>
1740 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_RUg1QMAiEeaaj7sYFz2QKg" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
1741 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1742 <labelFormat>bold</labelFormat>
1743 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1744 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1745 </computedStyleDescriptions>
1746 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_RU2McMAiEeaaj7sYFz2QKg" sourceArrow="FillDiamond" routingStyle="manhattan">
1747 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1748 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_RU2MccAiEeaaj7sYFz2QKg" showIcon="false" labelExpression="service:render">
1749 <labelFormat>bold</labelFormat>
1750 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
1751 </centerLabelStyleDescription>
1752 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_RU2McsAiEeaaj7sYFz2QKg" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
1753 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
1754 </endLabelStyleDescription>
1755 </computedStyleDescriptions>
1756 </data>
1757 </ownedAnnotationEntries>
1758 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_pEmCu7XDEeamG-Ij7YnW7w" source="GMF_DIAGRAMS">
1759 <data xmi:type="notation:Diagram" xmi:id="_pEmCvLXDEeamG-Ij7YnW7w" type="Sirius" element="_pEmCsLXDEeamG-Ij7YnW7w" measurementUnit="Pixel">
1760 <children xmi:type="notation:Node" xmi:id="_pEmCvbXDEeamG-Ij7YnW7w" type="2003" element="_pEmrI7XDEeamG-Ij7YnW7w">
1761 <children xmi:type="notation:Node" xmi:id="_pEmCvrXDEeamG-Ij7YnW7w" type="5007"/>
1762 <children xmi:type="notation:Node" xmi:id="_pEmCv7XDEeamG-Ij7YnW7w" type="7004">
1763 <children xmi:type="notation:Node" xmi:id="_RVE18MAiEeaaj7sYFz2QKg" type="3010" element="_RUgOMMAiEeaaj7sYFz2QKg">
1764 <styles xmi:type="notation:FontStyle" xmi:id="_RVE18cAiEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8" bold="true"/>
1765 <layoutConstraint xmi:type="notation:Location" xmi:id="_RVE18sAiEeaaj7sYFz2QKg"/>
1766 </children>
1767 <children xmi:type="notation:Node" xmi:id="_RVIgUMAiEeaaj7sYFz2QKg" type="3010" element="_RUiDYMAiEeaaj7sYFz2QKg">
1768 <styles xmi:type="notation:FontStyle" xmi:id="_RVJHYMAiEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8" bold="true"/>
1769 <layoutConstraint xmi:type="notation:Location" xmi:id="_RVJHYcAiEeaaj7sYFz2QKg"/>
1770 </children>
1771 <styles xmi:type="notation:SortingStyle" xmi:id="_pEmCwLXDEeamG-Ij7YnW7w"/>
1772 <styles xmi:type="notation:FilteringStyle" xmi:id="_pEmCwbXDEeamG-Ij7YnW7w"/>
1773 </children>
1774 <styles xmi:type="notation:ShapeStyle" xmi:id="_pEmCwrXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
1775 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmCw7XDEeamG-Ij7YnW7w" x="195" y="490" width="153" height="48"/>
1776 </children>
1777 <children xmi:type="notation:Node" xmi:id="_pEmCxLXDEeamG-Ij7YnW7w" type="2003" element="_pEmrJbXDEeamG-Ij7YnW7w">
1778 <children xmi:type="notation:Node" xmi:id="_pEmCxbXDEeamG-Ij7YnW7w" type="5007"/>
1779 <children xmi:type="notation:Node" xmi:id="_pEmCxrXDEeamG-Ij7YnW7w" type="7004">
1780 <styles xmi:type="notation:SortingStyle" xmi:id="_pEmpwLXDEeamG-Ij7YnW7w"/>
1781 <styles xmi:type="notation:FilteringStyle" xmi:id="_pEmpwbXDEeamG-Ij7YnW7w"/>
1782 </children>
1783 <styles xmi:type="notation:ShapeStyle" xmi:id="_pEmpwrXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" fillColor="8047085"/>
1784 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmpw7XDEeamG-Ij7YnW7w" x="212" y="30"/>
1785 </children>
1786 <children xmi:type="notation:Node" xmi:id="_pEmpy7XDEeamG-Ij7YnW7w" type="2003" element="_pEmrL7XDEeamG-Ij7YnW7w">
1787 <children xmi:type="notation:Node" xmi:id="_pEmpzLXDEeamG-Ij7YnW7w" type="5007"/>
1788 <children xmi:type="notation:Node" xmi:id="_pEmpzbXDEeamG-Ij7YnW7w" type="7004">
1789 <styles xmi:type="notation:SortingStyle" xmi:id="_pEmpzrXDEeamG-Ij7YnW7w"/>
1790 <styles xmi:type="notation:FilteringStyle" xmi:id="_pEmpz7XDEeamG-Ij7YnW7w"/>
1791 </children>
1792 <styles xmi:type="notation:ShapeStyle" xmi:id="_pEmp0LXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" fillColor="8047085"/>
1793 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmp0bXDEeamG-Ij7YnW7w" x="740" y="537" height="41"/>
1794 </children>
1795 <children xmi:type="notation:Node" xmi:id="_pEmp2bXDEeamG-Ij7YnW7w" type="2003" element="_pEmrNbXDEeamG-Ij7YnW7w">
1796 <children xmi:type="notation:Node" xmi:id="_pEmp2rXDEeamG-Ij7YnW7w" type="5007"/>
1797 <children xmi:type="notation:Node" xmi:id="_pEmp27XDEeamG-Ij7YnW7w" type="7004">
1798 <styles xmi:type="notation:SortingStyle" xmi:id="_pEmp3LXDEeamG-Ij7YnW7w"/>
1799 <styles xmi:type="notation:FilteringStyle" xmi:id="_pEmp3bXDEeamG-Ij7YnW7w"/>
1800 </children>
1801 <styles xmi:type="notation:ShapeStyle" xmi:id="_pEmp3rXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" italic="true" fillColor="8047085"/>
1802 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmp37XDEeamG-Ij7YnW7w" x="462" y="50" height="33"/>
1803 </children>
1804 <children xmi:type="notation:Node" xmi:id="_pEmp9LXDEeamG-Ij7YnW7w" type="2003" element="_pEmrYrXDEeamG-Ij7YnW7w">
1805 <children xmi:type="notation:Node" xmi:id="_pEmp9bXDEeamG-Ij7YnW7w" type="5007"/>
1806 <children xmi:type="notation:Node" xmi:id="_pEmp9rXDEeamG-Ij7YnW7w" type="7004">
1807 <styles xmi:type="notation:SortingStyle" xmi:id="_pEmp97XDEeamG-Ij7YnW7w"/>
1808 <styles xmi:type="notation:FilteringStyle" xmi:id="_pEmp-LXDEeamG-Ij7YnW7w"/>
1809 </children>
1810 <styles xmi:type="notation:ShapeStyle" xmi:id="_pEmp-bXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" fillColor="8047085"/>
1811 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmp-rXDEeamG-Ij7YnW7w" x="472" y="170" height="14"/>
1812 </children>
1813 <children xmi:type="notation:Node" xmi:id="_pEmqELXDEeamG-Ij7YnW7w" type="2003" element="_pEmrfLXDEeamG-Ij7YnW7w">
1814 <children xmi:type="notation:Node" xmi:id="_pEmqEbXDEeamG-Ij7YnW7w" type="5007"/>
1815 <children xmi:type="notation:Node" xmi:id="_pEmqErXDEeamG-Ij7YnW7w" type="7004">
1816 <styles xmi:type="notation:SortingStyle" xmi:id="_pEmqE7XDEeamG-Ij7YnW7w"/>
1817 <styles xmi:type="notation:FilteringStyle" xmi:id="_pEmqFLXDEeamG-Ij7YnW7w"/>
1818 </children>
1819 <styles xmi:type="notation:ShapeStyle" xmi:id="_pEmqFbXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
1820 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqFrXDEeamG-Ij7YnW7w" x="462" y="395" width="178" height="63"/>
1821 </children>
1822 <children xmi:type="notation:Node" xmi:id="_7EeIoLXDEeamG-Ij7YnW7w" type="2003" element="_7EWz4LXDEeamG-Ij7YnW7w">
1823 <children xmi:type="notation:Node" xmi:id="_7EevsLXDEeamG-Ij7YnW7w" type="5007"/>
1824 <children xmi:type="notation:Node" xmi:id="_7EevsbXDEeamG-Ij7YnW7w" type="7004">
1825 <styles xmi:type="notation:SortingStyle" xmi:id="_7EevsrXDEeamG-Ij7YnW7w"/>
1826 <styles xmi:type="notation:FilteringStyle" xmi:id="_7Eevs7XDEeamG-Ij7YnW7w"/>
1827 </children>
1828 <styles xmi:type="notation:ShapeStyle" xmi:id="_7EeIobXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8" italic="true"/>
1829 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7EeIorXDEeamG-Ij7YnW7w" x="725" y="40"/>
1830 </children>
1831 <children xmi:type="notation:Node" xmi:id="_n_b8ALXEEeamG-Ij7YnW7w" type="2003" element="_n-_3ILXEEeamG-Ij7YnW7w">
1832 <children xmi:type="notation:Node" xmi:id="_n_cjELXEEeamG-Ij7YnW7w" type="5007"/>
1833 <children xmi:type="notation:Node" xmi:id="_n_cjEbXEEeamG-Ij7YnW7w" type="7004">
1834 <styles xmi:type="notation:SortingStyle" xmi:id="_n_cjErXEEeamG-Ij7YnW7w"/>
1835 <styles xmi:type="notation:FilteringStyle" xmi:id="_n_cjE7XEEeamG-Ij7YnW7w"/>
1836 </children>
1837 <styles xmi:type="notation:ShapeStyle" xmi:id="_n_b8AbXEEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
1838 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_n_b8ArXEEeamG-Ij7YnW7w" x="770" y="395" width="120" height="43"/>
1839 </children>
1840 <children xmi:type="notation:Node" xmi:id="__5rHkLXEEeamG-Ij7YnW7w" type="2003" element="__5SGALXEEeamG-Ij7YnW7w">
1841 <children xmi:type="notation:Node" xmi:id="__5ruoLXEEeamG-Ij7YnW7w" type="5007"/>
1842 <children xmi:type="notation:Node" xmi:id="__5ruobXEEeamG-Ij7YnW7w" type="7004">
1843 <styles xmi:type="notation:SortingStyle" xmi:id="__5ruorXEEeamG-Ij7YnW7w"/>
1844 <styles xmi:type="notation:FilteringStyle" xmi:id="__5ruo7XEEeamG-Ij7YnW7w"/>
1845 </children>
1846 <styles xmi:type="notation:ShapeStyle" xmi:id="__5rHkbXEEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
1847 <layoutConstraint xmi:type="notation:Bounds" xmi:id="__5rHkrXEEeamG-Ij7YnW7w" x="645" y="467" width="173" height="48"/>
1848 </children>
1849 <children xmi:type="notation:Node" xmi:id="_ERrCkLXFEeamG-Ij7YnW7w" type="2003" element="_ERNIgLXFEeamG-Ij7YnW7w">
1850 <children xmi:type="notation:Node" xmi:id="_ERrCk7XFEeamG-Ij7YnW7w" type="5007"/>
1851 <children xmi:type="notation:Node" xmi:id="_ERrClLXFEeamG-Ij7YnW7w" type="7004">
1852 <styles xmi:type="notation:SortingStyle" xmi:id="_ERrClbXFEeamG-Ij7YnW7w"/>
1853 <styles xmi:type="notation:FilteringStyle" xmi:id="_ERrClrXFEeamG-Ij7YnW7w"/>
1854 </children>
1855 <styles xmi:type="notation:ShapeStyle" xmi:id="_ERrCkbXFEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
1856 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERrCkrXFEeamG-Ij7YnW7w" x="830" y="468" width="163" height="46"/>
1857 </children>
1858 <children xmi:type="notation:Node" xmi:id="_HsPE8LXFEeamG-Ij7YnW7w" type="2003" element="_Hr5GsLXFEeamG-Ij7YnW7w">
1859 <children xmi:type="notation:Node" xmi:id="_HsPsALXFEeamG-Ij7YnW7w" type="5007"/>
1860 <children xmi:type="notation:Node" xmi:id="_HsPsAbXFEeamG-Ij7YnW7w" type="7004">
1861 <styles xmi:type="notation:SortingStyle" xmi:id="_HsPsArXFEeamG-Ij7YnW7w"/>
1862 <styles xmi:type="notation:FilteringStyle" xmi:id="_HsPsA7XFEeamG-Ij7YnW7w"/>
1863 </children>
1864 <styles xmi:type="notation:ShapeStyle" xmi:id="_HsPE8bXFEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
1865 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HsPE8rXFEeamG-Ij7YnW7w" x="1050" y="470" width="120" height="35"/>
1866 </children>
1867 <children xmi:type="notation:Node" xmi:id="_KRyK4LXFEeamG-Ij7YnW7w" type="2003" element="_KReB0LXFEeamG-Ij7YnW7w">
1868 <children xmi:type="notation:Node" xmi:id="_KRyx8LXFEeamG-Ij7YnW7w" type="5007"/>
1869 <children xmi:type="notation:Node" xmi:id="_KRyx8bXFEeamG-Ij7YnW7w" type="7004">
1870 <children xmi:type="notation:Node" xmi:id="_cAdMELXFEeamG-Ij7YnW7w" type="3010" element="_cAH04LXFEeamG-Ij7YnW7w">
1871 <styles xmi:type="notation:FontStyle" xmi:id="_cAdMEbXFEeamG-Ij7YnW7w" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
1872 <layoutConstraint xmi:type="notation:Location" xmi:id="_cAdMErXFEeamG-Ij7YnW7w"/>
1873 </children>
1874 <styles xmi:type="notation:SortingStyle" xmi:id="_KRyx8rXFEeamG-Ij7YnW7w"/>
1875 <styles xmi:type="notation:FilteringStyle" xmi:id="_KRyx87XFEeamG-Ij7YnW7w"/>
1876 </children>
1877 <styles xmi:type="notation:ShapeStyle" xmi:id="_KRyK4bXFEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
1878 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KRyK4rXFEeamG-Ij7YnW7w" x="1032" y="534" width="155" height="48"/>
1879 </children>
1880 <children xmi:type="notation:Shape" xmi:id="_AnFKsLXGEeamG-Ij7YnW7w" type="Note" fontName="Segoe UI" description="TODO" fillColor="13369343" transparency="0" lineColor="6737151" lineWidth="1">
1881 <children xmi:type="notation:BasicDecorationNode" xmi:id="_AnFKtLXGEeamG-Ij7YnW7w" type="DiagramName">
1882 <element xsi:nil="true"/>
1883 </children>
1884 <children xmi:type="notation:BasicDecorationNode" xmi:id="_AnFKtbXGEeamG-Ij7YnW7w" type="Description">
1885 <element xsi:nil="true"/>
1886 </children>
1887 <styles xmi:type="notation:TextStyle" xmi:id="_AnFKsbXGEeamG-Ij7YnW7w"/>
1888 <styles xmi:type="notation:LineTypeStyle" xmi:id="_AnFKsrXGEeamG-Ij7YnW7w"/>
1889 <element xsi:nil="true"/>
1890 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AnFKs7XGEeamG-Ij7YnW7w" x="1059" y="600"/>
1891 </children>
1892 <styles xmi:type="notation:DiagramStyle" xmi:id="_pEmqJbXDEeamG-Ij7YnW7w"/>
1893 <edges xmi:type="notation:Edge" xmi:id="_pEmqJrXDEeamG-Ij7YnW7w" type="4001" element="_pEmrKLXDEeamG-Ij7YnW7w" source="_pEmCvbXDEeamG-Ij7YnW7w" target="_pEmCxLXDEeamG-Ij7YnW7w">
1894 <children xmi:type="notation:Node" xmi:id="_pEmqJ7XDEeamG-Ij7YnW7w" type="6001">
1895 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqKLXDEeamG-Ij7YnW7w" x="3" y="-44"/>
1896 </children>
1897 <children xmi:type="notation:Node" xmi:id="_pEmqKbXDEeamG-Ij7YnW7w" type="6002">
1898 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqKrXDEeamG-Ij7YnW7w" x="59"/>
1899 </children>
1900 <children xmi:type="notation:Node" xmi:id="_pEmqK7XDEeamG-Ij7YnW7w" type="6003">
1901 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqLLXDEeamG-Ij7YnW7w" x="-51"/>
1902 </children>
1903 <styles xmi:type="notation:ConnectorStyle" xmi:id="_pEmqLbXDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1904 <styles xmi:type="notation:FontStyle" xmi:id="_pEmqLrXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1905 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pEmqL7XDEeamG-Ij7YnW7w" points="[-15, -49, -16, 411]$[-15, -411, -16, 49]"/>
1906 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmqMLXDEeamG-Ij7YnW7w" id="(0.49673202614379086,1.065217391304348)"/>
1907 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmqMbXDEeamG-Ij7YnW7w" id="(0.5,0.5)"/>
1908 </edges>
1909 <edges xmi:type="notation:Edge" xmi:id="_pEmqSrXDEeamG-Ij7YnW7w" type="4001" element="_pEmrSbXDEeamG-Ij7YnW7w" source="_pEmCxLXDEeamG-Ij7YnW7w" target="_pEmp2bXDEeamG-Ij7YnW7w">
1910 <children xmi:type="notation:Node" xmi:id="_pEmqS7XDEeamG-Ij7YnW7w" type="6001">
1911 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqTLXDEeamG-Ij7YnW7w" x="24" y="9"/>
1912 </children>
1913 <children xmi:type="notation:Node" xmi:id="_pEmqTbXDEeamG-Ij7YnW7w" type="6002">
1914 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqTrXDEeamG-Ij7YnW7w" x="98" y="10"/>
1915 </children>
1916 <children xmi:type="notation:Node" xmi:id="_pEmqT7XDEeamG-Ij7YnW7w" type="6003">
1917 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqULXDEeamG-Ij7YnW7w" x="1" y="-1"/>
1918 </children>
1919 <styles xmi:type="notation:ConnectorStyle" xmi:id="_pEmqUbXDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1920 <styles xmi:type="notation:FontStyle" xmi:id="_pEmqUrXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1921 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pEmqU7XDEeamG-Ij7YnW7w" points="[59, 39, -191, -104]$[191, 39, -59, -104]"/>
1922 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmqVLXDEeamG-Ij7YnW7w" id="(0.5,0.0)"/>
1923 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmqVbXDEeamG-Ij7YnW7w" id="(0.5,3.161290322580645)"/>
1924 </edges>
1925 <edges xmi:type="notation:Edge" xmi:id="_pEmqYrXDEeamG-Ij7YnW7w" visible="false" type="4001" element="_pEmrUbXDEeamG-Ij7YnW7w" source="_pEmCxLXDEeamG-Ij7YnW7w" target="_pEmpy7XDEeamG-Ij7YnW7w">
1926 <children xmi:type="notation:Node" xmi:id="_pEmqY7XDEeamG-Ij7YnW7w" type="6001">
1927 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqZLXDEeamG-Ij7YnW7w" x="-23" y="-13"/>
1928 </children>
1929 <children xmi:type="notation:Node" xmi:id="_pEmqZbXDEeamG-Ij7YnW7w" type="6002">
1930 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqZrXDEeamG-Ij7YnW7w" x="41"/>
1931 </children>
1932 <children xmi:type="notation:Node" xmi:id="_pEmqZ7XDEeamG-Ij7YnW7w" type="6003">
1933 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqaLXDEeamG-Ij7YnW7w" x="-37"/>
1934 </children>
1935 <styles xmi:type="notation:ConnectorStyle" xmi:id="_pEmqabXDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1936 <styles xmi:type="notation:FontStyle" xmi:id="_pEmqarXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1937 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pEmqa7XDEeamG-Ij7YnW7w" points="[-59, 45, 75, -243]$[-158, 45, -24, -243]$[-158, 190, -24, -98]"/>
1938 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmqbLXDEeamG-Ij7YnW7w" id="(0.5,0.0)"/>
1939 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmqbbXDEeamG-Ij7YnW7w" id="(0.5,2.5128205128205128)"/>
1940 </edges>
1941 <edges xmi:type="notation:Edge" xmi:id="_pEmqhrXDEeamG-Ij7YnW7w" type="4001" element="_pEmrZbXDEeamG-Ij7YnW7w" source="_pEmp9LXDEeamG-Ij7YnW7w" target="_pEmp2bXDEeamG-Ij7YnW7w">
1942 <children xmi:type="notation:Node" xmi:id="_pEmqh7XDEeamG-Ij7YnW7w" type="6001">
1943 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqiLXDEeamG-Ij7YnW7w" x="-46"/>
1944 </children>
1945 <children xmi:type="notation:Node" xmi:id="_pEmqibXDEeamG-Ij7YnW7w" type="6002">
1946 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqirXDEeamG-Ij7YnW7w" x="14" y="-2"/>
1947 </children>
1948 <children xmi:type="notation:Node" xmi:id="_pEmqi7XDEeamG-Ij7YnW7w" type="6003">
1949 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqjLXDEeamG-Ij7YnW7w" x="-32" y="9"/>
1950 </children>
1951 <styles xmi:type="notation:ConnectorStyle" xmi:id="_pEmqjbXDEeamG-Ij7YnW7w" routing="Tree"/>
1952 <styles xmi:type="notation:FontStyle" xmi:id="_pEmqjrXDEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
1953 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pEmqj7XDEeamG-Ij7YnW7w" points="[0, -159, 12, 59]$[0, -224, 12, -6]$[0, -224, 12, -6]$[0, -240, 12, -22]"/>
1954 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmqkLXDEeamG-Ij7YnW7w" id="(0.5,4.083333333333333)"/>
1955 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmqkbXDEeamG-Ij7YnW7w" id="(0.5,1.5806451612903225)"/>
1956 </edges>
1957 <edges xmi:type="notation:Edge" xmi:id="_pEmqtrXDEeamG-Ij7YnW7w" type="4001" element="_pEmrhLXDEeamG-Ij7YnW7w" source="_pEmqELXDEeamG-Ij7YnW7w" target="_pEmp9LXDEeamG-Ij7YnW7w">
1958 <children xmi:type="notation:Node" xmi:id="_pEmqt7XDEeamG-Ij7YnW7w" type="6001">
1959 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmquLXDEeamG-Ij7YnW7w" x="66" y="-64"/>
1960 </children>
1961 <children xmi:type="notation:Node" xmi:id="_pEmqubXDEeamG-Ij7YnW7w" type="6002">
1962 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqurXDEeamG-Ij7YnW7w" x="-25"/>
1963 </children>
1964 <children xmi:type="notation:Node" xmi:id="_pEmqu7XDEeamG-Ij7YnW7w" type="6003">
1965 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmqvLXDEeamG-Ij7YnW7w" x="-115"/>
1966 </children>
1967 <styles xmi:type="notation:ConnectorStyle" xmi:id="_pEmqvbXDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1968 <styles xmi:type="notation:FontStyle" xmi:id="_pEmqvrXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1969 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pEmqv7XDEeamG-Ij7YnW7w" points="[23, 0, -5, 186]$[23, -186, -5, 0]"/>
1970 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmqwLXDEeamG-Ij7YnW7w" id="(0.3125,0.0)"/>
1971 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmqwbXDEeamG-Ij7YnW7w" id="(0.5934959349593496,1.0)"/>
1972 </edges>
1973 <edges xmi:type="notation:Edge" xmi:id="_pEmq2rXDEeamG-Ij7YnW7w" type="4001" element="_pEmrkLXDEeamG-Ij7YnW7w" source="_pEmCvbXDEeamG-Ij7YnW7w" target="_pEmqELXDEeamG-Ij7YnW7w">
1974 <children xmi:type="notation:Node" xmi:id="_pEmq27XDEeamG-Ij7YnW7w" type="6001">
1975 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmq3LXDEeamG-Ij7YnW7w" x="1" y="-12"/>
1976 </children>
1977 <children xmi:type="notation:Node" xmi:id="_pEmq3bXDEeamG-Ij7YnW7w" type="6002">
1978 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmq3rXDEeamG-Ij7YnW7w" x="71" y="10"/>
1979 </children>
1980 <children xmi:type="notation:Node" xmi:id="_pEmq37XDEeamG-Ij7YnW7w" type="6003">
1981 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmq4LXDEeamG-Ij7YnW7w" x="-47" y="-51"/>
1982 </children>
1983 <styles xmi:type="notation:ConnectorStyle" xmi:id="_pEmq4bXDEeamG-Ij7YnW7w" routing="Rectilinear"/>
1984 <styles xmi:type="notation:FontStyle" xmi:id="_pEmq4rXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1985 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pEmq47XDEeamG-Ij7YnW7w" points="[0, -58, -116, 87]$[216, -58, 100, 87]$[216, -119, 100, 26]"/>
1986 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmq5LXDEeamG-Ij7YnW7w" id="(1.0,1.8478260869565217)"/>
1987 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmq5bXDEeamG-Ij7YnW7w" id="(0.0,0.5737704918032787)"/>
1988 </edges>
1989 <edges xmi:type="notation:Edge" xmi:id="_pEmq8rXDEeamG-Ij7YnW7w" visible="false" type="4001" element="_pEmrmLXDEeamG-Ij7YnW7w" source="_pEmCvbXDEeamG-Ij7YnW7w" target="_pEmpy7XDEeamG-Ij7YnW7w">
1990 <children xmi:type="notation:Node" xmi:id="_pEmq87XDEeamG-Ij7YnW7w" type="6001">
1991 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmq9LXDEeamG-Ij7YnW7w" x="-4" y="55"/>
1992 </children>
1993 <children xmi:type="notation:Node" xmi:id="_pEmq9bXDEeamG-Ij7YnW7w" type="6002">
1994 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmq9rXDEeamG-Ij7YnW7w" x="173" y="-16"/>
1995 </children>
1996 <children xmi:type="notation:Node" xmi:id="_pEmq97XDEeamG-Ij7YnW7w" type="6003">
1997 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pEmq-LXDEeamG-Ij7YnW7w" x="-28" y="10"/>
1998 </children>
1999 <styles xmi:type="notation:ConnectorStyle" xmi:id="_pEmq-bXDEeamG-Ij7YnW7w" routing="Rectilinear"/>
2000 <styles xmi:type="notation:FontStyle" xmi:id="_pEmq-rXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
2001 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pEmq-7XDEeamG-Ij7YnW7w" points="[0, 0, 129, 231]$[0, -138, 129, 93]$[-129, -138, 0, 93]$[-129, -231, 0, 0]"/>
2002 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmq_LXDEeamG-Ij7YnW7w" id="(0.37748344370860926,0.0)"/>
2003 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pEmq_bXDEeamG-Ij7YnW7w" id="(0.3813559322033898,1.0)"/>
2004 </edges>
2005 <edges xmi:type="notation:Edge" xmi:id="_7EfWwLXDEeamG-Ij7YnW7w" type="4001" element="_7EbsYLXDEeamG-Ij7YnW7w" source="_pEmp2bXDEeamG-Ij7YnW7w" target="_7EeIoLXDEeamG-Ij7YnW7w">
2006 <children xmi:type="notation:Node" xmi:id="_7EfWxLXDEeamG-Ij7YnW7w" type="6001">
2007 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7EfWxbXDEeamG-Ij7YnW7w" x="-18" y="-11"/>
2008 </children>
2009 <children xmi:type="notation:Node" xmi:id="_7EfWxrXDEeamG-Ij7YnW7w" type="6002">
2010 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7EfWx7XDEeamG-Ij7YnW7w" x="3" y="10"/>
2011 </children>
2012 <children xmi:type="notation:Node" xmi:id="_7Ef90LXDEeamG-Ij7YnW7w" type="6003">
2013 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7Ef90bXDEeamG-Ij7YnW7w" x="-97" y="44"/>
2014 </children>
2015 <styles xmi:type="notation:ConnectorStyle" xmi:id="_7EfWwbXDEeamG-Ij7YnW7w" routing="Rectilinear"/>
2016 <styles xmi:type="notation:FontStyle" xmi:id="_7EfWwrXDEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
2017 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7EfWw7XDEeamG-Ij7YnW7w" points="[59, 4, -204, -17]$[204, 4, -59, -17]"/>
2018 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Ef90rXDEeamG-Ij7YnW7w" id="(0.5,0.48484848484848486)"/>
2019 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Ef907XDEeamG-Ij7YnW7w" id="(0.5,0.5)"/>
2020 </edges>
2021 <edges xmi:type="notation:Edge" xmi:id="_QSg-QLXFEeamG-Ij7YnW7w" type="4001" element="_QSMOILXFEeamG-Ij7YnW7w" source="_pEmqELXDEeamG-Ij7YnW7w" target="_n_b8ALXEEeamG-Ij7YnW7w">
2022 <children xmi:type="notation:Node" xmi:id="_QSg-RLXFEeamG-Ij7YnW7w" type="6001">
2023 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QSg-RbXFEeamG-Ij7YnW7w" x="-14" y="-14"/>
2024 </children>
2025 <children xmi:type="notation:Node" xmi:id="_QSg-RrXFEeamG-Ij7YnW7w" type="6002">
2026 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QSg-R7XFEeamG-Ij7YnW7w" y="10"/>
2027 </children>
2028 <children xmi:type="notation:Node" xmi:id="_QSg-SLXFEeamG-Ij7YnW7w" type="6003">
2029 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QSg-SbXFEeamG-Ij7YnW7w" y="10"/>
2030 </children>
2031 <styles xmi:type="notation:ConnectorStyle" xmi:id="_QSg-QbXFEeamG-Ij7YnW7w" routing="Rectilinear"/>
2032 <styles xmi:type="notation:FontStyle" xmi:id="_QSg-QrXFEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
2033 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QSg-Q7XFEeamG-Ij7YnW7w" points="[73, 20, -164, -21]$[205, 20, -32, -21]"/>
2034 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QShlULXFEeamG-Ij7YnW7w" id="(0.5852272727272727,0.0)"/>
2035 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QShlUbXFEeamG-Ij7YnW7w" id="(0.2711864406779661,1.0)"/>
2036 </edges>
2037 <edges xmi:type="notation:Edge" xmi:id="_Z8ZpoLXFEeamG-Ij7YnW7w" type="4001" element="_Z8EScLXFEeamG-Ij7YnW7w" source="__5rHkLXEEeamG-Ij7YnW7w" target="_n_b8ALXEEeamG-Ij7YnW7w">
2038 <children xmi:type="notation:Node" xmi:id="_Z8ZppLXFEeamG-Ij7YnW7w" type="6001">
2039 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z8ZppbXFEeamG-Ij7YnW7w" y="-10"/>
2040 </children>
2041 <children xmi:type="notation:Node" xmi:id="_Z8aQsLXFEeamG-Ij7YnW7w" type="6002">
2042 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z8aQsbXFEeamG-Ij7YnW7w" y="10"/>
2043 </children>
2044 <children xmi:type="notation:Node" xmi:id="_Z8aQsrXFEeamG-Ij7YnW7w" type="6003">
2045 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z8aQs7XFEeamG-Ij7YnW7w" y="10"/>
2046 </children>
2047 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Z8ZpobXFEeamG-Ij7YnW7w" routing="Tree"/>
2048 <styles xmi:type="notation:FontStyle" xmi:id="_Z8ZporXFEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
2049 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Z8Zpo7XFEeamG-Ij7YnW7w" points="[0, 0, -90, 31]$[90, -31, 0, 0]"/>
2050 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Z8aQtLXFEeamG-Ij7YnW7w" id="(0.49707602339181284,0.0)"/>
2051 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Z8aQtbXFEeamG-Ij7YnW7w" id="(0.5,0.5)"/>
2052 </edges>
2053 <edges xmi:type="notation:Edge" xmi:id="_aX1BYLXFEeamG-Ij7YnW7w" type="4001" element="_aXV5MLXFEeamG-Ij7YnW7w" source="_ERrCkLXFEeamG-Ij7YnW7w" target="_n_b8ALXEEeamG-Ij7YnW7w">
2054 <children xmi:type="notation:Node" xmi:id="_aX1BZLXFEeamG-Ij7YnW7w" type="6001">
2055 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aX1BZbXFEeamG-Ij7YnW7w" y="-10"/>
2056 </children>
2057 <children xmi:type="notation:Node" xmi:id="_aX1BZrXFEeamG-Ij7YnW7w" type="6002">
2058 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aX1BZ7XFEeamG-Ij7YnW7w" y="10"/>
2059 </children>
2060 <children xmi:type="notation:Node" xmi:id="_aX1BaLXFEeamG-Ij7YnW7w" type="6003">
2061 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aX1BabXFEeamG-Ij7YnW7w" y="10"/>
2062 </children>
2063 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aX1BYbXFEeamG-Ij7YnW7w" routing="Tree"/>
2064 <styles xmi:type="notation:FontStyle" xmi:id="_aX1BYrXFEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
2065 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aX1BY7XFEeamG-Ij7YnW7w" points="[0, 0, 20, 33]$[-20, -33, 0, 0]"/>
2066 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aX1ocLXFEeamG-Ij7YnW7w" id="(0.5900621118012422,0.0)"/>
2067 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aX1ocbXFEeamG-Ij7YnW7w" id="(0.2711864406779661,1.0)"/>
2068 </edges>
2069 <edges xmi:type="notation:Edge" xmi:id="_aqyZoLXFEeamG-Ij7YnW7w" type="4001" element="_aqZYELXFEeamG-Ij7YnW7w" source="_HsPE8LXFEeamG-Ij7YnW7w" target="_n_b8ALXEEeamG-Ij7YnW7w">
2070 <children xmi:type="notation:Node" xmi:id="_aqyZpLXFEeamG-Ij7YnW7w" type="6001">
2071 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aqyZpbXFEeamG-Ij7YnW7w" y="-10"/>
2072 </children>
2073 <children xmi:type="notation:Node" xmi:id="_aqzAsLXFEeamG-Ij7YnW7w" type="6002">
2074 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aqzAsbXFEeamG-Ij7YnW7w" y="10"/>
2075 </children>
2076 <children xmi:type="notation:Node" xmi:id="_aqzAsrXFEeamG-Ij7YnW7w" type="6003">
2077 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aqzAs7XFEeamG-Ij7YnW7w" y="10"/>
2078 </children>
2079 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aqyZobXFEeamG-Ij7YnW7w" routing="Tree"/>
2080 <styles xmi:type="notation:FontStyle" xmi:id="_aqyZorXFEeamG-Ij7YnW7w" fontName="Segoe UI" fontHeight="8"/>
2081 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aqyZo7XFEeamG-Ij7YnW7w" points="[0, 0, 82, 60]$[-82, -60, 0, 0]"/>
2082 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aqzAtLXFEeamG-Ij7YnW7w" id="(0.4661016949152542,0.0)"/>
2083 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aqzAtbXFEeamG-Ij7YnW7w" id="(0.2711864406779661,1.0)"/>
2084 </edges>
2085 <edges xmi:type="notation:Edge" xmi:id="_jDM2ELXFEeamG-Ij7YnW7w" type="4001" element="_jC230LXFEeamG-Ij7YnW7w" source="_HsPE8LXFEeamG-Ij7YnW7w" target="_KRyK4LXFEeamG-Ij7YnW7w">
2086 <children xmi:type="notation:Node" xmi:id="_jDM2FLXFEeamG-Ij7YnW7w" type="6001">
2087 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jDM2FbXFEeamG-Ij7YnW7w" x="-1" y="-47"/>
2088 </children>
2089 <children xmi:type="notation:Node" xmi:id="_jDM2FrXFEeamG-Ij7YnW7w" type="6002">
2090 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jDM2F7XFEeamG-Ij7YnW7w" y="10"/>
2091 </children>
2092 <children xmi:type="notation:Node" xmi:id="_jDNdILXFEeamG-Ij7YnW7w" type="6003">
2093 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jDNdIbXFEeamG-Ij7YnW7w" y="10"/>
2094 </children>
2095 <styles xmi:type="notation:ConnectorStyle" xmi:id="_jDM2EbXFEeamG-Ij7YnW7w" routing="Rectilinear"/>
2096 <styles xmi:type="notation:FontStyle" xmi:id="_jDM2ErXFEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
2097 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jDM2E7XFEeamG-Ij7YnW7w" points="[0, 20, 1, -34]$[0, 45, 1, -9]"/>
2098 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_th_wMLXFEeamG-Ij7YnW7w" id="(0.5,0.5)"/>
2099 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jDNdIrXFEeamG-Ij7YnW7w" id="(0.49677419354838703,0.20833333333333334)"/>
2100 </edges>
2101 <edges xmi:type="notation:Edge" xmi:id="_xIpt0LXFEeamG-Ij7YnW7w" type="4001" element="_xIQsQLXFEeamG-Ij7YnW7w" source="__5rHkLXEEeamG-Ij7YnW7w" target="_pEmpy7XDEeamG-Ij7YnW7w">
2102 <children xmi:type="notation:Node" xmi:id="_xIpt1LXFEeamG-Ij7YnW7w" type="6001">
2103 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xIpt1bXFEeamG-Ij7YnW7w" x="-57" y="-13"/>
2104 </children>
2105 <children xmi:type="notation:Node" xmi:id="_xIpt1rXFEeamG-Ij7YnW7w" type="6002">
2106 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xIpt17XFEeamG-Ij7YnW7w" x="13"/>
2107 </children>
2108 <children xmi:type="notation:Node" xmi:id="_xIpt2LXFEeamG-Ij7YnW7w" type="6003">
2109 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xIqU4LXFEeamG-Ij7YnW7w" x="1" y="10"/>
2110 </children>
2111 <styles xmi:type="notation:ConnectorStyle" xmi:id="_xIpt0bXFEeamG-Ij7YnW7w" routing="Rectilinear"/>
2112 <styles xmi:type="notation:FontStyle" xmi:id="_xIpt0rXFEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
2113 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xIpt07XFEeamG-Ij7YnW7w" points="[0, 0, -94, -24]$[0, 43, -94, 19]$[45, 43, -49, 19]"/>
2114 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xIqU4bXFEeamG-Ij7YnW7w" id="(0.29239766081871343,1.0)"/>
2115 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xIqU4rXFEeamG-Ij7YnW7w" id="(0.4152542372881356,0.0)"/>
2116 </edges>
2117 <edges xmi:type="notation:Edge" xmi:id="_2W2RALXFEeamG-Ij7YnW7w" type="4001" element="_2WivALXFEeamG-Ij7YnW7w" source="_ERrCkLXFEeamG-Ij7YnW7w" target="_pEmpy7XDEeamG-Ij7YnW7w">
2118 <children xmi:type="notation:Node" xmi:id="_2W24ELXFEeamG-Ij7YnW7w" type="6001">
2119 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2W24EbXFEeamG-Ij7YnW7w" x="34" y="22"/>
2120 </children>
2121 <children xmi:type="notation:Node" xmi:id="_2W24ErXFEeamG-Ij7YnW7w" type="6002">
2122 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2W24E7XFEeamG-Ij7YnW7w" x="-10" y="4"/>
2123 </children>
2124 <children xmi:type="notation:Node" xmi:id="_2W24FLXFEeamG-Ij7YnW7w" type="6003">
2125 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2W24FbXFEeamG-Ij7YnW7w" x="-20" y="-10"/>
2126 </children>
2127 <styles xmi:type="notation:ConnectorStyle" xmi:id="_2W2RAbXFEeamG-Ij7YnW7w" routing="Rectilinear"/>
2128 <styles xmi:type="notation:FontStyle" xmi:id="_2W2RArXFEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
2129 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2W2RA7XFEeamG-Ij7YnW7w" points="[-11, 0, 91, -25]$[-11, 38, 91, 13]$[-53, 38, 49, 13]"/>
2130 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2W24FrXFEeamG-Ij7YnW7w" id="(0.5031055900621118,1.0)"/>
2131 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2W24F7XFEeamG-Ij7YnW7w" id="(0.5847457627118644,0.0)"/>
2132 </edges>
2133 <edges xmi:type="notation:Edge" xmi:id="_5HYe8LXFEeamG-Ij7YnW7w" type="4001" element="_5HFkALXFEeamG-Ij7YnW7w" source="_ERrCkLXFEeamG-Ij7YnW7w" target="_pEmpy7XDEeamG-Ij7YnW7w">
2134 <children xmi:type="notation:Node" xmi:id="_5HYe9LXFEeamG-Ij7YnW7w" type="6001">
2135 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5HYe9bXFEeamG-Ij7YnW7w" x="-1" y="-13"/>
2136 </children>
2137 <children xmi:type="notation:Node" xmi:id="_5HYe9rXFEeamG-Ij7YnW7w" type="6002">
2138 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5HYe97XFEeamG-Ij7YnW7w" x="-14" y="10"/>
2139 </children>
2140 <children xmi:type="notation:Node" xmi:id="_5HYe-LXFEeamG-Ij7YnW7w" type="6003">
2141 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5HYe-bXFEeamG-Ij7YnW7w" x="-23" y="-10"/>
2142 </children>
2143 <styles xmi:type="notation:ConnectorStyle" xmi:id="_5HYe8bXFEeamG-Ij7YnW7w" routing="Rectilinear"/>
2144 <styles xmi:type="notation:FontStyle" xmi:id="_5HYe8rXFEeamG-Ij7YnW7w" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
2145 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5HYe87XFEeamG-Ij7YnW7w" points="[-45, 0, 95, -25]$[-45, 48, 95, 23]$[-102, 48, 38, 23]"/>
2146 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5HZGALXFEeamG-Ij7YnW7w" id="(0.8074534161490683,1.0)"/>
2147 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5HZGAbXFEeamG-Ij7YnW7w" id="(0.6779661016949152,0.0)"/>
2148 </edges>
2149 <edges xmi:type="notation:Connector" xmi:id="_CjcJsLXGEeamG-Ij7YnW7w" type="NoteAttachment" source="_AnFKsLXGEeamG-Ij7YnW7w" target="_KRyK4LXFEeamG-Ij7YnW7w" lineWidth="1">
2150 <styles xmi:type="notation:ArrowStyle" xmi:id="_CjcJsbXGEeamG-Ij7YnW7w"/>
2151 <styles xmi:type="notation:LineTypeStyle" xmi:id="_CjcJsrXGEeamG-Ij7YnW7w"/>
2152 <element xsi:nil="true"/>
2153 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CjcJs7XGEeamG-Ij7YnW7w" points="[0, 0, -6, 43]$[-3, -20, -9, 23]"/>
2154 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Cjel8LXGEeamG-Ij7YnW7w" id="(0.43,0.0)"/>
2155 </edges>
2156 <edges xmi:type="notation:Edge" xmi:id="_lcc_oL3MEeaj7tVusjQpHg" type="4001" element="_lb3w0L3MEeaj7tVusjQpHg" source="_pEmqELXDEeamG-Ij7YnW7w" target="_7EeIoLXDEeamG-Ij7YnW7w">
2157 <children xmi:type="notation:Node" xmi:id="_lcdmsL3MEeaj7tVusjQpHg" type="6001">
2158 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lcdmsb3MEeaj7tVusjQpHg" y="-10"/>
2159 </children>
2160 <children xmi:type="notation:Node" xmi:id="_lcdmsr3MEeaj7tVusjQpHg" type="6002">
2161 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lcdms73MEeaj7tVusjQpHg" y="10"/>
2162 </children>
2163 <children xmi:type="notation:Node" xmi:id="_lcdmtL3MEeaj7tVusjQpHg" type="6003">
2164 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lcdmtb3MEeaj7tVusjQpHg" y="10"/>
2165 </children>
2166 <styles xmi:type="notation:ConnectorStyle" xmi:id="_lcc_ob3MEeaj7tVusjQpHg" routing="Rectilinear"/>
2167 <styles xmi:type="notation:FontStyle" xmi:id="_lcc_or3MEeaj7tVusjQpHg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
2168 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lcc_o73MEeaj7tVusjQpHg" points="[0, 0, -174, 257]$[174, -257, 0, 0]"/>
2169 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lceNwL3MEeaj7tVusjQpHg" id="(0.8409090909090909,0.0)"/>
2170 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lceNwb3MEeaj7tVusjQpHg" id="(0.5,1.0)"/>
2171 </edges>
2172 <edges xmi:type="notation:Edge" xmi:id="_oQo-gL3MEeaj7tVusjQpHg" type="4001" element="_oQIBIL3MEeaj7tVusjQpHg" source="_pEmqELXDEeamG-Ij7YnW7w" target="_7EeIoLXDEeamG-Ij7YnW7w">
2173 <children xmi:type="notation:Node" xmi:id="_oQplkL3MEeaj7tVusjQpHg" type="6001">
2174 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oQplkb3MEeaj7tVusjQpHg" x="-32" y="-10"/>
2175 </children>
2176 <children xmi:type="notation:Node" xmi:id="_oQplkr3MEeaj7tVusjQpHg" type="6002">
2177 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oQplk73MEeaj7tVusjQpHg" x="4" y="10"/>
2178 </children>
2179 <children xmi:type="notation:Node" xmi:id="_oQpllL3MEeaj7tVusjQpHg" type="6003">
2180 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oQpllb3MEeaj7tVusjQpHg" x="-4" y="10"/>
2181 </children>
2182 <styles xmi:type="notation:ConnectorStyle" xmi:id="_oQo-gb3MEeaj7tVusjQpHg" routing="Rectilinear"/>
2183 <styles xmi:type="notation:FontStyle" xmi:id="_oQo-gr3MEeaj7tVusjQpHg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
2184 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_oQo-g73MEeaj7tVusjQpHg" points="[26, 0, -195, 257]$[26, -110, -195, 147]$[221, -110, 0, 147]$[221, -257, 0, 0]"/>
2185 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oQpllr3MEeaj7tVusjQpHg" id="(0.75,0.0)"/>
2186 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oQpll73MEeaj7tVusjQpHg" id="(0.7627118644067796,1.0)"/>
2187 </edges>
2188 <edges xmi:type="notation:Edge" xmi:id="_RVMxwMAiEeaaj7sYFz2QKg" type="4001" element="_RU0XQMAiEeaaj7sYFz2QKg" source="_pEmCvbXDEeamG-Ij7YnW7w" target="_pEmpy7XDEeamG-Ij7YnW7w">
2189 <children xmi:type="notation:Node" xmi:id="_RVRqQMAiEeaaj7sYFz2QKg" type="6001">
2190 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RVRqQcAiEeaaj7sYFz2QKg" x="10" y="-10"/>
2191 </children>
2192 <children xmi:type="notation:Node" xmi:id="_RVSRUMAiEeaaj7sYFz2QKg" type="6002">
2193 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RVSRUcAiEeaaj7sYFz2QKg" x="97" y="10"/>
2194 </children>
2195 <children xmi:type="notation:Node" xmi:id="_RVS4YMAiEeaaj7sYFz2QKg" type="6003">
2196 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RVS4YcAiEeaaj7sYFz2QKg" x="11" y="10"/>
2197 </children>
2198 <styles xmi:type="notation:ConnectorStyle" xmi:id="_RVMxwcAiEeaaj7sYFz2QKg" routing="Rectilinear"/>
2199 <styles xmi:type="notation:FontStyle" xmi:id="_RVMxwsAiEeaaj7sYFz2QKg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
2200 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RVMxw8AiEeaaj7sYFz2QKg" points="[1, 23, -528, -20]$[1, 57, -528, 14]$[470, 57, -59, 14]"/>
2201 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RVY_AMAiEeaaj7sYFz2QKg" id="(0.49673202614379086,0.5)"/>
2202 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RVY_AcAiEeaaj7sYFz2QKg" id="(0.5,0.4878048780487805)"/>
2203 </edges>
2204 <edges xmi:type="notation:Edge" xmi:id="_1x68MPMUEeagPYxz1ZWLIQ" type="4001" element="_1xkW4PMUEeagPYxz1ZWLIQ" source="_pEmCvbXDEeamG-Ij7YnW7w" target="_pEmCxLXDEeamG-Ij7YnW7w">
2205 <children xmi:type="notation:Node" xmi:id="_1yHwgPMUEeagPYxz1ZWLIQ" type="6001">
2206 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1yHwgfMUEeagPYxz1ZWLIQ" y="-10"/>
2207 </children>
2208 <children xmi:type="notation:Node" xmi:id="_1yJlsPMUEeagPYxz1ZWLIQ" type="6002">
2209 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1yJlsfMUEeagPYxz1ZWLIQ" y="10"/>
2210 </children>
2211 <children xmi:type="notation:Node" xmi:id="_1yKMwPMUEeagPYxz1ZWLIQ" type="6003">
2212 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1yKMwfMUEeagPYxz1ZWLIQ" y="10"/>
2213 </children>
2214 <styles xmi:type="notation:ConnectorStyle" xmi:id="_1x68MfMUEeagPYxz1ZWLIQ" routing="Rectilinear"/>
2215 <styles xmi:type="notation:FontStyle" xmi:id="_1x68MvMUEeagPYxz1ZWLIQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
2216 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1x68M_MUEeagPYxz1ZWLIQ" points="[195, 490, 195, 490]$[212, 30, 212, 30]"/>
2217 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1yQ6cPMUEeagPYxz1ZWLIQ" id="(0.49673202614379086,0.5)"/>
2218 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1yQ6cfMUEeagPYxz1ZWLIQ" id="(0.5,0.5)"/>
2219 </edges>
2220 <edges xmi:type="notation:Edge" xmi:id="_3fl-8PMUEeagPYxz1ZWLIQ" type="4001" element="_3d9AMPMUEeagPYxz1ZWLIQ" source="_pEmCvbXDEeamG-Ij7YnW7w" target="_ERrCkLXFEeamG-Ij7YnW7w">
2221 <children xmi:type="notation:Node" xmi:id="_3fnNEPMUEeagPYxz1ZWLIQ" type="6001">
2222 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3fnNEfMUEeagPYxz1ZWLIQ" x="-14" y="-10"/>
2223 </children>
2224 <children xmi:type="notation:Node" xmi:id="_3fnNEvMUEeagPYxz1ZWLIQ" type="6002">
2225 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3fnNE_MUEeagPYxz1ZWLIQ" x="118" y="10"/>
2226 </children>
2227 <children xmi:type="notation:Node" xmi:id="_3fnNFPMUEeagPYxz1ZWLIQ" type="6003">
2228 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3fnNFfMUEeagPYxz1ZWLIQ" x="-155" y="10"/>
2229 </children>
2230 <styles xmi:type="notation:ConnectorStyle" xmi:id="_3fl-8fMUEeagPYxz1ZWLIQ" routing="Rectilinear"/>
2231 <styles xmi:type="notation:FontStyle" xmi:id="_3fl-8vMUEeagPYxz1ZWLIQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
2232 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3fl-8_MUEeagPYxz1ZWLIQ" points="[-96, 23, -580, 45]$[-96, 97, -580, 119]$[594, 97, 110, 119]$[594, -1, 110, 21]"/>
2233 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3fn0IPMUEeagPYxz1ZWLIQ" id="(1.0,0.5)"/>
2234 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3fn0IfMUEeagPYxz1ZWLIQ" id="(0.0,0.5227272727272727)"/>
2235 </edges>
2236 </data>
2237 </ownedAnnotationEntries>
2238 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_pEmrI7XDEeamG-Ij7YnW7w" name="PartialInterpretation" tooltipText="" outgoingEdges="_pEmrKLXDEeamG-Ij7YnW7w _pEmrkLXDEeamG-Ij7YnW7w _pEmrmLXDEeamG-Ij7YnW7w _RU0XQMAiEeaaj7sYFz2QKg _1xkW4PMUEeagPYxz1ZWLIQ _3d9AMPMUEeagPYxz1ZWLIQ" width="12" height="10">
2239 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialInterpretation"/>
2240 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialInterpretation"/>
2241 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2242 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2243 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2244 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_QaSh8PMVEeagPYxz1ZWLIQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
2245 <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"/>
2246 </ownedStyle>
2247 <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']"/>
2248 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_RUgOMMAiEeaaj7sYFz2QKg" name="minNewElements : EInt = 0" tooltipText="">
2249 <target xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//PartialInterpretation/minNewElements"/>
2250 <semanticElements xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//PartialInterpretation/minNewElements"/>
2251 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_RUhcUMAiEeaaj7sYFz2QKg" labelAlignment="LEFT" description="_RUg1QMAiEeaaj7sYFz2QKg">
2252 <labelFormat>bold</labelFormat>
2253 </ownedStyle>
2254 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2255 </ownedElements>
2256 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_RUiDYMAiEeaaj7sYFz2QKg" name="maxNewElements : EInt = 0" tooltipText="">
2257 <target xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//PartialInterpretation/maxNewElements"/>
2258 <semanticElements xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//PartialInterpretation/maxNewElements"/>
2259 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_RUiqcMAiEeaaj7sYFz2QKg" labelAlignment="LEFT" description="_RUg1QMAiEeaaj7sYFz2QKg">
2260 <labelFormat>bold</labelFormat>
2261 </ownedStyle>
2262 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2263 </ownedElements>
2264 </ownedDiagramElements>
2265 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_pEmrJbXDEeamG-Ij7YnW7w" name="LogicProblem" tooltipText="" outgoingEdges="_pEmrSbXDEeamG-Ij7YnW7w _pEmrUbXDEeamG-Ij7YnW7w" incomingEdges="_pEmrKLXDEeamG-Ij7YnW7w _1xkW4PMUEeagPYxz1ZWLIQ" width="12" height="10">
2266 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem"/>
2267 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem"/>
2268 <decorations xmi:type="viewpoint:Decoration" xmi:id="_pEmrJrXDEeamG-Ij7YnW7w">
2269 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
2270 </decorations>
2271 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2272 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2273 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2274 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_pEmrJ7XDEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
2275 <customFeatures>backgroundColor</customFeatures>
2276 <customFeatures>foregroundColor</customFeatures>
2277 <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"/>
2278 </ownedStyle>
2279 <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']"/>
2280 </ownedDiagramElements>
2281 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_pEmrKLXDEeamG-Ij7YnW7w" name="[1..1] problem" sourceNode="_pEmrI7XDEeamG-Ij7YnW7w" targetNode="_pEmrJbXDEeamG-Ij7YnW7w">
2282 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/problem"/>
2283 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/problem"/>
2284 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_pEmrKbXDEeamG-Ij7YnW7w" description="_pEmCs7XDEeamG-Ij7YnW7w" routingStyle="manhattan" strokeColor="0,0,0">
2285 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_pEmrKrXDEeamG-Ij7YnW7w" showIcon="false">
2286 <customFeatures>labelSize</customFeatures>
2287 <labelFormat>bold</labelFormat>
2288 </centerLabelStyle>
2289 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_pEmrK7XDEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
2290 <customFeatures>labelSize</customFeatures>
2291 </endLabelStyle>
2292 </ownedStyle>
2293 <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']"/>
2294 </ownedDiagramElements>
2295 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_pEmrL7XDEeamG-Ij7YnW7w" name="DefinedElement" tooltipText="" incomingEdges="_pEmrUbXDEeamG-Ij7YnW7w _pEmrmLXDEeamG-Ij7YnW7w _xIQsQLXFEeamG-Ij7YnW7w _2WivALXFEeamG-Ij7YnW7w _5HFkALXFEeamG-Ij7YnW7w _RU0XQMAiEeaaj7sYFz2QKg" width="12" height="10">
2296 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//DefinedElement"/>
2297 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//DefinedElement"/>
2298 <decorations xmi:type="viewpoint:Decoration" xmi:id="_pEmrMLXDEeamG-Ij7YnW7w">
2299 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
2300 </decorations>
2301 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2302 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2303 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2304 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_pEmrMbXDEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
2305 <customFeatures>backgroundColor</customFeatures>
2306 <customFeatures>foregroundColor</customFeatures>
2307 <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"/>
2308 </ownedStyle>
2309 <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']"/>
2310 </ownedDiagramElements>
2311 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_pEmrNbXDEeamG-Ij7YnW7w" name="Relation" tooltipText="" outgoingEdges="_7EbsYLXDEeamG-Ij7YnW7w" incomingEdges="_pEmrSbXDEeamG-Ij7YnW7w _pEmrZbXDEeamG-Ij7YnW7w" width="12" height="10">
2312 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation"/>
2313 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation"/>
2314 <decorations xmi:type="viewpoint:Decoration" xmi:id="_pEmrNrXDEeamG-Ij7YnW7w">
2315 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
2316 </decorations>
2317 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2318 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2319 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2320 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_pEmrN7XDEeamG-Ij7YnW7w" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
2321 <customFeatures>backgroundColor</customFeatures>
2322 <customFeatures>foregroundColor</customFeatures>
2323 <labelFormat>italic</labelFormat>
2324 <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"/>
2325 </ownedStyle>
2326 <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']"/>
2327 </ownedDiagramElements>
2328 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_pEmrSbXDEeamG-Ij7YnW7w" name="[0..*] relations" sourceNode="_pEmrJbXDEeamG-Ij7YnW7w" targetNode="_pEmrNbXDEeamG-Ij7YnW7w">
2329 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/relations"/>
2330 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/relations"/>
2331 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_pEmrSrXDEeamG-Ij7YnW7w" description="_pEmCt7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2332 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_pEmrS7XDEeamG-Ij7YnW7w" showIcon="false">
2333 <customFeatures>labelSize</customFeatures>
2334 </centerLabelStyle>
2335 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_pEmrTLXDEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
2336 <customFeatures>labelSize</customFeatures>
2337 </endLabelStyle>
2338 </ownedStyle>
2339 <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']"/>
2340 </ownedDiagramElements>
2341 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_pEmrUbXDEeamG-Ij7YnW7w" name="[0..*] elements" visible="false" sourceNode="_pEmrJbXDEeamG-Ij7YnW7w" targetNode="_pEmrL7XDEeamG-Ij7YnW7w">
2342 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/elements"/>
2343 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem/elements"/>
2344 <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_x9broLXDEeamG-Ij7YnW7w"/>
2345 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_pEmrUrXDEeamG-Ij7YnW7w" description="_pEmCt7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2346 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_pEmrU7XDEeamG-Ij7YnW7w" showIcon="false">
2347 <customFeatures>labelSize</customFeatures>
2348 </centerLabelStyle>
2349 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_pEmrVLXDEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
2350 <customFeatures>labelSize</customFeatures>
2351 </endLabelStyle>
2352 </ownedStyle>
2353 <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']"/>
2354 </ownedDiagramElements>
2355 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_pEmrYrXDEeamG-Ij7YnW7w" name="RelationDeclaration" tooltipText="" outgoingEdges="_pEmrZbXDEeamG-Ij7YnW7w" incomingEdges="_pEmrhLXDEeamG-Ij7YnW7w" width="12" height="10">
2356 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//RelationDeclaration"/>
2357 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//RelationDeclaration"/>
2358 <decorations xmi:type="viewpoint:Decoration" xmi:id="_pEmrY7XDEeamG-Ij7YnW7w">
2359 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
2360 </decorations>
2361 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2362 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2363 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2364 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_pEmrZLXDEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" backgroundColor="237,201,122" foregroundColor="237,201,122">
2365 <customFeatures>backgroundColor</customFeatures>
2366 <customFeatures>foregroundColor</customFeatures>
2367 <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"/>
2368 </ownedStyle>
2369 <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']"/>
2370 </ownedDiagramElements>
2371 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_pEmrZbXDEeamG-Ij7YnW7w" sourceNode="_pEmrYrXDEeamG-Ij7YnW7w" targetNode="_pEmrNbXDEeamG-Ij7YnW7w">
2372 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//RelationDeclaration"/>
2373 <semanticElements xmi:type="ecore:EGenericType" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//RelationDeclaration/@eGenericSuperTypes.0"/>
2374 <decorations xmi:type="viewpoint:Decoration" xmi:id="_pEmrZrXDEeamG-Ij7YnW7w">
2375 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
2376 </decorations>
2377 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_pEmrZ7XDEeamG-Ij7YnW7w" targetArrow="InputClosedArrow" routingStyle="tree">
2378 <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"/>
2379 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_pEmraLXDEeamG-Ij7YnW7w" showIcon="false">
2380 <labelFormat>italic</labelFormat>
2381 </beginLabelStyle>
2382 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_pEmrabXDEeamG-Ij7YnW7w" showIcon="false"/>
2383 </ownedStyle>
2384 <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']"/>
2385 </ownedDiagramElements>
2386 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_pEmrfLXDEeamG-Ij7YnW7w" name="PartialRelationInterpretation" tooltipText="" outgoingEdges="_pEmrhLXDEeamG-Ij7YnW7w _QSMOILXFEeamG-Ij7YnW7w _lb3w0L3MEeaj7tVusjQpHg _oQIBIL3MEeaj7tVusjQpHg" incomingEdges="_pEmrkLXDEeamG-Ij7YnW7w" width="12" height="10">
2387 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialRelationInterpretation"/>
2388 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//PartialRelationInterpretation"/>
2389 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2390 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2391 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2392 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_ybOiAMAjEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
2393 <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"/>
2394 </ownedStyle>
2395 <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']"/>
2396 </ownedDiagramElements>
2397 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_pEmrhLXDEeamG-Ij7YnW7w" name="[1..1] interpretationOf" sourceNode="_pEmrfLXDEeamG-Ij7YnW7w" targetNode="_pEmrYrXDEeamG-Ij7YnW7w">
2398 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialRelationInterpretation/interpretationOf"/>
2399 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialRelationInterpretation/interpretationOf"/>
2400 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_pEmrhbXDEeamG-Ij7YnW7w" description="_pEmCs7XDEeamG-Ij7YnW7w" routingStyle="manhattan" strokeColor="0,0,0">
2401 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_pEmrhrXDEeamG-Ij7YnW7w" showIcon="false">
2402 <labelFormat>bold</labelFormat>
2403 </centerLabelStyle>
2404 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_pEmrh7XDEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelColor="39,76,114"/>
2405 </ownedStyle>
2406 <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']"/>
2407 </ownedDiagramElements>
2408 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_pEmrkLXDEeamG-Ij7YnW7w" name="[0..*] partialrelationinterpretation" sourceNode="_pEmrI7XDEeamG-Ij7YnW7w" targetNode="_pEmrfLXDEeamG-Ij7YnW7w">
2409 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/partialrelationinterpretation"/>
2410 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/partialrelationinterpretation"/>
2411 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_pEmrkbXDEeamG-Ij7YnW7w" description="_pEmCt7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2412 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_pEmrkrXDEeamG-Ij7YnW7w" showIcon="false">
2413 <customFeatures>labelSize</customFeatures>
2414 </centerLabelStyle>
2415 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_pEmrk7XDEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
2416 <customFeatures>labelSize</customFeatures>
2417 </endLabelStyle>
2418 </ownedStyle>
2419 <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']"/>
2420 </ownedDiagramElements>
2421 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_pEmrmLXDEeamG-Ij7YnW7w" name="[0..*] newElements" visible="false" sourceNode="_pEmrI7XDEeamG-Ij7YnW7w" targetNode="_pEmrL7XDEeamG-Ij7YnW7w">
2422 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/newElements"/>
2423 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/newElements"/>
2424 <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_xG99sLXDEeamG-Ij7YnW7w"/>
2425 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_pEmrmbXDEeamG-Ij7YnW7w" description="_pEmCt7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2426 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_pEmrmrXDEeamG-Ij7YnW7w" showIcon="false">
2427 <customFeatures>labelSize</customFeatures>
2428 </centerLabelStyle>
2429 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_pEmrm7XDEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
2430 <customFeatures>labelSize</customFeatures>
2431 </endLabelStyle>
2432 </ownedStyle>
2433 <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']"/>
2434 </ownedDiagramElements>
2435 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_7EWz4LXDEeamG-Ij7YnW7w" name="TypeReference" tooltipText="" incomingEdges="_7EbsYLXDEeamG-Ij7YnW7w _lb3w0L3MEeaj7tVusjQpHg _oQIBIL3MEeaj7tVusjQpHg" width="12" height="10">
2436 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeReference"/>
2437 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeReference"/>
2438 <decorations xmi:type="viewpoint:Decoration" xmi:id="_7EZ3MLXDEeamG-Ij7YnW7w">
2439 <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
2440 </decorations>
2441 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2442 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2443 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2444 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_7EWz4bXDEeamG-Ij7YnW7w" 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">
2445 <labelFormat>italic</labelFormat>
2446 <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"/>
2447 </ownedStyle>
2448 <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']"/>
2449 </ownedDiagramElements>
2450 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_7EbsYLXDEeamG-Ij7YnW7w" name="[0..*] parameters" sourceNode="_pEmrNbXDEeamG-Ij7YnW7w" targetNode="_7EWz4LXDEeamG-Ij7YnW7w">
2451 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation/parameters"/>
2452 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation/parameters"/>
2453 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_7EbsYbXDEeamG-Ij7YnW7w" description="_pEmCt7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2454 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_7EbsYrXDEeamG-Ij7YnW7w" showIcon="false">
2455 <customFeatures>labelSize</customFeatures>
2456 </centerLabelStyle>
2457 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_7EbsY7XDEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
2458 <customFeatures>labelSize</customFeatures>
2459 </endLabelStyle>
2460 </ownedStyle>
2461 <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']"/>
2462 </ownedDiagramElements>
2463 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_n-_3ILXEEeamG-Ij7YnW7w" name="RelationLink" tooltipText="" incomingEdges="_QSMOILXFEeamG-Ij7YnW7w _Z8EScLXFEeamG-Ij7YnW7w _aXV5MLXFEeamG-Ij7YnW7w _aqZYELXFEeamG-Ij7YnW7w" width="12" height="10">
2464 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//RelationLink"/>
2465 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//RelationLink"/>
2466 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2467 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2468 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2469 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_SP0_gLXFEeamG-Ij7YnW7w" 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">
2470 <labelFormat>italic</labelFormat>
2471 <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"/>
2472 </ownedStyle>
2473 <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']"/>
2474 </ownedDiagramElements>
2475 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="__5SGALXEEeamG-Ij7YnW7w" name="UnaryElementRelationLink" tooltipText="" outgoingEdges="_Z8EScLXFEeamG-Ij7YnW7w _xIQsQLXFEeamG-Ij7YnW7w" width="12" height="10">
2476 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//UnaryElementRelationLink"/>
2477 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//UnaryElementRelationLink"/>
2478 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2479 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2480 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2481 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="__5StELXEEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
2482 <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"/>
2483 </ownedStyle>
2484 <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']"/>
2485 </ownedDiagramElements>
2486 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_ERNIgLXFEeamG-Ij7YnW7w" name="BinaryElementRelationLink" tooltipText="" outgoingEdges="_aXV5MLXFEeamG-Ij7YnW7w _2WivALXFEeamG-Ij7YnW7w _5HFkALXFEeamG-Ij7YnW7w" incomingEdges="_3d9AMPMUEeagPYxz1ZWLIQ" width="12" height="10">
2487 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//BinaryElementRelationLink"/>
2488 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//BinaryElementRelationLink"/>
2489 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2490 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2491 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2492 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_ERNvkLXFEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
2493 <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"/>
2494 </ownedStyle>
2495 <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']"/>
2496 </ownedDiagramElements>
2497 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_Hr5GsLXFEeamG-Ij7YnW7w" name="NaryRelationLink" tooltipText="" outgoingEdges="_aqZYELXFEeamG-Ij7YnW7w _jC230LXFEeamG-Ij7YnW7w" width="12" height="10">
2498 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//NaryRelationLink"/>
2499 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//NaryRelationLink"/>
2500 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2501 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2502 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2503 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_Hr5twLXFEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
2504 <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"/>
2505 </ownedStyle>
2506 <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']"/>
2507 </ownedDiagramElements>
2508 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_KReB0LXFEeamG-Ij7YnW7w" name="NaryRelationLinkElement" tooltipText="" incomingEdges="_jC230LXFEeamG-Ij7YnW7w" width="12" height="10">
2509 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//NaryRelationLinkElement"/>
2510 <semanticElements xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//NaryRelationLinkElement"/>
2511 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2512 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2513 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2514 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_dT6_ELXFEeamG-Ij7YnW7w" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
2515 <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"/>
2516 </ownedStyle>
2517 <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']"/>
2518 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_cAH04LXFEeamG-Ij7YnW7w" name="index : EInt" tooltipText="">
2519 <target xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//NaryRelationLinkElement/index"/>
2520 <semanticElements xmi:type="ecore:EAttribute" href="PartialInterpretation.ecore#//NaryRelationLinkElement/index"/>
2521 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_dT7mILXFEeamG-Ij7YnW7w" labelAlignment="LEFT">
2522 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
2523 </ownedStyle>
2524 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2525 </ownedElements>
2526 </ownedDiagramElements>
2527 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_QSMOILXFEeamG-Ij7YnW7w" name="[0..*] relationlinks" sourceNode="_pEmrfLXDEeamG-Ij7YnW7w" targetNode="_n-_3ILXEEeamG-Ij7YnW7w">
2528 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialRelationInterpretation/relationlinks"/>
2529 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialRelationInterpretation/relationlinks"/>
2530 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_QSMOIbXFEeamG-Ij7YnW7w" description="_pEmCt7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2531 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_QSMOIrXFEeamG-Ij7YnW7w" showIcon="false">
2532 <customFeatures>labelSize</customFeatures>
2533 </centerLabelStyle>
2534 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_QSMOI7XFEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
2535 <customFeatures>labelSize</customFeatures>
2536 </endLabelStyle>
2537 </ownedStyle>
2538 <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']"/>
2539 </ownedDiagramElements>
2540 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_Z8EScLXFEeamG-Ij7YnW7w" sourceNode="__5SGALXEEeamG-Ij7YnW7w" targetNode="_n-_3ILXEEeamG-Ij7YnW7w">
2541 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//UnaryElementRelationLink"/>
2542 <semanticElements xmi:type="ecore:EGenericType" href="PartialInterpretation.ecore#//UnaryElementRelationLink/@eGenericSuperTypes.0"/>
2543 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_Z8E5gLXFEeamG-Ij7YnW7w" targetArrow="InputClosedArrow" routingStyle="tree">
2544 <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"/>
2545 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_Z8E5gbXFEeamG-Ij7YnW7w" showIcon="false">
2546 <labelFormat>italic</labelFormat>
2547 </beginLabelStyle>
2548 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_Z8E5grXFEeamG-Ij7YnW7w" showIcon="false"/>
2549 </ownedStyle>
2550 <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']"/>
2551 </ownedDiagramElements>
2552 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_aXV5MLXFEeamG-Ij7YnW7w" sourceNode="_ERNIgLXFEeamG-Ij7YnW7w" targetNode="_n-_3ILXEEeamG-Ij7YnW7w">
2553 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//BinaryElementRelationLink"/>
2554 <semanticElements xmi:type="ecore:EGenericType" href="PartialInterpretation.ecore#//BinaryElementRelationLink/@eGenericSuperTypes.0"/>
2555 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_aXV5MbXFEeamG-Ij7YnW7w" targetArrow="InputClosedArrow" routingStyle="tree">
2556 <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"/>
2557 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_aXV5MrXFEeamG-Ij7YnW7w" showIcon="false">
2558 <labelFormat>italic</labelFormat>
2559 </beginLabelStyle>
2560 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_aXV5M7XFEeamG-Ij7YnW7w" showIcon="false"/>
2561 </ownedStyle>
2562 <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']"/>
2563 </ownedDiagramElements>
2564 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_aqZYELXFEeamG-Ij7YnW7w" sourceNode="_Hr5GsLXFEeamG-Ij7YnW7w" targetNode="_n-_3ILXEEeamG-Ij7YnW7w">
2565 <target xmi:type="ecore:EClass" href="PartialInterpretation.ecore#//NaryRelationLink"/>
2566 <semanticElements xmi:type="ecore:EGenericType" href="PartialInterpretation.ecore#//NaryRelationLink/@eGenericSuperTypes.0"/>
2567 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_aqZYEbXFEeamG-Ij7YnW7w" targetArrow="InputClosedArrow" routingStyle="tree">
2568 <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"/>
2569 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_aqZYErXFEeamG-Ij7YnW7w" showIcon="false">
2570 <labelFormat>italic</labelFormat>
2571 </beginLabelStyle>
2572 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_aqZYE7XFEeamG-Ij7YnW7w" showIcon="false"/>
2573 </ownedStyle>
2574 <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']"/>
2575 </ownedDiagramElements>
2576 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_jC230LXFEeamG-Ij7YnW7w" name="[0..*] elements" sourceNode="_Hr5GsLXFEeamG-Ij7YnW7w" targetNode="_KReB0LXFEeamG-Ij7YnW7w">
2577 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//NaryRelationLink/elements"/>
2578 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//NaryRelationLink/elements"/>
2579 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_jC3e4LXFEeamG-Ij7YnW7w" description="_pEmCt7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2580 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_jC3e4bXFEeamG-Ij7YnW7w" showIcon="false">
2581 <customFeatures>labelSize</customFeatures>
2582 </centerLabelStyle>
2583 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_jC3e4rXFEeamG-Ij7YnW7w" showIcon="false" labelColor="39,76,114">
2584 <customFeatures>labelSize</customFeatures>
2585 </endLabelStyle>
2586 </ownedStyle>
2587 <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']"/>
2588 </ownedDiagramElements>
2589 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_xIQsQLXFEeamG-Ij7YnW7w" name="[1..1] param1" sourceNode="__5SGALXEEeamG-Ij7YnW7w" targetNode="_pEmrL7XDEeamG-Ij7YnW7w">
2590 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//UnaryElementRelationLink/param1"/>
2591 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//UnaryElementRelationLink/param1"/>
2592 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_0-ev4LXFEeamG-Ij7YnW7w" description="_pEmCs7XDEeamG-Ij7YnW7w" routingStyle="manhattan" strokeColor="0,0,0">
2593 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_0-ev4bXFEeamG-Ij7YnW7w" showIcon="false">
2594 <labelFormat>bold</labelFormat>
2595 </centerLabelStyle>
2596 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_0-ev4rXFEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelColor="39,76,114"/>
2597 </ownedStyle>
2598 <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']"/>
2599 </ownedDiagramElements>
2600 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_2WivALXFEeamG-Ij7YnW7w" name="[1..1] param1" sourceNode="_ERNIgLXFEeamG-Ij7YnW7w" targetNode="_pEmrL7XDEeamG-Ij7YnW7w">
2601 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//BinaryElementRelationLink/param1"/>
2602 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//BinaryElementRelationLink/param1"/>
2603 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_4Yv3ULXFEeamG-Ij7YnW7w" description="_pEmCs7XDEeamG-Ij7YnW7w" routingStyle="manhattan" strokeColor="0,0,0">
2604 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_4Yv3UbXFEeamG-Ij7YnW7w" showIcon="false">
2605 <labelFormat>bold</labelFormat>
2606 </centerLabelStyle>
2607 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_4Yv3UrXFEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelColor="39,76,114"/>
2608 </ownedStyle>
2609 <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']"/>
2610 </ownedDiagramElements>
2611 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_5HFkALXFEeamG-Ij7YnW7w" name="[1..1] param2" sourceNode="_ERNIgLXFEeamG-Ij7YnW7w" targetNode="_pEmrL7XDEeamG-Ij7YnW7w">
2612 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//BinaryElementRelationLink/param2"/>
2613 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//BinaryElementRelationLink/param2"/>
2614 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_8S8cALXFEeamG-Ij7YnW7w" description="_pEmCs7XDEeamG-Ij7YnW7w" routingStyle="manhattan" strokeColor="0,0,0">
2615 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_8S8cAbXFEeamG-Ij7YnW7w" showIcon="false">
2616 <labelFormat>bold</labelFormat>
2617 </centerLabelStyle>
2618 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_8S8cArXFEeamG-Ij7YnW7w" labelSize="6" showIcon="false" labelColor="39,76,114"/>
2619 </ownedStyle>
2620 <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']"/>
2621 </ownedDiagramElements>
2622 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_lb3w0L3MEeaj7tVusjQpHg" name="[0..1] param1" sourceNode="_pEmrfLXDEeamG-Ij7YnW7w" targetNode="_7EWz4LXDEeamG-Ij7YnW7w">
2623 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialRelationInterpretation/param1"/>
2624 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialRelationInterpretation/param1"/>
2625 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_lb4X4L3MEeaj7tVusjQpHg" routingStyle="manhattan" strokeColor="0,0,0">
2626 <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_EReference']/@style"/>
2627 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_lb4X4b3MEeaj7tVusjQpHg" showIcon="false">
2628 <customFeatures>labelSize</customFeatures>
2629 </centerLabelStyle>
2630 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_lb4X4r3MEeaj7tVusjQpHg" showIcon="false" labelColor="39,76,114">
2631 <customFeatures>labelSize</customFeatures>
2632 </endLabelStyle>
2633 </ownedStyle>
2634 <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']"/>
2635 </ownedDiagramElements>
2636 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_oQIBIL3MEeaj7tVusjQpHg" name="[0..1] param2" sourceNode="_pEmrfLXDEeamG-Ij7YnW7w" targetNode="_7EWz4LXDEeamG-Ij7YnW7w">
2637 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialRelationInterpretation/param2"/>
2638 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialRelationInterpretation/param2"/>
2639 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_oQIoML3MEeaj7tVusjQpHg" routingStyle="manhattan" strokeColor="0,0,0">
2640 <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_EReference']/@style"/>
2641 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_oQIoMb3MEeaj7tVusjQpHg" showIcon="false">
2642 <customFeatures>labelSize</customFeatures>
2643 </centerLabelStyle>
2644 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_oQIoMr3MEeaj7tVusjQpHg" showIcon="false" labelColor="39,76,114">
2645 <customFeatures>labelSize</customFeatures>
2646 </endLabelStyle>
2647 </ownedStyle>
2648 <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']"/>
2649 </ownedDiagramElements>
2650 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_RU0XQMAiEeaaj7sYFz2QKg" name="[1..1] openWorldElementPrototype" sourceNode="_pEmrI7XDEeamG-Ij7YnW7w" targetNode="_pEmrL7XDEeamG-Ij7YnW7w">
2651 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/openWorldElementPrototype"/>
2652 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/openWorldElementPrototype"/>
2653 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_RU2Mc8AiEeaaj7sYFz2QKg" description="_RU2McMAiEeaaj7sYFz2QKg" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2654 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_RU2MdMAiEeaaj7sYFz2QKg" showIcon="false">
2655 <customFeatures>labelSize</customFeatures>
2656 <labelFormat>bold</labelFormat>
2657 </centerLabelStyle>
2658 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_RU2MdcAiEeaaj7sYFz2QKg" showIcon="false" labelColor="39,76,114">
2659 <customFeatures>labelSize</customFeatures>
2660 </endLabelStyle>
2661 </ownedStyle>
2662 <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']"/>
2663 </ownedDiagramElements>
2664 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_1xkW4PMUEeagPYxz1ZWLIQ" name="[0..1] problemConainer" sourceNode="_pEmrI7XDEeamG-Ij7YnW7w" targetNode="_pEmrJbXDEeamG-Ij7YnW7w">
2665 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/problemConainer"/>
2666 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/problemConainer"/>
2667 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_1xmzIPMUEeagPYxz1ZWLIQ" description="_pEmCt7XDEeamG-Ij7YnW7w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
2668 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_1xmzIfMUEeagPYxz1ZWLIQ" showIcon="false">
2669 <customFeatures>labelSize</customFeatures>
2670 </centerLabelStyle>
2671 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_1xmzIvMUEeagPYxz1ZWLIQ" showIcon="false" labelColor="39,76,114">
2672 <customFeatures>labelSize</customFeatures>
2673 </endLabelStyle>
2674 </ownedStyle>
2675 <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']"/>
2676 </ownedDiagramElements>
2677 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_3d9AMPMUEeagPYxz1ZWLIQ" name="[0..*] pregeneratedRelationLinks" sourceNode="_pEmrI7XDEeamG-Ij7YnW7w" targetNode="_ERNIgLXFEeamG-Ij7YnW7w">
2678 <target xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/pregeneratedRelationLinks"/>
2679 <semanticElements xmi:type="ecore:EReference" href="PartialInterpretation.ecore#//PartialInterpretation/pregeneratedRelationLinks"/>
2680 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_3d9nQPMUEeagPYxz1ZWLIQ" routingStyle="manhattan" strokeColor="0,0,0">
2681 <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_EReference']/@style"/>
2682 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_3d9nQfMUEeagPYxz1ZWLIQ" showIcon="false">
2683 <customFeatures>labelSize</customFeatures>
2684 </centerLabelStyle>
2685 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_3d9nQvMUEeagPYxz1ZWLIQ" showIcon="false" labelColor="39,76,114">
2686 <customFeatures>labelSize</customFeatures>
2687 </endLabelStyle>
2688 </ownedStyle>
2689 <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']"/>
2690 </ownedDiagramElements>
2691 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
2692 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_pEmrqrXDEeamG-Ij7YnW7w"/>
2693 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
2694 <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']"/>
2695 <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']"/>
2696 <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']"/>
2697 <target xmi:type="ecore:EPackage" href="PartialInterpretation.ecore#/"/>
2698 </ownedRepresentations>
2699 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
2700 </ownedViews>
2701 <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_LRdt8LW_EeamG-Ij7YnW7w">
2702 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/>
2703 </ownedViews>
2704 <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_LRimcLW_EeamG-Ij7YnW7w">
2705 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/>
2706 </ownedViews>
2707 <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_LRrwYLW_EeamG-Ij7YnW7w">
2708 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/>
2709 </ownedViews>
2710</viewpoint:DAnalysis>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore
new file mode 100644
index 00000000..fd7ca595
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore
@@ -0,0 +1,76 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="partialinterpretation" nsURI="http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
4 nsPrefix="partialinterpretation">
5 <eClassifiers xsi:type="ecore:EClass" name="PartialInterpretation">
6 <eStructuralFeatures xsi:type="ecore:EReference" name="problem" lowerBound="1"
7 eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem"/>
8 <eStructuralFeatures xsi:type="ecore:EReference" name="partialconstantinterpretation"
9 upperBound="-1" eType="#//PartialConstantInterpretation" containment="true"/>
10 <eStructuralFeatures xsi:type="ecore:EReference" name="partialrelationinterpretation"
11 upperBound="-1" eType="#//PartialRelationInterpretation" containment="true"/>
12 <eStructuralFeatures xsi:type="ecore:EReference" name="partialfunctioninterpretation"
13 upperBound="-1" eType="#//PartialFunctionInterpretation" containment="true"/>
14 <eStructuralFeatures xsi:type="ecore:EReference" name="newElements" upperBound="-1"
15 eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//DefinedElement"
16 containment="true"/>
17 <eStructuralFeatures xsi:type="ecore:EReference" name="partialtypeinterpratation"
18 upperBound="-1" eType="#//PartialTypeInterpratation" containment="true"/>
19 <eStructuralFeatures xsi:type="ecore:EAttribute" name="minNewElements" lowerBound="1"
20 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="0"
21 iD="true"/>
22 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxNewElements" lowerBound="1"
23 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="0"/>
24 <eStructuralFeatures xsi:type="ecore:EReference" name="openWorldElementPrototype"
25 lowerBound="1" eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//DefinedElement"
26 containment="true"/>
27 <eStructuralFeatures xsi:type="ecore:EReference" name="problemConainer" eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//LogicProblem"
28 containment="true"/>
29 <eStructuralFeatures xsi:type="ecore:EReference" name="pregeneratedRelationLinks"
30 upperBound="-1" eType="#//BinaryElementRelationLink"/>
31 <eStructuralFeatures xsi:type="ecore:EReference" name="preGeneratedElements" upperBound="-1"
32 eType="#//PartialTypeInterpratation" containment="true"/>
33 </eClassifiers>
34 <eClassifiers xsi:type="ecore:EClass" name="PartialConstantInterpretation">
35 <eStructuralFeatures xsi:type="ecore:EReference" name="interpretationOf" lowerBound="1"
36 eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//ConstantDeclaration"/>
37 </eClassifiers>
38 <eClassifiers xsi:type="ecore:EClass" name="PartialRelationInterpretation">
39 <eStructuralFeatures xsi:type="ecore:EReference" name="interpretationOf" lowerBound="1"
40 eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//RelationDeclaration"/>
41 <eStructuralFeatures xsi:type="ecore:EReference" name="relationlinks" upperBound="-1"
42 eType="#//RelationLink" containment="true"/>
43 <eStructuralFeatures xsi:type="ecore:EReference" name="param1" eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeReference"/>
44 <eStructuralFeatures xsi:type="ecore:EReference" name="param2" eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeReference"/>
45 </eClassifiers>
46 <eClassifiers xsi:type="ecore:EClass" name="PartialFunctionInterpretation">
47 <eStructuralFeatures xsi:type="ecore:EReference" name="interpretationOf" lowerBound="1"
48 eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//FunctionDeclaration"/>
49 </eClassifiers>
50 <eClassifiers xsi:type="ecore:EClass" name="PartialTypeInterpratation">
51 <eStructuralFeatures xsi:type="ecore:EReference" name="interpretationOf" lowerBound="1"
52 eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//TypeDeclaration"/>
53 <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"
54 eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//DefinedElement"/>
55 <eStructuralFeatures xsi:type="ecore:EReference" name="supertypeInterpretation"
56 upperBound="-1" eType="#//PartialTypeInterpratation"/>
57 </eClassifiers>
58 <eClassifiers xsi:type="ecore:EClass" name="RelationLink" abstract="true"/>
59 <eClassifiers xsi:type="ecore:EClass" name="UnaryElementRelationLink" eSuperTypes="#//RelationLink">
60 <eStructuralFeatures xsi:type="ecore:EReference" name="param1" lowerBound="1"
61 eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//DefinedElement"/>
62 </eClassifiers>
63 <eClassifiers xsi:type="ecore:EClass" name="BinaryElementRelationLink" eSuperTypes="#//RelationLink">
64 <eStructuralFeatures xsi:type="ecore:EReference" name="param1" lowerBound="1"
65 eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//DefinedElement"/>
66 <eStructuralFeatures xsi:type="ecore:EReference" name="param2" lowerBound="1"
67 eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//DefinedElement"/>
68 </eClassifiers>
69 <eClassifiers xsi:type="ecore:EClass" name="NaryRelationLink" eSuperTypes="#//RelationLink">
70 <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"
71 eType="#//NaryRelationLinkElement" containment="true"/>
72 </eClassifiers>
73 <eClassifiers xsi:type="ecore:EClass" name="NaryRelationLinkElement">
74 <eStructuralFeatures xsi:type="ecore:EAttribute" name="index" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
75 </eClassifiers>
76</ecore:EPackage>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.genmodel b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.genmodel
new file mode 100644
index 00000000..e244d0cd
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.genmodel
@@ -0,0 +1,49 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
3 xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen"
4 modelPluginID="hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage"
5 modelName="PartialInterpretation" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
6 importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
7 usedGenPackages="../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.genmodel#//logiclanguage ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.genmodel#//logicproblem"
8 operationReflection="true" importOrganizing="true">
9 <foreignModel>PartialInterpretation.ecore</foreignModel>
10 <genPackages prefix="Partialinterpretation" basePackage="hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage"
11 disposableProviderFactory="true" ecorePackage="PartialInterpretation.ecore#/">
12 <genClasses ecoreClass="PartialInterpretation.ecore#//PartialInterpretation">
13 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//PartialInterpretation/problem"/>
14 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//PartialInterpretation/partialconstantinterpretation"/>
15 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//PartialInterpretation/partialrelationinterpretation"/>
16 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//PartialInterpretation/partialfunctioninterpretation"/>
17 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//PartialInterpretation/newElements"/>
18 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//PartialInterpretation/partialtypeinterpratation"/>
19 </genClasses>
20 <genClasses ecoreClass="PartialInterpretation.ecore#//PartialConstantInterpretation">
21 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//PartialConstantInterpretation/interpretationOf"/>
22 </genClasses>
23 <genClasses ecoreClass="PartialInterpretation.ecore#//PartialRelationInterpretation">
24 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//PartialRelationInterpretation/interpretationOf"/>
25 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//PartialRelationInterpretation/relationlinks"/>
26 </genClasses>
27 <genClasses ecoreClass="PartialInterpretation.ecore#//PartialFunctionInterpretation">
28 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//PartialFunctionInterpretation/interpretationOf"/>
29 </genClasses>
30 <genClasses ecoreClass="PartialInterpretation.ecore#//PartialTypeInterpratation">
31 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//PartialTypeInterpratation/interpretationOf"/>
32 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//PartialTypeInterpratation/elements"/>
33 </genClasses>
34 <genClasses image="false" ecoreClass="PartialInterpretation.ecore#//RelationLink"/>
35 <genClasses ecoreClass="PartialInterpretation.ecore#//UnaryElementRelationLink">
36 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//UnaryElementRelationLink/param1"/>
37 </genClasses>
38 <genClasses ecoreClass="PartialInterpretation.ecore#//BinaryElementRelationLink">
39 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//BinaryElementRelationLink/param1"/>
40 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//BinaryElementRelationLink/param2"/>
41 </genClasses>
42 <genClasses ecoreClass="PartialInterpretation.ecore#//NaryRelationLink">
43 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference PartialInterpretation.ecore#//NaryRelationLink/elements"/>
44 </genClasses>
45 <genClasses ecoreClass="PartialInterpretation.ecore#//NaryRelationLinkElement">
46 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute PartialInterpretation.ecore#//NaryRelationLinkElement/index"/>
47 </genClasses>
48 </genPackages>
49</genmodel:GenModel>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/plugin.properties b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/plugin.properties
new file mode 100644
index 00000000..41436684
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/plugin.properties
@@ -0,0 +1,4 @@
1#
2
3pluginName = PartialInterpretation Model
4providerName = www.example.org
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/plugin.xml b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/plugin.xml
new file mode 100644
index 00000000..b9248505
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/plugin.xml
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<?eclipse version="3.0"?>
3
4<!--
5-->
6
7<plugin>
8
9 <extension point="org.eclipse.emf.ecore.generated_package">
10 <!-- @generated PartialInterpretation -->
11 <package
12 uri="http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
13 class="hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage"
14 genModel="model/PartialInterpretation.genmodel"/>
15 </extension>
16
17</plugin>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend
new file mode 100644
index 00000000..eeccbf76
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend
@@ -0,0 +1,112 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage
2
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDeclaration
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition
11import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
12import hu.bme.mit.inf.dslreasoner.logic.model.patterns.SupertypeStarMatcher
13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialConstantInterpretation
14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialFunctionInterpretation
15import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
16import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation
17import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation
18import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationFactory
19import java.util.HashMap
20import java.util.Map
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine
22import org.eclipse.viatra.query.runtime.emf.EMFScope
23import org.eclipse.xtend.lib.annotations.Data
24
25import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
26
27@Data class Problem2PartialInterpretationTrace {
28 Map<TypeDeclaration, PartialTypeInterpratation> type2Interpretation = new HashMap
29 Map<RelationDeclaration, PartialRelationInterpretation> relation2Interpretation = new HashMap
30}
31
32class PartialInterpretationInitialiser {
33 val extension PartialinterpretationFactory factory = PartialinterpretationFactory.eINSTANCE
34 val extension LogiclanguageFactory factory2 = LogiclanguageFactory.eINSTANCE
35
36 /**
37 * Initialises an empty partial interpretation from a logic problem
38 */
39 def TracedOutput<PartialInterpretation,Problem2PartialInterpretationTrace> initialisePartialInterpretation(
40 LogicProblem problem,
41 int minNewElement, int maxNewElement)
42 {
43 val engine = ViatraQueryEngine.on(new EMFScope(problem))
44 val trace = new Problem2PartialInterpretationTrace
45
46 val res = createPartialInterpretation => [
47 it.problem = problem
48 it.openWorldElementPrototype = createDefinedElement => [it.name = "Symbolic New Element"]
49 it.minNewElements = minNewElement
50 it.maxNewElements = maxNewElement
51
52 for(typeDeclaration : problem.types.filter(TypeDeclaration)) {
53 it.partialtypeinterpratation += typeDeclaration.initialisePartialTypeInterpretation(engine,trace)
54 }
55 problem.connectSuperypes(trace)
56
57 it.partialrelationinterpretation += problem.relations.filter(RelationDeclaration)
58 .map[initialisePartialRelationInterpretation(trace)]
59 it.partialfunctioninterpretation += problem.functions.filter(FunctionDeclaration)
60 .map[initialisePartialFunctionInterpretation(trace)]
61 it.partialconstantinterpretation += problem.constants.filter(ConstantDeclaration)
62 .map[initialisePartialConstantDeclaration(trace)]
63 ]
64
65 return new TracedOutput(res,trace)
66 }
67
68 /**
69 * Initialize type with existing elements
70 */
71 def private initialisePartialTypeInterpretation(TypeDeclaration t, ViatraQueryEngine engine, Problem2PartialInterpretationTrace trace) {
72 val supertypeMatcher = SupertypeStarMatcher.on(engine)
73 val res = createPartialTypeInterpratation => [
74 it.interpretationOf = t
75 it.elements += supertypeMatcher.getAllValuesOfsubtype(t)
76 .filter(TypeDefinition)
77 .map[elements].flatten
78 ]
79 trace.type2Interpretation.put(t,res)
80 return res
81 }
82
83 def private connectSuperypes(LogicProblem problem, Problem2PartialInterpretationTrace trace) {
84 for(typeDeclaration : problem.types.filter(TypeDeclaration)) {
85 val supertypes = typeDeclaration.<Type>transitiveClosurePlus[it.supertypes]
86 for(supertype : supertypes.filter(TypeDeclaration)) {
87 typeDeclaration.lookup(trace.type2Interpretation).supertypeInterpretation += supertype.lookup(trace.type2Interpretation)
88 //println('''«typeDeclaration.name» --> «supertype.name»''')
89 }
90 }
91 }
92
93 def private initialisePartialRelationInterpretation(RelationDeclaration r, Problem2PartialInterpretationTrace trace) {
94 val res = createPartialRelationInterpretation => [
95 it.interpretationOf = r
96 if(r.parameters.size==2) {
97 it.param1 = r.parameters.get(0)
98 it.param2 = r.parameters.get(1)
99 } else throw new UnsupportedOperationException
100 ]
101 trace.relation2Interpretation.put(r,res)
102 return res
103 }
104
105 def private PartialConstantInterpretation initialisePartialConstantDeclaration(ConstantDeclaration c, Problem2PartialInterpretationTrace trace) {
106 throw new UnsupportedOperationException
107 }
108
109 def private PartialFunctionInterpretation initialisePartialFunctionInterpretation(FunctionDeclaration f, Problem2PartialInterpretationTrace trace) {
110 throw new UnsupportedOperationException
111 }
112} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/Descriptor.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/Descriptor.xtend
new file mode 100644
index 00000000..41482b28
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/Descriptor.xtend
@@ -0,0 +1,214 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood
2
3import java.util.HashMap
4import java.util.Map
5import java.util.Set
6import org.eclipse.xtend.lib.annotations.Data
7
8@Data abstract class AbstractNodeDescriptor {
9 long dataHash
10
11// @Pure
12// @Override
13// override public boolean equals(Object obj) {
14// if (this === obj)
15// return true;
16// if (obj === null)
17// return false;
18// if (getClass() != obj.getClass())
19// return false;
20// val AbstractNodeDescriptor other = obj as AbstractNodeDescriptor;
21// if (other.dataHash != this.dataHash)
22// return false;
23// return true;
24// }
25}
26
27@Data class LocalNodeDescriptor extends AbstractNodeDescriptor{
28 Set<String> types
29 String id;
30 new(String id, Set<String> types) {
31 super(calcualteDataHash(id,types))
32 this.types = types
33 this.id = id
34 }
35
36 def private static calcualteDataHash(String id, Set<String> types) {
37 val int prime = 31;
38 var result = 0
39 if(id !== null)
40 result = id.hashCode();
41 if(types !== null) {
42 result = prime * result + types.hashCode
43 }
44 return result
45 }
46
47 override hashCode() {
48 return this.dataHash.hashCode
49 }
50
51 override toString() {
52 return class.name + this.dataHash
53 }
54
55// @Pure
56// @Override
57// override public boolean equals(Object obj) {
58// if (this === obj)
59// return true;
60// if (obj === null)
61// return false;
62// if (getClass() != obj.getClass())
63// return false;
64// val AbstractNodeDescriptor other = obj as AbstractNodeDescriptor;
65// if (other.dataHash != this.dataHash)
66// return false;
67// return true;
68// }
69
70// @Pure
71// override public boolean equals(Object obj) {
72// if (this === obj)
73// return true;
74// if (obj === null)
75// return false;
76// if (getClass() != obj.getClass())
77// return false;
78// if (!super.equals(obj))
79// return false;
80// val LocalNodeDescriptor other = obj as LocalNodeDescriptor;
81// if (this.clazz === null) {
82// if (other.clazz != null)
83// return false;
84// } else if (!this.clazz.equals(other.clazz))
85// return false;
86// return true;
87// }
88}
89
90@Data class IncomingRelation<FROM> {
91 FROM from
92 String type
93}
94
95@Data class OutgoingRelation<TO> {
96 TO to
97 String type
98}
99
100@Data class FurtherNodeDescriptor<NodeRep> extends AbstractNodeDescriptor{
101
102 NodeRep previousRepresentation
103 Map<IncomingRelation<NodeRep>,Integer> incomingEdges
104 Map<OutgoingRelation<NodeRep>,Integer> outgoingEdges
105
106 new(
107 NodeRep previousRepresentation,
108 Map<IncomingRelation<NodeRep>,Integer> incomingEdges,
109 Map<OutgoingRelation<NodeRep>,Integer> outgoingEdges)
110 {
111 super(calculateDataHash(previousRepresentation,incomingEdges,outgoingEdges))
112 this.previousRepresentation = previousRepresentation
113 this.incomingEdges = new HashMap(incomingEdges)
114 this.outgoingEdges = new HashMap(outgoingEdges)
115 }
116
117 static def private <NodeRep> int calculateDataHash(
118 NodeRep previousRepresentation,
119 Map<IncomingRelation<NodeRep>,Integer> incomingEdges,
120 Map<OutgoingRelation<NodeRep>,Integer> outgoingEdges)
121 {
122 val int prime = 31;
123 var int result = previousRepresentation.hashCode;
124 if(incomingEdges !== null)
125 result = prime * result + incomingEdges.hashCode();
126 if(outgoingEdges !== null)
127 result = prime * result + outgoingEdges.hashCode();
128 return result;
129 }
130
131 override hashCode() {
132 return this.dataHash.hashCode
133 }
134
135 override toString() {
136 return class.name + dataHash
137// return '''[«previousRepresentation»,(«FOR
138// in: incomingEdges.entrySet»(«in.key.type.name»=«in.key.from»,«in.value»)«ENDFOR»),(«FOR
139// out: outgoingEdges.entrySet»(«out.key.type.name»=«out.key.to»,«out.value»)«ENDFOR»),«FOR
140// att: attributeValues»(«att.type.name»=«att.value»)«ENDFOR»]'''
141 }
142
143// @Pure
144// @Override
145// override public boolean equals(Object obj) {
146// if (this === obj)
147// return true;
148// if (obj === null)
149// return false;
150// if (getClass() != obj.getClass())
151// return false;
152// val AbstractNodeDescriptor other = obj as AbstractNodeDescriptor;
153// if (other.dataHash != this.dataHash)
154// return false;
155// return true;
156// }
157
158// @Pure
159// override public boolean equals(Object obj) {
160// if (this === obj)
161// return true;
162// if (obj === null)
163// return false;
164// if (getClass() != obj.getClass())
165// return false;
166// if (!super.equals(obj))
167// return false;
168// val FurtherNodeDescriptor<?> other = obj as FurtherNodeDescriptor<?>;
169// if (this.previousRepresentation === null) {
170// if (other.previousRepresentation != null)
171// return false;
172//
173// }
174//// } else if (!this.previousRepresentation.equals(other.previousRepresentation))
175//// return false;
176// if (this.incomingEdges === null) {
177// if (other.incomingEdges != null)
178// return false;
179// } else if (!this.incomingEdges.equals(other.incomingEdges))
180// return false;
181// if (this.outgoingEdges === null) {
182// if (other.outgoingEdges != null)
183// return false;
184// } else if (!this.outgoingEdges.equals(other.outgoingEdges))
185// return false;
186// if (this.attributeValues === null) {
187// if (other.attributeValues != null)
188// return false;
189// } else if (!this.attributeValues.equals(other.attributeValues))
190// return false;
191// return true;
192// }
193}
194
195/*
196@Data
197class ModelDescriptor {
198 int dataHash
199 int unknownElements
200 Map<? extends AbstractNodeDescriptor,Integer> knownElements
201
202 public new(Map<? extends AbstractNodeDescriptor,Integer> knownElements, int unknownElements) {
203 this.dataHash = calculateDataHash(knownElements,unknownElements)
204 this.unknownElements = unknownElements
205 this.knownElements = knownElements
206 }
207
208 def private static calculateDataHash(Map<? extends AbstractNodeDescriptor,Integer> knownElements, int unknownElements)
209 {
210 val int prime = 31;
211 return knownElements.hashCode * prime + unknownElements.hashCode
212 }
213}
214*/ \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/FurtherNodeDescriptorWithEquivalenceCounter.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/FurtherNodeDescriptorWithEquivalenceCounter.xtend
new file mode 100644
index 00000000..22e890a2
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/FurtherNodeDescriptorWithEquivalenceCounter.xtend
@@ -0,0 +1,16 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood
2
3import java.util.Map
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
5
6class FurtherNodeDescriptorWithEquivalenceCounter extends FurtherNodeDescriptor<AbstractNodeDescriptor> {
7
8 new(AbstractNodeDescriptor previousRepresentation,
9 Map<IncomingRelation<AbstractNodeDescriptor>, Integer> incomingEdges,
10 Map<OutgoingRelation<AbstractNodeDescriptor>, Integer> outgoingEdges,
11 Map<DefinedElement, FurtherNodeDescriptor<AbstractNodeDescriptor>> node2Representation)
12 {
13 super(previousRepresentation, incomingEdges, outgoingEdges)
14 }
15
16} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/NeighbourhoodWithTraces.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/NeighbourhoodWithTraces.xtend
new file mode 100644
index 00000000..76cc4ae1
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/NeighbourhoodWithTraces.xtend
@@ -0,0 +1,11 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
4import java.util.Map
5import org.eclipse.xtend.lib.annotations.Data
6
7@Data class NeighbourhoodWithTraces<ModelRep,NodeRep> {
8 ModelRep modelRepresentation
9 Map<DefinedElement,? extends NodeRep> nodeRepresentations
10 NeighbourhoodWithTraces<ModelRep,NodeRep> previousRepresentation
11}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2Hash.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2Hash.xtend
new file mode 100644
index 00000000..d474877d
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2Hash.xtend
@@ -0,0 +1,25 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood
2
3import java.util.Map
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
5
6class PartialInterpretation2Hash extends PartialInterpretation2NeighbourhoodRepresentation<Integer, Integer>{
7
8 protected new() {
9 super(false, true)
10 }
11
12 override protected createLocalRepresentation(Map<DefinedElement, LocalNodeDescriptor> node2Representation, Map<LocalNodeDescriptor, Integer> representation2Amount) {
13 return new NeighbourhoodWithTraces(
14 representation2Amount.hashCode,node2Representation.mapValues[it.hashCode],
15 null)
16 }
17
18 override protected createFurtherRepresentation(Map<FurtherNodeDescriptor<Integer>, Integer> nodeDescriptors, Map<DefinedElement, FurtherNodeDescriptor<Integer>> node2Representation, NeighbourhoodWithTraces<Integer, Integer> previous, boolean deepRepresentation) {
19 return new NeighbourhoodWithTraces(
20 nodeDescriptors.hashCode,
21 node2Representation.mapValues[it.hashCode],
22 if(deepRepresentation) {previous} else {null})
23 }
24
25}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2ImmutableTypeLattice.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2ImmutableTypeLattice.xtend
new file mode 100644
index 00000000..31181370
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2ImmutableTypeLattice.xtend
@@ -0,0 +1,24 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
4import java.util.Map
5
6class PartialInterpretation2ImmutableTypeLattice extends
7 PartialInterpretation2NeighbourhoodRepresentation<Map<? extends AbstractNodeDescriptor,Integer>, AbstractNodeDescriptor>{
8
9 public new() {
10 super(false, true)
11 }
12
13 override protected createLocalRepresentation(Map<DefinedElement, LocalNodeDescriptor> node2Representation, Map<LocalNodeDescriptor, Integer> representation2Amount) {
14 return new NeighbourhoodWithTraces(node2Representation.immutableCopy,node2Representation.immutableCopy,null)
15 }
16
17 override protected createFurtherRepresentation(Map<FurtherNodeDescriptor<AbstractNodeDescriptor>, Integer> nodeDescriptors, Map<DefinedElement, FurtherNodeDescriptor<AbstractNodeDescriptor>> node2Representation, NeighbourhoodWithTraces<Map<? extends AbstractNodeDescriptor, Integer>, AbstractNodeDescriptor> previous, boolean deepRepresentation) {
18 if(deepRepresentation) {
19 return new NeighbourhoodWithTraces<Map<? extends AbstractNodeDescriptor, Integer>, AbstractNodeDescriptor>(nodeDescriptors,node2Representation,previous)
20 } else {
21 return new NeighbourhoodWithTraces<Map<? extends AbstractNodeDescriptor, Integer>, AbstractNodeDescriptor>(nodeDescriptors,node2Representation,null)
22 }
23 }
24}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2ImmutableTypeLatticeWithEquivalenceCounter.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2ImmutableTypeLatticeWithEquivalenceCounter.xtend
new file mode 100644
index 00000000..251a82f0
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2ImmutableTypeLatticeWithEquivalenceCounter.xtend
@@ -0,0 +1,56 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
4import java.util.Map
5import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
6import java.util.HashMap
7
8class PartialInterpretation2ImmutableTypeLatticeWithEquivalenceCounter extends
9 PartialInterpretation2NeighbourhoodRepresentation<
10 Map<? extends AbstractNodeDescriptor,Integer>, // <- Model Descriptor
11 AbstractNodeDescriptor> // <- Node Descriptor
12 {
13
14 protected new() {
15 super(true,false)
16 }
17
18 override protected createLocalRepresentation(Map<DefinedElement, LocalNodeDescriptor> node2Representation, Map<LocalNodeDescriptor, Integer> representation2Amount) {
19 return new NeighbourhoodWithTraces(node2Representation.immutableCopy,node2Representation.immutableCopy,null)
20 }
21
22 override protected createFurtherRepresentation(
23 Map<FurtherNodeDescriptor<AbstractNodeDescriptor>, Integer> nodeDescriptors,
24 Map<DefinedElement, FurtherNodeDescriptor<AbstractNodeDescriptor>> node2Representation,
25 NeighbourhoodWithTraces<Map<? extends AbstractNodeDescriptor, Integer>, AbstractNodeDescriptor> previous,
26 boolean deepRepresentation
27 ) {
28 if(deepRepresentation) {
29 return new NeighbourhoodWithTraces<Map<? extends AbstractNodeDescriptor, Integer>, AbstractNodeDescriptor>(nodeDescriptors,node2Representation,previous)
30 } else {
31 return new NeighbourhoodWithTraces<Map<? extends AbstractNodeDescriptor, Integer>, AbstractNodeDescriptor>(nodeDescriptors,node2Representation,null)
32 }
33 }
34
35 public def finalRepresentation(NeighbourhoodWithTraces<Map<? extends AbstractNodeDescriptor, Integer>,AbstractNodeDescriptor> representation) {
36 val node2Representation = representation.nodeRepresentations
37 val node2LocalRepresentation = new HashMap
38 //val localRepresentation2Node = new HashMap
39 for(entry: node2Representation.entrySet) {
40 val node = entry.key
41 val localNodeDescriptor = entry.value.toLocalDescriptor
42 node2LocalRepresentation.put(node,localNodeDescriptor)
43 }
44
45 }
46
47 public def LocalNodeDescriptor toLocalDescriptor(AbstractNodeDescriptor descriptor) {
48 if(descriptor instanceof LocalNodeDescriptor) {
49 return descriptor
50 } else if(descriptor instanceof FurtherNodeDescriptor<?>) {
51 (descriptor.previousRepresentation as AbstractNodeDescriptor).toLocalDescriptor
52 } else throw new IllegalArgumentException('''Unsupported descriptor type: «descriptor.class.simpleName»''')
53 }
54
55
56}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2NeighbourhoodRepresentation.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2NeighbourhoodRepresentation.xtend
new file mode 100644
index 00000000..df6fb6ae
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2NeighbourhoodRepresentation.xtend
@@ -0,0 +1,345 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
8import java.util.HashMap
9import java.util.HashSet
10import java.util.LinkedList
11import java.util.List
12import java.util.Map
13import java.util.Set
14
15import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
16
17abstract class PartialInterpretation2NeighbourhoodRepresentation<ModelRepresentation,NodeRepresentation> {
18 private val boolean deepRepresentation
19 private val boolean mergeSimilarNeighbourhood
20
21 protected new(boolean deeprepresentation, boolean mergeSimilarNeighbourhood) {
22 this.deepRepresentation = deeprepresentation
23 this.mergeSimilarNeighbourhood = mergeSimilarNeighbourhood
24 }
25
26 public static val FixPointRage = -1
27 public static val FullParallels = Integer.MAX_VALUE
28 public static val MaxNumbers = Integer.MAX_VALUE
29
30 /**
31 * Creates a neighbourhood representation with traces
32 * @param model The model to be represented.
33 * @param range The range of the neighbourhood.
34 * @param parallels The maximal number of parallel references to be differentiated.
35 */
36 def public createRepresentation(PartialInterpretation model, int range, int parallels, int maxNumber) {
37 return createRepresentation(model,range,parallels,maxNumber,null,null)
38 }
39
40 def public createRepresentation(
41 PartialInterpretation model,
42 int range, int parallels, int maxNumber,
43 Set<TypeDeclaration> relevantTypes, Set<RelationDeclaration> relevantRelations)
44 {
45 val Map<DefinedElement, Set<String>> types = new HashMap
46 fillTypes(model,types,relevantTypes)
47 val Map<DefinedElement, List<IncomingRelation<DefinedElement>>> IncomingRelations = new HashMap;
48 val Map<DefinedElement, List<OutgoingRelation<DefinedElement>>> OutgoingRelations = new HashMap;
49 fillReferences(model,IncomingRelations,OutgoingRelations,relevantRelations)
50
51 val res = doRecursiveNeighbourCalculation(model,types,IncomingRelations,OutgoingRelations,range,parallels,maxNumber);
52
53 return res;
54 }
55
56 def private isRelevant(TypeDeclaration t, Set<TypeDeclaration> relevantTypes) {
57 if(relevantTypes === null) {
58 return true
59 } else {
60 return relevantTypes.contains(t)
61 }
62 }
63 def private isRelevant(RelationDeclaration r, Set<RelationDeclaration> relevantRelations) {
64 if(relevantRelations === null) {
65 return true
66 } else {
67 return relevantRelations.contains(r)
68 }
69 }
70
71 /**
72 * Creates a neighbourhood representation with traces
73 * @param model The model to be represented.
74 * @param IncomingRelations Requires the previously indexed incoming references.
75 * @param OutgoingRelations Requires the previously indexed outgoing references.
76 * @param range The range of the neighbourhood.
77 * @param parallels The maximal number of parallel references to be differentiated.
78 */
79 def private NeighbourhoodWithTraces<ModelRepresentation,NodeRepresentation> doRecursiveNeighbourCalculation(
80 PartialInterpretation model,
81 Map<DefinedElement, Set<String>> types,
82 Map<DefinedElement, List<IncomingRelation<DefinedElement>>> IncomingRelations,
83 Map<DefinedElement, List<OutgoingRelation<DefinedElement>>> OutgoingRelations,
84 int range, int parallels, int maxNumber)
85 {
86 if(range == 0){
87 val r = calculateLocalNodeDescriptors(model,types,maxNumber)
88 val res = this.createLocalRepresentation(r.value,r.key)
89 if(res.modelRepresentation === null) {
90 throw new IllegalArgumentException('''Model representation is null''')
91 } else if(res.nodeRepresentations === null || res.nodeRepresentations.empty) {
92 throw new IllegalArgumentException('''No node representation''')
93 } else if(res.previousRepresentation !== null) {
94 throw new IllegalArgumentException('''The previous representation of the first neighbourhood have to be null''')
95 } else return res
96 } else if(range > 0) {
97 val previous = doRecursiveNeighbourCalculation(model,types,IncomingRelations,OutgoingRelations,range-1,parallels,maxNumber)
98 val r = calculateFurtherNodeDescriptors(model,previous,IncomingRelations,OutgoingRelations,parallels,maxNumber)
99 //println('''Level «range» finished.''')
100 val res = createFurtherRepresentation(r.key,r.value,previous,deepRepresentation)
101 if(res.modelRepresentation === null) {
102 throw new IllegalArgumentException('''Model representation is null''')
103 } else if(res.nodeRepresentations === null || res.nodeRepresentations.empty) {
104 throw new IllegalArgumentException('''No node representation''')
105 } else if(res.previousRepresentation === null && deepRepresentation) {
106 throw new IllegalArgumentException('''Need previous representations''')
107 } else return res
108 } else if (range == FixPointRage) {
109 return refineUntilFixpoint(model,types,IncomingRelations,OutgoingRelations,parallels,maxNumber)
110 }
111 }
112
113 def private refineUntilFixpoint(
114 PartialInterpretation model,
115 Map<DefinedElement, Set<String>> types,
116 Map<DefinedElement, List<IncomingRelation<DefinedElement>>> IncomingRelations,
117 Map<DefinedElement, List<OutgoingRelation<DefinedElement>>> OutgoingRelations,
118 int parallels, int maxNumbers)
119 {
120 var lastRange = 0
121 val last = calculateLocalNodeDescriptors(model,types,maxNumbers)
122 var lastRepresentation = this.createLocalRepresentation(last.value,last.key)
123 //println('''Level 0 finished.''')
124 var boolean hasRefined
125 do {
126 val nextRange = lastRange+1
127 val next = calculateFurtherNodeDescriptors(model,lastRepresentation,IncomingRelations,OutgoingRelations,parallels,maxNumbers)
128 val nextRepresentation = createFurtherRepresentation(next.key,next.value,lastRepresentation,deepRepresentation)
129
130 val previousNumberOfTypes =lastRepresentation.nodeRepresentations.values.toSet.size
131 val nextNumberOfTypes = nextRepresentation.nodeRepresentations.values.toSet.size
132 hasRefined = nextNumberOfTypes > previousNumberOfTypes
133
134 lastRange = nextRange
135 lastRepresentation = nextRepresentation
136
137// if(hasRefined) {
138// println('''Level «nextRange» is calculated, number of types is refined: «previousNumberOfTypes» -> «nextNumberOfTypes»''')
139// } else {
140// println('''Level «nextRange» is calculated, but the number of types is not refined: «previousNumberOfTypes» = «nextNumberOfTypes»''')
141// }
142 } while (hasRefined)
143 return lastRepresentation
144 }
145
146 def private getElements(PartialInterpretation model) {
147 return model.problem.elements + model.newElements
148 }
149
150 def private fillTypes(PartialInterpretation model, Map<DefinedElement, Set<String>> node2Type, Set<TypeDeclaration> relevantTypes) {
151 for(element : model.elements) {
152 node2Type.put(element, new HashSet)
153 }
154
155// for(typeDefinition : model.problem.types.filter(TypeDefinition)) {
156// // Dont need
157// }
158 for(typeInterpretation : model.partialtypeinterpratation) {
159 val type = typeInterpretation.interpretationOf
160 if(type.isRelevant(relevantTypes)) {
161 for(element : typeInterpretation.elements) {
162 element.lookup(node2Type).add(type.name)
163 }
164 }
165 }
166 }
167
168 /**
169 * Indexes the references
170 */
171 def private fillReferences(PartialInterpretation model,
172 Map<DefinedElement, List<IncomingRelation<DefinedElement>>> IncomingRelations,
173 Map<DefinedElement, List<OutgoingRelation<DefinedElement>>> OutgoingRelations,
174 Set<RelationDeclaration> relevantRelations)
175 {
176 for(object : model.elements) {
177 IncomingRelations.put(object,new LinkedList)
178 OutgoingRelations.put(object,new LinkedList)
179 }
180 for(relationInterpretation : model.partialrelationinterpretation) {
181 val type = relationInterpretation.interpretationOf
182 if(type.isRelevant(relevantRelations)) {
183 for(link : relationInterpretation.relationlinks) {
184 if(link instanceof BinaryElementRelationLink) {
185 OutgoingRelations.get(link.param1) += new OutgoingRelation(link.param2,type.name)
186 IncomingRelations.get(link.param2) += new IncomingRelation(link.param1,type.name)
187 } else throw new UnsupportedOperationException
188 }
189 }
190 }
191 }
192
193 /**
194 * Creates a local representation of the objects (aka zero range neighbourhood)
195 */
196 def abstract protected NeighbourhoodWithTraces<ModelRepresentation,NodeRepresentation> createLocalRepresentation(
197 Map<DefinedElement, LocalNodeDescriptor> node2Representation,
198 Map<LocalNodeDescriptor, Integer> representation2Amount
199 )
200
201 /**
202 * Creates a
203 */
204 def abstract protected NeighbourhoodWithTraces<ModelRepresentation,NodeRepresentation> createFurtherRepresentation(
205 Map<FurtherNodeDescriptor<NodeRepresentation>, Integer> nodeDescriptors,
206 Map<DefinedElement, FurtherNodeDescriptor<NodeRepresentation>> node2Representation,
207 NeighbourhoodWithTraces<ModelRepresentation,NodeRepresentation> previous,
208 boolean deepRepresentation
209 )
210
211 def private addOne(int original, int max) {
212 if(original == Integer.MAX_VALUE) return Integer.MAX_VALUE
213 if(original +1 > max) return Integer.MAX_VALUE
214 else return original+1
215 }
216
217 private def calculateIncomingEdges(Map<DefinedElement, List<IncomingRelation<DefinedElement>>> IncomingRelations,
218 DefinedElement object, Map<DefinedElement, ? extends NodeRepresentation> previousNodeRepresentations, int parallel)
219 {
220 val Map<IncomingRelation<NodeRepresentation>, Integer> res = new HashMap
221 for (incomingConcreteEdge : IncomingRelations.get(object)) {
222 val IncomingRelation<NodeRepresentation> e = new IncomingRelation(
223 previousNodeRepresentations.get(incomingConcreteEdge.from), incomingConcreteEdge.type)
224 if (res.containsKey(e)) {
225 res.put(e, addOne(res.get(e),parallel))
226 } else {
227 res.put(e, 1)
228 }
229 }
230 return res
231 }
232
233 private def calcuateOutgoingEdges(Map<DefinedElement,List<OutgoingRelation<DefinedElement>>> OutgoingRelations,
234 DefinedElement object, Map<DefinedElement, ? extends NodeRepresentation> previousNodeRepresentations, int parallel)
235 {
236 val Map<OutgoingRelation<NodeRepresentation>,Integer> res= new HashMap
237 for(outgoingConcreteEdge : OutgoingRelations.get(object)) {
238 val OutgoingRelation<NodeRepresentation> e =
239 new OutgoingRelation(
240 previousNodeRepresentations.get(outgoingConcreteEdge.to),
241 outgoingConcreteEdge.type)
242 if(res.containsKey(e)) {
243 res.put(e,addOne(res.get(e),parallel))
244 } else {
245 res.put(e,1)
246 }
247 }
248 return res;
249 }
250
251 /*def private <KEY,VALUE> void addOrCreate_Set(Map<KEY,Set<VALUE>> map, KEY key, VALUE value) {
252 var Set<VALUE> s;
253 if(map.containsKey(key)) {
254 s = map.get(key);
255 } else {
256 s = new HashSet
257 map.put(key,s)
258 }
259 s.add(value)
260 }*/
261
262
263 private def calculateFurtherNodeDescriptors(
264 PartialInterpretation model,
265 NeighbourhoodWithTraces<ModelRepresentation, NodeRepresentation> previous,
266 Map<DefinedElement, List<IncomingRelation<DefinedElement>>> IncomingRelations,
267 Map<DefinedElement, List<OutgoingRelation<DefinedElement>>> OutgoingRelations,
268 int parallels, int maxNumber)
269 {
270 val previousNodeRepresentations = previous.nodeRepresentations
271 val node2Representation = new HashMap<DefinedElement,FurtherNodeDescriptor<NodeRepresentation>>
272 val Map<FurtherNodeDescriptor<NodeRepresentation>,Integer> descriptor2Number =
273 if(this.mergeSimilarNeighbourhood){ new HashMap } else { null }
274 val Map<FurtherNodeDescriptor<NodeRepresentation>,FurtherNodeDescriptor<NodeRepresentation>> uniqueDescription =
275 if(this.mergeSimilarNeighbourhood){ new HashMap } else { null }
276
277 for(object: model.elements) {
278 val incomingEdges = this.calculateIncomingEdges(IncomingRelations, object, previousNodeRepresentations,parallels)
279 val outgoingEdges = this.calcuateOutgoingEdges(OutgoingRelations,object, previousNodeRepresentations,parallels)
280
281 val previousType = previousNodeRepresentations.get(object)
282
283 if(previousType === null) {
284 println("Error in state coder")
285 }
286
287 val nodeDescriptor = new FurtherNodeDescriptor(
288 previousType,
289 incomingEdges,
290 outgoingEdges)
291
292 if(this.mergeSimilarNeighbourhood) {
293 if(descriptor2Number.containsKey(nodeDescriptor)) {
294 descriptor2Number.put(
295 nodeDescriptor,
296 addOne(descriptor2Number.get(nodeDescriptor),maxNumber)
297 )
298 node2Representation.put(object,uniqueDescription.get(nodeDescriptor))
299 } else {
300 descriptor2Number.put(nodeDescriptor,1)
301 uniqueDescription.put(nodeDescriptor,nodeDescriptor)
302 node2Representation.put(object,nodeDescriptor)
303 }
304 } else {
305 node2Representation.put(object,nodeDescriptor)
306 }
307 }
308
309 return descriptor2Number -> node2Representation
310 }
311
312 private def calculateLocalNodeDescriptors(
313 PartialInterpretation model,
314 Map<DefinedElement, Set<String>> types,
315 int maxNumber)
316 {
317 val Map<DefinedElement, LocalNodeDescriptor> node2Representation = new HashMap
318 val Map<LocalNodeDescriptor, Integer> representation2Amount =
319 if(mergeSimilarNeighbourhood){ new HashMap } else { null }
320 val Map<LocalNodeDescriptor, LocalNodeDescriptor> uniqueRepresentation =
321 if(this.mergeSimilarNeighbourhood){ new HashMap } else { null }
322
323 for(element : model.elements) {
324 var newDescriptor = new LocalNodeDescriptor(element.name,element.lookup(types))
325 if(this.mergeSimilarNeighbourhood){
326 if(uniqueRepresentation.containsKey(newDescriptor)) {
327 newDescriptor = newDescriptor.lookup(uniqueRepresentation)
328 node2Representation.put(element,newDescriptor)
329 representation2Amount.put(
330 newDescriptor,
331 addOne(newDescriptor.lookup(representation2Amount),maxNumber)
332 )
333 } else {
334 uniqueRepresentation.put(newDescriptor,newDescriptor)
335 node2Representation.put(element,newDescriptor)
336 representation2Amount.put(newDescriptor, 1)
337 }
338 } else {
339 node2Representation.put(element,newDescriptor)
340 }
341 }
342
343 return representation2Amount -> node2Representation
344 }
345} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/IdentifierBasedStateCoderFactory.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/IdentifierBasedStateCoderFactory.xtend
new file mode 100644
index 00000000..c421ace6
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/IdentifierBasedStateCoderFactory.xtend
@@ -0,0 +1,129 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
4import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation
8import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation
9import java.util.ArrayList
10import java.util.Comparator
11import java.util.LinkedList
12import java.util.List
13import java.util.SortedSet
14import java.util.TreeSet
15import org.eclipse.emf.common.notify.Notifier
16import org.eclipse.viatra.dse.statecode.IStateCoder
17import org.eclipse.viatra.dse.statecode.IStateCoderFactory
18import org.eclipse.viatra.query.runtime.api.IPatternMatch
19import org.eclipse.xtend.lib.annotations.Accessors
20import org.eclipse.xtend.lib.annotations.Data
21
22class IdentifierBasedStateCoderFactory implements IStateCoderFactory{
23
24 val List<IdentifierBasedStateCoder> statecoders = new LinkedList
25 synchronized override createStateCoder() {
26 val res = new IdentifierBasedStateCoder
27 statecoders += res
28 return res
29 }
30 def getSumStatecoderRuntime() {
31 statecoders.map[statecoderRuntime].reduce[p1, p2|p1+p2]
32 }
33}
34
35@Data
36class RelationStatecoder {
37 String relationName
38 SortedSet<Pair<Integer,Integer>> links;
39
40 static val comparator= new Comparator<Pair<Integer,Integer>>() {
41 override compare(Pair<Integer, Integer> o1, Pair<Integer, Integer> o2) {
42 if(o1.key > o2.key) {
43 return 1
44 } else if(o1.key < o2.key) {
45 return -1
46 } else {
47 return Integer.compare(o1.value,o2.value)
48 }
49 }
50 }
51
52 new(String relationName) {
53 this.relationName = relationName
54 links = new TreeSet(comparator)
55 }
56}
57
58@Data
59class IdentifierBasedStateCode {
60 int numberOfNewElement
61 SortedSet<RelationStatecoder> relationStatecoders
62
63 private static val comparator = new Comparator<RelationStatecoder>() {
64 override compare(RelationStatecoder o1, RelationStatecoder o2) {
65 o1.relationName.compareTo(o2.relationName)
66 }
67 }
68
69 public new(int numberOfNewElements) {
70 this.numberOfNewElement = numberOfNewElements
71 this.relationStatecoders = new TreeSet(comparator)
72 }
73}
74
75class IdentifierBasedStateCoder implements IStateCoder{
76 var PartialInterpretation model = null
77
78 @Accessors(PUBLIC_GETTER) var long statecoderRuntime = 0
79
80 override createActivationCode(IPatternMatch match) {
81 val startTime = System.nanoTime
82 val res = new ArrayList(match.parameterNames.size)
83 var index = 0
84 while(index < match.parameterNames.size) {
85 res.add(getID(match.get(index)))
86 index++
87 }
88 statecoderRuntime += (System.nanoTime - startTime)
89 return match.specification.fullyQualifiedName -> res
90 }
91
92 override createStateCode() {
93 val startTime = System.nanoTime
94 val res = new IdentifierBasedStateCode(model.newElements.size)
95 for(relation : model.partialrelationinterpretation) {
96 val relationCoder = new RelationStatecoder(relation.interpretationOf.name)
97 for(link: relation.relationlinks.filter(BinaryElementRelationLink)) {
98 relationCoder.links+=link.param1.ID -> link.param2.ID
99 }
100 res.relationStatecoders+=relationCoder
101 }
102 statecoderRuntime += (System.nanoTime - startTime)
103 return res
104 }
105
106 def getID(Object element) {
107 if(element instanceof DefinedElement) {
108 val container = element.eContainer
109 if(container instanceof LogicProblem) {
110 return -container.elements.indexOf(element)-1
111 } else if(container instanceof PartialInterpretation){
112 return container.newElements.indexOf(element)+1
113 }
114 } else if(element instanceof PartialInterpretation || element instanceof LogicProblem) {
115 return 0
116 } else if(element instanceof PartialRelationInterpretation) {
117 return element.interpretationOf.name.hashCode
118 } else if(element instanceof PartialTypeInterpratation) {
119 return element.interpretationOf.name.hashCode
120 } else {
121 println(element)
122 throw new UnsupportedOperationException('''Unsupported type: «element.class.simpleName»''')
123 }
124 }
125
126 override init(Notifier notifier) {
127 model = notifier as PartialInterpretation
128 }
129} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/NeighbourhoodBasedStateCoderFactory.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/NeighbourhoodBasedStateCoderFactory.xtend
new file mode 100644
index 00000000..5fb85b0c
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/statecoder/NeighbourhoodBasedStateCoderFactory.xtend
@@ -0,0 +1,206 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder
2
3import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.AbstractNodeDescriptor
4import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.PartialInterpretation2ImmutableTypeLattice
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage
7import java.util.ArrayList
8import java.util.LinkedList
9import java.util.List
10import java.util.Map
11import org.eclipse.emf.common.notify.Notifier
12import org.eclipse.emf.ecore.EClass
13import org.eclipse.emf.ecore.EObject
14import org.eclipse.emf.ecore.EStructuralFeature
15import org.eclipse.viatra.dse.statecode.IStateCoder
16import org.eclipse.viatra.dse.statecode.IStateCoderFactory
17import org.eclipse.viatra.query.runtime.api.IPatternMatch
18import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine
19import org.eclipse.viatra.query.runtime.base.api.FeatureListener
20import org.eclipse.viatra.query.runtime.base.api.IndexingLevel
21import org.eclipse.viatra.query.runtime.base.api.InstanceListener
22import org.eclipse.viatra.query.runtime.emf.EMFBaseIndexWrapper
23import org.eclipse.viatra.query.runtime.emf.EMFScope
24import org.eclipse.xtend.lib.annotations.Accessors
25import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
26import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
27import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialTypeInterpratation
28import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation
29import java.util.Set
30import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
31import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
32import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.PartialInterpretation2NeighbourhoodRepresentation
33
34class NeighbourhoodBasedStateCoderFactory implements IStateCoderFactory {
35 val List<NeighbourhoodBasedPartialInterpretationStateCoder> statecoders = new LinkedList
36
37 val int range
38 val int parallels
39 val int maxNumber
40 val Set<TypeDeclaration> relevantTypes
41 val Set<RelationDeclaration> relevantRelations
42
43 public new() {
44 this.range = PartialInterpretation2NeighbourhoodRepresentation::FixPointRage
45 this.parallels = PartialInterpretation2NeighbourhoodRepresentation::FullParallels
46 this.maxNumber = PartialInterpretation2NeighbourhoodRepresentation::MaxNumbers
47 this.relevantTypes = null
48 this.relevantRelations = null
49 }
50
51 public new(int range, int parallels, int maxNumber, Set<TypeDeclaration> relevantTypes, Set<RelationDeclaration> relevantRelations) {
52 this.range = range
53 this.parallels = parallels
54 this.maxNumber = maxNumber
55 this.relevantTypes = relevantTypes
56 this.relevantRelations = relevantRelations
57 }
58
59 synchronized override createStateCoder() {
60 val res = new NeighbourhoodBasedPartialInterpretationStateCoder(statecoders.size,
61 range,parallels,maxNumber,relevantTypes,relevantRelations)
62 statecoders += res
63 return res
64 }
65 def getSumStatecoderRuntime() {
66 statecoders.map[statecoderRuntime].reduce[p1, p2|p1+p2]
67 }
68}
69
70class NeighbourhoodBasedPartialInterpretationStateCoder implements IStateCoder{
71 val int id;
72 val int range
73 val int parallels
74 val int maxNumber
75 val Set<TypeDeclaration> relevantTypes
76 val Set<RelationDeclaration> relevantRelations
77
78 val calculator =
79 new PartialInterpretation2ImmutableTypeLattice
80 var PartialInterpretation target
81
82 private var Map<DefinedElement, ? extends AbstractNodeDescriptor> nodeRepresentations = null
83 private var Map<? extends AbstractNodeDescriptor, Integer> modelRepresentation = null
84
85 /*public new(int id) {
86 this.id = id
87 this.range = PartialInterpretation2NeighbourhoodRepresentation::FixPointRage
88 this.parallels = PartialInterpretation2NeighbourhoodRepresentation::FullParallels
89 this.maxNumber = maxNumber = PartialInterpretation2NeighbourhoodRepresentation::MaxNumbers
90 this.relevantTypes = relevantTypes
91 this.relevantRelations = relevantRelations
92 }*/
93
94 public new(int id, int range, int parallels, int maxNumber, Set<TypeDeclaration> relevantTypes, Set<RelationDeclaration> relevantRelations) {
95 this.id = id
96 this.range = range
97 this.parallels = parallels
98 this.maxNumber = maxNumber
99 this.relevantTypes = relevantTypes
100 this.relevantRelations = relevantRelations
101 }
102
103 @Accessors(PUBLIC_GETTER) var long statecoderRuntime = 0
104
105// val range = -1
106// val par = Integer.MAX_VALUE
107 //val deeprepresentation = false
108
109 /////////
110 // Caching version
111 /////////
112 synchronized private def refreshStateCodes() {
113 if(this.nodeRepresentations === null || this.modelRepresentation === null) {
114 val startTime = System.nanoTime
115 //relevantObjects.forEach[println(it)]
116 val code = calculator.createRepresentation(target,range,parallels,maxNumber,relevantTypes,relevantRelations)
117 this.modelRepresentation = code.modelRepresentation
118 this.nodeRepresentations = code.nodeRepresentations
119 statecoderRuntime += (System.nanoTime - startTime)
120 }
121 }
122 synchronized override createActivationCode(IPatternMatch match) {
123 refreshStateCodes
124
125 val startTime = System.nanoTime
126 val size = match.specification.parameters.size
127 val res = new ArrayList(size)
128 var int index = 0
129 while(index < size) {
130 res.add(getCode(match.get(index)))
131 index++
132 }
133 statecoderRuntime += (System.nanoTime - startTime)
134 return match.specification.fullyQualifiedName->res.hashCode
135 }
136
137 def private getCode(Object o) {
138 if(o instanceof DefinedElement) {
139 this.nodeRepresentations.get(o)
140 } else if(o instanceof PartialInterpretation || o instanceof LogicProblem) {
141 return null
142 } else if(o instanceof PartialRelationInterpretation) {
143 return o.interpretationOf.name
144 } else if(o instanceof PartialTypeInterpratation) {
145 return o.interpretationOf.name
146 } else {
147 throw new UnsupportedOperationException('''Unsupported type: «o.class.simpleName»''')
148 }
149 }
150
151 synchronized override createStateCode() {
152 refreshStateCodes
153 return this.modelRepresentation.hashCode
154 }
155 /////////
156 // Caching version
157 /////////
158
159 /////////
160 // Recalculating version
161 /////////
162// synchronized override createActivationCode(IPatternMatch match) {
163// val nodes = calculator.createRepresentation(getRelevantObjects().toList,range,par).nodeRepresentations
164// val res = match.toArray.map[objectInMatch |
165// nodes.get(objectInMatch)
166// ]
167// return res
168// }
169//
170// override createStateCode() {
171// return this.calculator.createRepresentation(getRelevantObjects().toList,range,par).modelRepresentation
172// }
173 /////////
174 // Recalculating version
175 /////////
176
177 override init(Notifier notifier) {
178 this.target = notifier as PartialInterpretation
179 val queryEngine = ViatraQueryEngine.on(new EMFScope(notifier))
180 val baseIndex = queryEngine.getBaseIndex() as EMFBaseIndexWrapper
181 val navigationHelper = baseIndex.getNavigationHelper();
182
183 val classes = PartialinterpretationPackage.eINSTANCE.EClassifiers.filter(EClass).toSet
184 val features = classes.map[it.EAllStructuralFeatures].flatten.toSet
185 navigationHelper.registerObservedTypes(
186 classes,
187 null,
188 features,
189 IndexingLevel.FULL);
190
191
192 navigationHelper.addFeatureListener(features, new FeatureListener() {
193 override public void featureInserted(EObject host, EStructuralFeature feature, Object value) { invalidate }
194 override public void featureDeleted(EObject host, EStructuralFeature feature, Object value) { invalidate }
195 });
196 navigationHelper.addInstanceListener(classes, new InstanceListener() {
197 override public void instanceInserted(EClass clazz, EObject instance) { invalidate }
198 override public void instanceDeleted(EClass clazz, EObject instance) { invalidate }
199 });
200 }
201
202 synchronized def public invalidate() {
203 this.nodeRepresentations = null
204 this.modelRepresentation = null
205 }
206}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/visualisation/PartialInterpretation2Gml.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/visualisation/PartialInterpretation2Gml.xtend
new file mode 100644
index 00000000..819cae00
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/visualisation/PartialInterpretation2Gml.xtend
@@ -0,0 +1,136 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation
2
3import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
5import java.util.Map
6import java.util.HashMap
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation
10import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
11import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
12import java.util.Set
13
14class PartialInterpretation2Gml {
15 def public transform(PartialInterpretation i) {
16 val p = i.problem
17 val Map<DefinedElement, Integer> objectToID = new HashMap
18 val containmentRelations = p.containmentHierarchies.map[it.containmentRelations].flatten.toSet
19 '''
20 graph
21 [
22 «FOR object:p.elements + i.newElements SEPARATOR '\n'»
23 «this.transformObject(object,object.typesOfElement(i),objectToID)»
24 «ENDFOR»
25 «FOR relation:i.partialrelationinterpretation»
26 «FOR link:relation.relationlinks.filter(BinaryElementRelationLink)»
27 «transformLink(relation,link,objectToID,containmentRelations)»
28 «ENDFOR»
29 «ENDFOR»
30 ]
31 '''.toString
32 }
33 def typesOfElement(DefinedElement e, PartialInterpretation i) {
34 i.problem.types.filter(TypeDefinition).filter[it.elements.contains(e)] +
35 i.partialtypeinterpratation.filter[it.elements.contains(e)].map[it.interpretationOf]
36 }
37
38 val protected titleSize = 16
39 val protected attributeSize = 14
40 val protected borderDistance = 6
41 val protected attributeBorderDistance = 8
42 val protected ratio = 11.0/20.0
43
44 def protected transformObject(DefinedElement object,Iterable<Type> types,Map<DefinedElement, Integer> objectToID){
45 val title = object.transormTitle
46 val attributes = types.map[it.name]
47
48 var double width = title.length*titleSize + borderDistance*2;
49 for(x:attributes.map[length*attributeSize + borderDistance*2 + attributeBorderDistance*2])
50 width = Math::max(width,x)
51 width = width*ratio
52
53 val height = Math::max(
54 titleSize+4,
55 (attributes.size+1)*attributeSize + borderDistance*2)
56
57 val id = objectToID.size
58 objectToID.put(object,id)
59
60 '''
61 node
62 [
63 id «id»
64 graphics
65 [
66 w «width»
67 h «height»
68 type "rectangle"
69 fill "#FFFFFF"
70 fill2 "#FFFFFF"
71 outline "#000000"
72 ]
73 LabelGraphics
74 [
75 text "«title»"
76 outline "#000000"
77 fill "#FFFFFF"
78 fontSize «titleSize»
79 fontName "Monospace"
80 autoSizePolicy "node_width"
81 anchor "t"
82 borderDistance 0.0
83 ]
84 LabelGraphics
85 [
86 text "
87 «FOR attribute : attributes»
88 «attribute»
89 «ENDFOR»"
90 fontSize «attributeSize»
91 fontName "Consolas"
92 alignment "left"
93 anchor "tl"
94 borderDistance «borderDistance»
95 ]
96 ]
97 '''
98 }
99
100 def protected transormTitle(DefinedElement object) {
101 if(object.name!= null)object.name
102 else "null"
103 }
104
105 def protected transformLink(
106 PartialRelationInterpretation reference,
107 BinaryElementRelationLink link,
108 Map<DefinedElement, Integer> objectToID,
109 Set<Relation> containmentRelations)
110 {
111 '''
112 edge
113 [
114 source «objectToID.get(link.param1)»
115 target «objectToID.get(link.param2)»
116 graphics
117 [
118 fill "#000000"
119 «IF containmentRelations.contains(reference.interpretationOf)»
120 width 3
121 «ENDIF»
122 targetArrow "standard"
123 ]
124 LabelGraphics
125 [
126 text "«reference.interpretationOf.name»"
127 fontSize 14
128 fontName "Consolas"
129 configuration "AutoFlippingLabel"
130 model "six_pos"
131 position "thead"
132 ]
133 ]
134 '''
135 }
136} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.classpath b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.classpath
new file mode 100644
index 00000000..2b46fc9b
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.classpath
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
4 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
5 <classpathentry kind="src" path="src"/>
6 <classpathentry kind="src" path="xtend-gen"/>
7 <classpathentry kind="src" path="src-gen/"/>
8 <classpathentry kind="output" path="bin"/>
9</classpath>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.gitignore b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.gitignore
new file mode 100644
index 00000000..b33f6aff
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.gitignore
@@ -0,0 +1,2 @@
1/bin/
2/xtend-gen/
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.project b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.project
new file mode 100644
index 00000000..712083e9
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.project
@@ -0,0 +1,34 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.jdt.core.javabuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.pde.ManifestBuilder</name>
20 <arguments>
21 </arguments>
22 </buildCommand>
23 <buildCommand>
24 <name>org.eclipse.pde.SchemaBuilder</name>
25 <arguments>
26 </arguments>
27 </buildCommand>
28 </buildSpec>
29 <natures>
30 <nature>org.eclipse.pde.PluginNature</nature>
31 <nature>org.eclipse.jdt.core.javanature</nature>
32 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
33 </natures>
34</projectDescription>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.settings/org.eclipse.jdt.core.prefs b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..295926d9
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
1eclipse.preferences.version=1
2org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4org.eclipse.jdt.core.compiler.compliance=1.8
5org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/META-INF/MANIFEST.MF b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..bc965aa4
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: Reasoner
4Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner
5Bundle-Version: 1.0.0.qualifier
6Export-Package: hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner
7Require-Bundle: hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0",
8 hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0",
9 hu.bme.mit.inf.dslreasoner.viatra2logic;bundle-version="1.0.0",
10 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatraquery;bundle-version="1.0.0",
11 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;bundle-version="1.0.0",
12 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic;bundle-version="1.0.0",
13 com.google.guava,
14 org.eclipse.xtext.xbase.lib,
15 org.eclipse.xtend.lib,
16 org.eclipse.xtend.lib.macro,
17 org.eclipse.viatra.query.runtime.matchers;bundle-version="1.5.0",
18 org.eclipse.viatra.query.runtime;bundle-version="1.5.0",
19 org.eclipse.viatra.dse;bundle-version="0.15.0",
20 org.eclipse.viatra.dse.genetic;bundle-version="0.15.0",
21 org.eclipse.emf.ecore.edit;bundle-version="2.9.0"
22Bundle-RequiredExecutionEnvironment: JavaSE-1.8
23Import-Package: org.apache.log4j
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/build.properties b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/build.properties
new file mode 100644
index 00000000..aed85a48
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/build.properties
@@ -0,0 +1,5 @@
1bin.includes = META-INF/,\
2 .
3source.. = src/,\
4 src-gen/
5output.. = bin/
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ModelGenerationMethodBasedGlobalConstraint.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ModelGenerationMethodBasedGlobalConstraint.xtend
new file mode 100644
index 00000000..28cf986d
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ModelGenerationMethodBasedGlobalConstraint.xtend
@@ -0,0 +1,11 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner
2
3import org.eclipse.viatra.dse.objectives.IGlobalConstraint
4import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethod
5
6abstract class ModelGenerationMethodBasedGlobalConstraint implements IGlobalConstraint {
7 val protected ModelGenerationMethod method
8 new(ModelGenerationMethod method) {
9 this.method = method
10 }
11} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend
new file mode 100644
index 00000000..38cc9459
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend
@@ -0,0 +1,205 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner
2
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner
4import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException
5import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage
7import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
8import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage
9import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicresultFactory
10import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult
11import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider
12import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.PartialInterpretationInitialiser
13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage
14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder.IdentifierBasedStateCoderFactory
15import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder.NeighbourhoodBasedStateCoderFactory
16import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.BestFirstStrategyForModelGeneration
17import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.ModelGenerationCompositeObjective
18import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.PartialModelAsLogicInterpretation
19import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.ScopeObjective
20import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.UnfinishedMultiplicityObjective
21import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.UnfinishedWFObjective
22import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.WF2ObjectiveConverter
23import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
24import org.eclipse.viatra.dse.api.DesignSpaceExplorer
25import org.eclipse.viatra.dse.api.DesignSpaceExplorer.DseLoggingLevel
26import org.eclipse.viatra.dse.solutionstore.SolutionStore
27import org.eclipse.viatra.dse.statecode.IStateCoderFactory
28
29class ViatraReasoner extends LogicReasoner{
30 val PartialInterpretationInitialiser initialiser = new PartialInterpretationInitialiser()
31 val ModelGenerationMethodProvider modelGenerationMethodProvider = new ModelGenerationMethodProvider
32 val extension LogicresultFactory factory = LogicresultFactory.eINSTANCE
33 val WF2ObjectiveConverter wf2ObjectiveConverter = new WF2ObjectiveConverter
34
35 val LogicReasoner inconsistencyDetector
36
37 public new() {
38 this.inconsistencyDetector=null
39 }
40
41 public new(LogicReasoner inconsistencyDetector) {
42 this.inconsistencyDetector = inconsistencyDetector
43 }
44
45 override solve(LogicProblem problem, LogicSolverConfiguration configuration, ReasonerWorkspace workspace) throws LogicReasonerException {
46 val viatraConfig = configuration.asConfig
47 val DesignSpaceExplorer dse = new DesignSpaceExplorer();
48
49 /*
50 DesignSpaceExplorer.turnOnLogging(DseLoggingLevel.VERBOSE_FULL)
51 /*/
52 DesignSpaceExplorer.turnOnLogging(DseLoggingLevel.WARN)
53 //*/
54
55 dse.addMetaModelPackage(LogiclanguagePackage.eINSTANCE)
56 dse.addMetaModelPackage(LogicproblemPackage.eINSTANCE)
57 dse.addMetaModelPackage(PartialinterpretationPackage.eINSTANCE)
58
59 val transformationStartTime = System.nanoTime
60
61 val emptySolution = initialiser.initialisePartialInterpretation(problem,
62 viatraConfig.typeScopes.minNewElements,
63 viatraConfig.typeScopes.maxNewElements).output
64 emptySolution.problemConainer = problem
65
66 val method = modelGenerationMethodProvider.createModelGenerationMethod(
67 problem,
68 emptySolution,
69 viatraConfig.existingQueries,
70 workspace,
71 viatraConfig.nameNewElements,
72 viatraConfig.typeInferenceMethod
73 )
74
75 dse.addObjective(new ModelGenerationCompositeObjective(
76 new ScopeObjective,
77 method.unfinishedMultiplicities.map[new UnfinishedMultiplicityObjective(it)],
78 new UnfinishedWFObjective(method.unfinishedWF)
79 ))
80
81 dse.addGlobalConstraint(wf2ObjectiveConverter.createInvalidationObjective(method.invalidWF))
82 for(additionalConstraint : configuration.asConfig.additionalGlobalConstraints) {
83 dse.addGlobalConstraint(additionalConstraint.apply(method))
84 }
85
86 dse.setInitialModel(emptySolution)
87
88 var IStateCoderFactory statecoder = if(viatraConfig.stateCoderStrategy == StateCoderStrategy.Neighbourhood) {
89 new NeighbourhoodBasedStateCoderFactory
90 } else {
91 new IdentifierBasedStateCoderFactory
92 }
93 dse.stateCoderFactory = statecoder
94
95 dse.maxNumberOfThreads = 1
96
97 val solutionStore = new SolutionStore(configuration.solutionScope.numberOfRequiredSolution)
98 dse.solutionStore = solutionStore
99
100 for(rule : method.relationRefinementRules) {
101 dse.addTransformationRule(rule)
102 }
103 for(rule : method.objectRefinementRules) {
104 dse.addTransformationRule(rule)
105 }
106
107 val strategy = new BestFirstStrategyForModelGeneration(
108 workspace,inconsistencyDetector,
109 viatraConfig.inconsistencDetectorConfiguration,
110 viatraConfig.diversityRequirement)
111
112 val transformationTime = System.nanoTime - transformationStartTime
113 val solverStartTime = System.nanoTime
114 var boolean stoppedByTimeout
115 var boolean stoppedByException
116 try{
117 stoppedByTimeout = dse.startExplorationWithTimeout(strategy,configuration.runtimeLimit*1000);
118 stoppedByException = false
119 } catch (NullPointerException npe) {
120 stoppedByTimeout = false
121 stoppedByException = true
122 }
123
124 val solverTime = System.nanoTime - solverStartTime
125
126 val statecoderFinal = statecoder
127 val statistics = createStatistics => [
128 //it.solverTime = viatraConfig.runtimeLimit
129 it.solverTime = (solverTime/1000000) as int
130 it.transformationTime = (transformationTime/1000000) as int
131 it.entries += createIntStatisticEntry => [
132 it.name = "TransformationExecutionTime" it.value = (method.statistics.transformationExecutionTime/1000000) as int
133 ]
134 it.entries += createIntStatisticEntry => [
135 it.name = "TypeAnalysisTime" it.value = (method.statistics.PreliminaryTypeAnalisisTime/1000000) as int
136 ]
137 it.entries += createIntStatisticEntry => [
138 it.name = "StateCoderTime" it.value = (statecoderFinal.runtime/1000000) as int
139 ]
140 it.entries += createIntStatisticEntry => [
141 it.name = "StateCoderFailCount" it.value = strategy.numberOfStatecoderFaiL
142 ]
143 it.entries += createIntStatisticEntry => [
144 it.name = "SolutionCopyTime" it.value = (strategy.solutionStoreWithCopy.sumRuntime/1000000) as int
145 ]
146 if(strategy.solutionStoreWithDiversityDescriptor.isActive) {
147 it.entries += createIntStatisticEntry => [
148 it.name = "SolutionDiversityCheckTime" it.value = (strategy.solutionStoreWithDiversityDescriptor.sumRuntime/1000000) as int
149 ]
150 it.entries += createRealStatisticEntry => [
151 it.name = "SolutionDiversitySuccessRate" it.value = strategy.solutionStoreWithDiversityDescriptor.successRate
152 ]
153 }
154 ]
155
156 if(stoppedByTimeout) {
157 return createInsuficientResourcesResult=>[
158 it.problem = problem
159 it.resourceName="time"
160 it.statistics = statistics
161 ]
162 } else {
163 if(solutionStore.solutions.empty) {
164 return createInconsistencyResult => [
165 it.problem = problem
166 it.statistics = statistics
167 ]
168 } else {
169
170 /*solutionStore.solutions.head.trajectories.head
171 solutionTrajectory.doTransformation(emptySolution)
172 *
173 */
174 return factory.createModelResult => [
175 it.problem = problem
176 it.trace = null
177 it.representation += strategy.solutionStoreWithCopy.solutions
178 it.statistics = statistics
179 ]
180 }
181 }
182 }
183
184 /*private def simpleWeithts(List<IObjective> objectives) {
185 objectives.map[1.0].toList
186 }*/
187
188 private def dispatch long runtime(NeighbourhoodBasedStateCoderFactory sc) {
189 sc.sumStatecoderRuntime
190 }
191
192 private def dispatch long runtime(IdentifierBasedStateCoderFactory sc) {
193 sc.sumStatecoderRuntime
194 }
195
196 override getInterpretation(ModelResult modelResult) {
197 return new PartialModelAsLogicInterpretation
198 }
199
200 def ViatraReasonerConfiguration asConfig(LogicSolverConfiguration configuration) {
201 if(configuration instanceof ViatraReasonerConfiguration) {
202 return configuration
203 } else throw new IllegalArgumentException('''Wrong configuration. Expected: «ViatraReasonerConfiguration.name», but got: «configuration.class.name»"''')
204 }
205}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend
new file mode 100644
index 00000000..d638dd71
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend
@@ -0,0 +1,42 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner
2
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethod
7import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeInferenceMethod
8import java.util.LinkedList
9import java.util.List
10import java.util.Set
11import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
12import org.eclipse.xtext.xbase.lib.Functions.Function1
13
14public enum StateCoderStrategy {
15 Neighbourhood, NeighbourhoodWithEquivalence, IDBased, DefinedByDiversity
16}
17
18class ViatraReasonerConfiguration extends LogicSolverConfiguration{
19 public var Iterable<PQuery> existingQueries
20 public var LogicSolverConfiguration inconsistencDetectorConfiguration = null
21 public var List<Function1<ModelGenerationMethod,ModelGenerationMethodBasedGlobalConstraint>> additionalGlobalConstraints = new LinkedList
22 int maxDepth = -1
23
24 public var TypeInferenceMethod typeInferenceMethod = TypeInferenceMethod.Generic
25
26 public var nameNewElements = false
27 public var StateCoderStrategy stateCoderStrategy = StateCoderStrategy.Neighbourhood
28
29 /**
30 * Describes the required diversity between the solutions.
31 * Null means that the solutions have to have different state codes only.
32 */
33 public var DiversityDescriptor diversityRequirement = null
34}
35
36public class DiversityDescriptor {
37 public var int range = -1
38 public var int parallels = Integer.MAX_VALUE
39 public var int maxNumber = Integer.MAX_VALUE
40 public var Set<TypeDeclaration> relevantTypes
41 public var Set<RelationDeclaration> relevantRelations
42} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/diversity/StateCodeCoverageComparator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/diversity/StateCodeCoverageComparator.xtend
new file mode 100644
index 00000000..9a9446ba
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/diversity/StateCodeCoverageComparator.xtend
@@ -0,0 +1,8 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.diversity
2
3abstract class StateCodeCoverageComparator<StateCodeType>{
4 def public boolean covers(Object superStateCode, Object subStateCode) {
5 return innerCover(superStateCode as StateCodeType, subStateCode as StateCodeType)
6 }
7 abstract def protected boolean innerCover(StateCodeType superStateCode, StateCodeType subStateCode)
8} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java
new file mode 100644
index 00000000..5a6fee2c
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java
@@ -0,0 +1,372 @@
1/*******************************************************************************
2 * Copyright (c) 2010-2017, Andras Szabolcs Nagy and Daniel Varro
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 * Contributors:
8 * Andras Szabolcs Nagy - initial API and implementation
9 *******************************************************************************/
10package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse;
11
12import java.util.ArrayList;
13import java.util.Arrays;
14import java.util.Collections;
15import java.util.Comparator;
16import java.util.Iterator;
17import java.util.List;
18import java.util.PriorityQueue;
19import java.util.Random;
20
21import org.apache.log4j.Logger;
22import org.eclipse.viatra.dse.api.strategy.interfaces.IStrategy;
23import org.eclipse.viatra.dse.base.ThreadContext;
24import org.eclipse.viatra.dse.objectives.Fitness;
25import org.eclipse.viatra.dse.objectives.ObjectiveComparatorHelper;
26import org.eclipse.viatra.dse.solutionstore.SolutionStore;
27
28import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner;
29import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration;
30import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult;
31import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.PartialInterpretation2Logic;
32import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation;
33import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml;
34import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.DiversityDescriptor;
35import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace;
36
37/**
38 * This exploration strategy eventually explorers the whole design space but goes in the most promising directions
39 * first, based on the {@link Fitness}.
40 *
41 * There are a few parameter to tune such as
42 * <ul>
43 * <li>maximum depth</li>
44 * <li>continue the exploration from a state that satisfies the hard objectives (the default that it will
45 * backtrack),</li>
46 * <li>whether to continue the exploration from the newly explored state if it is at least equally good than the
47 * previous one or only if it is better (default is "at least equally good").</li>
48 * </ul>
49 *
50 * @author Andras Szabolcs Nagy
51 *
52 */
53public class BestFirstStrategyForModelGeneration implements IStrategy {
54
55 private ThreadContext context;
56 private SolutionStore solutionStore;
57 private SolutionStoreWithCopy solutionStoreWithCopy;
58 private SolutionStoreWithDiversityDescriptor solutionStoreWithDiversityDescriptor;
59 private int numberOfStatecoderFail=0;
60
61 private int maxDepth = Integer.MAX_VALUE;
62 private boolean isInterrupted = false;
63 //private boolean backTrackIfSolution = true;
64 private boolean onlyBetterFirst = false;
65
66 private PriorityQueue<TrajectoryWithFitness> trajectoiresToExplore;
67 private Logger logger = Logger.getLogger(IStrategy.class);
68
69 private static class TrajectoryWithFitness {
70
71 public Object[] trajectory;
72 public Fitness fitness;
73
74 public TrajectoryWithFitness(Object[] trajectory, Fitness fitness) {
75 super();
76 this.trajectory = trajectory;
77 this.fitness = fitness;
78 }
79
80 @Override
81 public String toString() {
82 return Arrays.toString(trajectory) + fitness.toString();
83 }
84
85 }
86
87 public BestFirstStrategyForModelGeneration(ReasonerWorkspace workspace, LogicReasoner reasoner, LogicSolverConfiguration configuration, DiversityDescriptor descriptor) {
88 this.maxDepth = Integer.MAX_VALUE;
89 this.workspace = workspace;
90 this.reasoner = reasoner;
91 this.configuration = configuration;
92 this.solutionStoreWithDiversityDescriptor = new SolutionStoreWithDiversityDescriptor(descriptor);
93 }
94
95 @Override
96 public void initStrategy(ThreadContext context) {
97 this.context = context;
98 this.solutionStore = context.getGlobalContext().getSolutionStore();
99 this.solutionStoreWithCopy = new SolutionStoreWithCopy();
100
101
102 final ObjectiveComparatorHelper objectiveComparatorHelper = context.getObjectiveComparatorHelper();
103
104 Comparator<TrajectoryWithFitness> comparator = new Comparator<BestFirstStrategyForModelGeneration.TrajectoryWithFitness>() {
105
106 @Override
107 public int compare(TrajectoryWithFitness o1, TrajectoryWithFitness o2) {
108 return objectiveComparatorHelper.compare(o2.fitness, o1.fitness);
109 }
110 };
111
112 trajectoiresToExplore = new PriorityQueue<TrajectoryWithFitness>(11, comparator);
113
114 }
115
116 public SolutionStoreWithCopy getSolutionStoreWithCopy() {
117 return solutionStoreWithCopy;
118 }
119
120 public SolutionStoreWithDiversityDescriptor getSolutionStoreWithDiversityDescriptor() {
121 return solutionStoreWithDiversityDescriptor;
122 }
123
124 public int getNumberOfStatecoderFaiL() {
125 return numberOfStatecoderFail;
126 }
127
128 @Override
129 public void explore() {
130 final ObjectiveComparatorHelper objectiveComparatorHelper = context.getObjectiveComparatorHelper();
131
132 boolean globalConstraintsAreSatisfied = context.checkGlobalConstraints();
133 if (!globalConstraintsAreSatisfied) {
134 logger.info("Global contraint is not satisifed in the first state. Terminate.");
135 return;
136 }
137
138 final Fitness firstFittness = context.calculateFitness();
139 if (firstFittness.isSatisifiesHardObjectives()) {
140 context.newSolution();
141 logger.info("First state is a solution. Terminate.");
142 return;
143 }
144
145 if (maxDepth == 0) {
146 return;
147 }
148
149 final Object[] firstTrajectory = context.getTrajectory().toArray(new Object[0]);
150 TrajectoryWithFitness currentTrajectoryWithFittness = new TrajectoryWithFitness(firstTrajectory, firstFittness);
151 trajectoiresToExplore.add(currentTrajectoryWithFittness);
152
153 mainLoop: while (!isInterrupted) {
154
155 if (currentTrajectoryWithFittness == null) {
156 if (trajectoiresToExplore.isEmpty()) {
157 logger.debug("State space is fully traversed.");
158 return;
159 } else {
160 currentTrajectoryWithFittness = selectRandomState();// trajectoiresToExplore.element();
161 if (logger.isDebugEnabled()) {
162 logger.debug("Current trajectory: " + Arrays.toString(context.getTrajectory().toArray()));
163 logger.debug("New trajectory is chosen: " + currentTrajectoryWithFittness);
164 }
165// context.backtrackUntilRoot();
166// context.executeTrajectoryWithoutStateCoding(currentTrajectoryWithFittness.trajectory);
167 context.getDesignSpaceManager().executeTrajectoryWithMinimalBacktrackWithoutStateCoding(currentTrajectoryWithFittness.trajectory);
168 }
169
170 }
171
172 List<Object> activationIds;
173 try {
174 activationIds = new ArrayList<Object>(context.getUntraversedActivationIds());
175 Collections.shuffle(activationIds);
176 } catch (NullPointerException e) {
177 numberOfStatecoderFail++;
178 activationIds = Collections.emptyList();
179 }
180
181 Iterator<Object> iterator = activationIds.iterator();
182
183// writeCurrentState();
184// boolean consistencyCheckResult = checkConsistency(currentTrajectoryWithFittness);
185// if(consistencyCheckResult == true) {
186// continue mainLoop;
187// }
188
189 while (!isInterrupted && iterator.hasNext()) {
190 final Object nextActivation = iterator.next();
191 if (!iterator.hasNext()) {
192 logger.debug("Last untraversed activation of the state.");
193 trajectoiresToExplore.remove(currentTrajectoryWithFittness);
194 }
195
196 if (logger.isDebugEnabled()) {
197 logger.debug("Executing new activation: " + nextActivation);
198 }
199 context.executeAcitvationId(nextActivation);
200
201// writeCurrentState();
202
203 if (context.isCurrentStateAlreadyTraversed()) {
204 logger.info("The new state is already visited.");
205 context.backtrack();
206 } else if (!context.checkGlobalConstraints()) {
207 logger.debug("Global contraint is not satisifed.");
208 context.backtrack();
209 } else {
210 final Fitness nextFitness = context.calculateFitness();
211 if (nextFitness.isSatisifiesHardObjectives()) {
212 if(solutionStoreWithDiversityDescriptor.isDifferent(context)) {
213 solutionStoreWithCopy.newSolution(context);
214 solutionStoreWithDiversityDescriptor.newSolution(context);
215 solutionStore.newSolution(context);
216 logger.debug("Found a solution.");
217 }
218 }
219 if (context.getDepth() > maxDepth) {
220 logger.debug("Reached max depth.");
221 context.backtrack();
222 continue;
223 }
224
225 TrajectoryWithFitness nextTrajectoryWithFittness = new TrajectoryWithFitness(
226 context.getTrajectory().toArray(), nextFitness);
227 trajectoiresToExplore.add(nextTrajectoryWithFittness);
228
229 int compare = objectiveComparatorHelper.compare(currentTrajectoryWithFittness.fitness,
230 nextTrajectoryWithFittness.fitness);
231 if (compare < 0) {
232 logger.debug("Better fitness, moving on: " + nextFitness);
233 currentTrajectoryWithFittness = nextTrajectoryWithFittness;
234 continue mainLoop;
235 } else if (compare == 0) {
236 if (onlyBetterFirst) {
237 logger.debug("Equally good fitness, backtrack: " + nextFitness);
238 context.backtrack();
239 continue;
240 } else {
241 logger.debug("Equally good fitness, moving on: " + nextFitness);
242 currentTrajectoryWithFittness = nextTrajectoryWithFittness;
243 continue mainLoop;
244 }
245 } else {
246 logger.debug("Worse fitness.");
247// context.backtrack();
248 currentTrajectoryWithFittness = null;
249 continue mainLoop;
250 }
251 }
252 }
253
254 logger.debug("State is fully traversed.");
255 trajectoiresToExplore.remove(currentTrajectoryWithFittness);
256 currentTrajectoryWithFittness = null;
257
258 }
259 logger.info("Interrupted.");
260 }
261
262 @Override
263 public void interruptStrategy() {
264 isInterrupted = true;
265 }
266
267 Random random = new Random();
268 private TrajectoryWithFitness selectRandomState() {
269 int randomNumber = random.nextInt(100);
270 if(randomNumber < 5) {
271 int elements = trajectoiresToExplore.size();
272 int randomElementIndex = random.nextInt(elements);
273 logger.debug("Randomly backtract to the " + randomElementIndex + " best solution...");
274 Iterator<TrajectoryWithFitness> iterator = trajectoiresToExplore.iterator();
275 while(randomElementIndex!=0) {
276 iterator.next();
277 randomElementIndex--;
278 }
279 TrajectoryWithFitness res = iterator.next();
280 if(res == null) {
281 return trajectoiresToExplore.element();
282 } else {
283 return res;
284 }
285 } else {
286 return trajectoiresToExplore.element();
287 }
288 }
289
290 private PartialInterpretation2Logic partialInterpretation2Logic = new PartialInterpretation2Logic();
291 private LogicReasoner reasoner;
292 private PartialInterpretation2Gml partialInterpretation2Gml = new PartialInterpretation2Gml();
293 private ReasonerWorkspace workspace;
294 private LogicSolverConfiguration configuration;
295 int numberOfPrintedModel = 0;
296 public ModelResult modelResultByTheSolver = null;
297 public void writeCurrentState() {
298 PartialInterpretation p = (PartialInterpretation)(context.getModel());
299 int id= ++numberOfPrintedModel;
300 if(id%100 == 1) {
301 String text = this.partialInterpretation2Gml.transform(p);
302 this.workspace.writeText(id+".gml", text);
303 this.workspace.writeModel(p, id+".partialinterpretation");
304 logger.debug("State "+id+" is saved.");
305 }
306 }
307
308// int numberOfSolverCalls = 0;
309//
310// protected boolean checkConsistency(TrajectoryWithFitness t) {
311// if (reasoner != null) {
312// int id = ++numberOfSolverCalls;
313// if (id % 100 == 1) {
314// try {
315// PartialInterpretation interpretation = (PartialInterpretation) (context.getModel());
316// PartialInterpretation copied = EcoreUtil.copy(interpretation);
317// this.partialInterpretation2Logic.transformPartialIntepretation2Logic(copied.getProblem(), copied);
318// LogicProblem newProblem = copied.getProblem();
319//
320// this.configuration.typeScopes.maxNewElements = interpretation.getMaxNewElements();
321// this.configuration.typeScopes.minNewElements = interpretation.getMinNewElements();
322// LogicResult result = reasoner.solve(newProblem, configuration, workspace);
323// if (result instanceof InconsistencyResult) {
324// logger.debug("Solver found an Inconsistency!");
325// removeSubtreeFromQueue(t);
326// return true;
327// } else if (result instanceof ModelResult) {
328// logger.debug("Solver found a model!");
329// solutionStore.newSolution(context);
330
331// modelResultByTheSolver = (ModelResult) result;
332// return true;
333// } else {
334// logger.debug("Failed consistency check.");
335// return false;
336// }
337// } catch (Exception e) {
338// // TODO Auto-generated catch block
339// e.printStackTrace();
340// return false;
341// }
342// }
343//
344// }
345// return false;
346// }
347//
348// protected void removeSubtreeFromQueue(TrajectoryWithFitness t) {
349// PriorityQueue<TrajectoryWithFitness> previous = this.trajectoiresToExplore;
350// this.trajectoiresToExplore = new PriorityQueue<>(this.comparator);
351// for (TrajectoryWithFitness trajectoryWithFitness : previous) {
352// if(! containsAsSubstring(trajectoryWithFitness.trajectory,t.trajectory)) {
353// this.trajectoiresToExplore.add(trajectoryWithFitness);
354// } else {
355// logger.debug("State has been excluded due to inherent inconsistency");
356// }
357// }
358// }
359//
360// private boolean containsAsSubstring(Object[] full, Object[] substring) {
361// if(substring.length > full.length) {
362// return false;
363// } else if(substring.length == full.length) {
364// return Arrays.equals(full, substring);
365// } else {
366// Object[] part = Arrays.copyOfRange(full, 0, substring.length);
367// return Arrays.equals(part, substring);
368// }
369// }
370//
371
372}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend
new file mode 100644
index 00000000..1ca2343f
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend
@@ -0,0 +1,85 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse
2
3import java.util.Comparator
4import java.util.List
5import org.eclipse.viatra.dse.base.ThreadContext
6import org.eclipse.viatra.dse.objectives.Comparators
7import org.eclipse.viatra.dse.objectives.IObjective
8import org.eclipse.viatra.dse.objectives.impl.BaseObjective
9
10//class ViatraReasonerNumbers {
11// public static val scopePriority = 2
12// public static val unfinishedMultiplicityPriority = 2
13// public static val unifinshedWFPriority = 2
14// //public static val complexityPriority = 4
15//
16// public static val scopeWeigth = 1.0
17// public static val unfinishedMultiplicityWeigth = 1.5
18// public static val unfinishedWFWeigth = 1.5
19// //public static val complexityWeigth = 0.1
20//
21// public static val useCompositeObjective = true
22// public static val compositePriority = 2
23//}
24
25class ModelGenerationCompositeObjective implements IObjective{
26 val ScopeObjective scopeObjective
27 val List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives
28 val UnfinishedWFObjective unfinishedWFObjective
29
30 public new(
31 ScopeObjective scopeObjective,
32 List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives,
33 UnfinishedWFObjective unfinishedWFObjective)
34 {
35 this.scopeObjective = scopeObjective
36 this.unfinishedMultiplicityObjectives = unfinishedMultiplicityObjectives
37 this.unfinishedWFObjective = unfinishedWFObjective
38 }
39
40 override init(ThreadContext context) {
41 this.scopeObjective.init(context)
42 this.unfinishedMultiplicityObjectives.forEach[it.init(context)]
43 this.unfinishedWFObjective.init(context)
44 }
45
46 override createNew() {
47 return new ModelGenerationCompositeObjective(
48 this.scopeObjective, this.unfinishedMultiplicityObjectives, this.unfinishedWFObjective)
49 }
50
51 override getComparator() { Comparators.LOWER_IS_BETTER }
52 override getFitness(ThreadContext context) {
53 var sum = 0.0
54 val scopeFitnes = scopeObjective.getFitness(context)
55 //val unfinishedMultiplicitiesFitneses = unfinishedMultiplicityObjectives.map[x|x.getFitness(context)]
56 val unfinishedWFsFitness = unfinishedWFObjective.getFitness(context)
57
58 sum+=scopeFitnes
59 var multiplicity = 0.0
60 for(multiplicityObjective : unfinishedMultiplicityObjectives) {
61 multiplicity+=multiplicityObjective.getFitness(context)//*0.5
62 }
63 sum+=multiplicity
64 sum += unfinishedWFsFitness//*0.5
65
66// println('''Sum=«sum»|Scope=«scopeFitnes»|Multiplicity=«multiplicity»|WFs=«unfinishedWFsFitness»''')
67
68 return sum
69 }
70
71 override getLevel() { 2 }
72 override getName() { "CompositeUnfinishednessObjective"}
73
74 override isHardObjective() { true }
75 override satisifiesHardObjective(Double fitness) { fitness <= 0.001 }
76
77
78 override setComparator(Comparator<Double> comparator) {
79 throw new UnsupportedOperationException("TODO: auto-generated method stub")
80 }
81 override setLevel(int level) {
82 throw new UnsupportedOperationException("TODO: auto-generated method stub")
83 }
84
85} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend
new file mode 100644
index 00000000..b2a7e3f5
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend
@@ -0,0 +1,30 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse
2
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDeclaration
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration
8
9class PartialModelAsLogicInterpretation implements LogicModelInterpretation{
10
11
12 override getElements(Type type) {
13 throw new UnsupportedOperationException("TODO: auto-generated method stub")
14 }
15
16 override getInterpretation(FunctionDeclaration function, Object[] parameterSubstitution) {
17 throw new UnsupportedOperationException("TODO: auto-generated method stub")
18 }
19
20 override getInterpretation(RelationDeclaration relation, Object[] parameterSubstitution) {
21 throw new UnsupportedOperationException("TODO: auto-generated method stub")
22 }
23
24 override getInterpretation(ConstantDeclaration constant) {
25 throw new UnsupportedOperationException("TODO: auto-generated method stub")
26 }
27
28 override getMinimalInteger() { 0 }
29 override getMaximalInteger() {0 }
30} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ScopeObjective.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ScopeObjective.xtend
new file mode 100644
index 00000000..d3497ef2
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ScopeObjective.xtend
@@ -0,0 +1,41 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse
2
3import org.eclipse.viatra.dse.objectives.IObjective
4import org.eclipse.viatra.dse.base.ThreadContext
5import java.util.Comparator
6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
7
8class ScopeObjective implements IObjective{
9 static val comparator = new Comparator<Double>() {
10 override compare(Double o1, Double o2) {
11
12 return o2.compareTo(o1)
13 }
14 }
15
16 //val static scopeLevel = 3
17
18 override createNew() { return new ScopeObjective }
19 override getName() { '''ScopeConstraint''' }
20 override init(ThreadContext context) { }
21
22 override getComparator() { comparator }
23
24 override getFitness(ThreadContext context) {
25 val interpretation = context.model as PartialInterpretation
26 val res = interpretation.minNewElements
27 return res.doubleValue
28 }
29
30 override isHardObjective() { true }
31 override satisifiesHardObjective(Double fitness) { return fitness <=0.01 }
32
33 override setComparator(Comparator<Double> comparator) {
34 throw new UnsupportedOperationException("TODO: auto-generated method stub")
35 }
36
37 override setLevel(int level) {
38 throw new UnsupportedOperationException("TODO: auto-generated method stub")
39 }
40 override getLevel() { 2 }
41} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SolutionStoreWithCopy.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SolutionStoreWithCopy.xtend
new file mode 100644
index 00000000..2892723b
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SolutionStoreWithCopy.xtend
@@ -0,0 +1,35 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse
2
3import java.util.List
4import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
5import java.util.LinkedList
6import org.eclipse.emf.ecore.EObject
7import java.util.Map
8import org.eclipse.emf.ecore.util.EcoreUtil
9import org.eclipse.viatra.dse.base.ThreadContext
10
11class SolutionStoreWithCopy {
12 long runtime = 0
13 List<PartialInterpretation> solutions = new LinkedList
14 List<Map<EObject,EObject>> copyTraces = new LinkedList
15
16 long initTime = System.nanoTime
17
18 def newSolution(ThreadContext context) {
19 //print(System.nanoTime-initTime + ";")
20 val copyStart = System.nanoTime
21 val solution = context.model as PartialInterpretation
22 val copier = new EcoreUtil.Copier
23 val solutionCopy = copier.copy(solution) as PartialInterpretation
24 copier.copyReferences
25 solutions.add(solutionCopy)
26 copyTraces.add(copier)
27 runtime += System.nanoTime - copyStart
28 }
29 def getSumRuntime() {
30 return runtime
31 }
32 def getSolutions() {
33 solutions
34 }
35} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SolutionStoreWithDiversityDescriptor.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SolutionStoreWithDiversityDescriptor.xtend
new file mode 100644
index 00000000..ca39cada
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SolutionStoreWithDiversityDescriptor.xtend
@@ -0,0 +1,77 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse
2
3import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.AbstractNodeDescriptor
4import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.NeighbourhoodWithTraces
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.PartialInterpretation2ImmutableTypeLattice
6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
7import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.DiversityDescriptor
8import java.util.LinkedList
9import java.util.List
10import java.util.Map
11import org.eclipse.viatra.dse.base.ThreadContext
12
13class SolutionStoreWithDiversityDescriptor {
14 val DiversityDescriptor descriptor
15 val PartialInterpretation2ImmutableTypeLattice solutionCoder = new PartialInterpretation2ImmutableTypeLattice
16 val List<NeighbourhoodWithTraces<Map<? extends AbstractNodeDescriptor, Integer>, AbstractNodeDescriptor>> solutionCodeList = new LinkedList
17
18 var long runtime
19 var int allCheck
20 var int successfulCheck
21
22 public new(DiversityDescriptor descriptor) {
23 this.descriptor = descriptor
24 }
25
26 def public isActive() {
27 descriptor!==null
28 }
29
30 def getSumRuntime() {
31 return runtime
32 }
33 def getSuccessRate() {
34 return successfulCheck as double / allCheck
35 }
36
37 def isDifferent(ThreadContext context) {
38 if(active) {
39 val start = System.nanoTime
40 val model = context.model as PartialInterpretation
41 val code = solutionCoder.createRepresentation(model,
42 descriptor.range,
43 descriptor.parallels,
44 descriptor.maxNumber,
45 descriptor.relevantTypes,
46 descriptor.relevantRelations)
47 val isDifferent = solutionCodeList.forall[previous | ! code.equals(previous)]
48 runtime += System.nanoTime - start
49 allCheck++
50 if(isDifferent) { successfulCheck++ }
51 return isDifferent
52 } else {
53 allCheck++
54 successfulCheck++
55 return true
56 }
57 }
58
59 def canBeDifferent(ThreadContext context) {
60 return true
61 }
62
63 def newSolution(ThreadContext context) {
64 if(active) {
65 val start = System.nanoTime
66 val model = context.model as PartialInterpretation
67 val code = solutionCoder.createRepresentation(model,
68 descriptor.range,
69 descriptor.parallels,
70 descriptor.maxNumber,
71 descriptor.relevantTypes,
72 descriptor.relevantRelations)
73 solutionCodeList += code
74 runtime += System.nanoTime - start
75 }
76 }
77} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/UnfinishedMultiplicityObjective.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/UnfinishedMultiplicityObjective.xtend
new file mode 100644
index 00000000..aad9a448
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/UnfinishedMultiplicityObjective.xtend
@@ -0,0 +1,37 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse
2
3import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.MultiplicityGoalConstraintCalculator
4import java.util.Comparator
5import org.eclipse.viatra.dse.base.ThreadContext
6import org.eclipse.viatra.dse.objectives.IObjective
7import org.eclipse.viatra.dse.objectives.Comparators
8
9class UnfinishedMultiplicityObjective implements IObjective {
10 val MultiplicityGoalConstraintCalculator unfinishedMultiplicity;
11
12 public new(MultiplicityGoalConstraintCalculator unfinishedMultiplicity) {
13 this.unfinishedMultiplicity = unfinishedMultiplicity
14 }
15
16 override getName() '''unfinishedMultiplicity «unfinishedMultiplicity.name»'''
17 override createNew() {
18 return new UnfinishedMultiplicityObjective(new MultiplicityGoalConstraintCalculator(this.unfinishedMultiplicity))
19 }
20
21 override getComparator() { Comparators.LOWER_IS_BETTER }
22 override getFitness(ThreadContext context) {
23 val unfinishedMultiplicity = unfinishedMultiplicity.calculateValue
24 return unfinishedMultiplicity.doubleValue
25 }
26 override getLevel() { 2 }
27 override init(ThreadContext context) { unfinishedMultiplicity.init(context.model) }
28 override isHardObjective() { true }
29 override satisifiesHardObjective(Double fitness) { return fitness <=0.01 }
30
31 override setComparator(Comparator<Double> comparator) {
32 throw new UnsupportedOperationException("TODO: auto-generated method stub")
33 }
34 override setLevel(int level) {
35 throw new UnsupportedOperationException("TODO: auto-generated method stub")
36 }
37} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/UnfinishedWFObjective.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/UnfinishedWFObjective.xtend
new file mode 100644
index 00000000..0fd20fa3
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/UnfinishedWFObjective.xtend
@@ -0,0 +1,56 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse
2
3import org.eclipse.viatra.dse.objectives.IObjective
4import org.eclipse.viatra.query.runtime.api.IPatternMatch
5import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
6import org.eclipse.viatra.query.runtime.api.IQuerySpecification
7import java.util.Collection
8import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine
9import org.eclipse.viatra.query.runtime.emf.EMFScope
10import org.eclipse.viatra.dse.base.ThreadContext
11import java.util.List
12import org.eclipse.viatra.dse.objectives.Comparators
13import java.util.ArrayList
14import java.util.Comparator
15
16class UnfinishedWFObjective implements IObjective {
17 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWFs
18 val List<ViatraQueryMatcher<?>> matchers
19
20 public new(Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWFs) {
21 this.unfinishedWFs = unfinishedWFs
22 matchers = new ArrayList(unfinishedWFs.size)
23 }
24 override getName() '''unfinishedWFs'''
25 override createNew() {
26 return new UnfinishedWFObjective(unfinishedWFs)
27 }
28 override init(ThreadContext context) {
29 val engine = context.queryEngine//ViatraQueryEngine.on(new EMFScope(context.model))
30 for(unfinishedWF : unfinishedWFs) {
31 matchers += unfinishedWF.getMatcher(engine)
32 }
33 }
34
35 override getComparator() { Comparators.LOWER_IS_BETTER }
36 override getFitness(ThreadContext context) {
37 var sumOfMatches = 0
38 for(matcher : matchers) {
39 val number = matcher.countMatches
40// println('''«matcher.patternName» = «number»''')
41 sumOfMatches+=number
42 }
43 return sumOfMatches.doubleValue
44 }
45
46 override getLevel() { 2 }
47 override isHardObjective() { true }
48 override satisifiesHardObjective(Double fitness) { return fitness <=0.01 }
49
50 override setComparator(Comparator<Double> comparator) {
51 throw new UnsupportedOperationException("TODO: auto-generated method stub")
52 }
53 override setLevel(int level) {
54 throw new UnsupportedOperationException("TODO: auto-generated method stub")
55 }
56} \ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/WF2ObjectiveConverter.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/WF2ObjectiveConverter.xtend
new file mode 100644
index 00000000..4fd297ca
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/WF2ObjectiveConverter.xtend
@@ -0,0 +1,36 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse
2
3import java.util.ArrayList
4import java.util.Collection
5import org.eclipse.viatra.dse.objectives.Comparators
6import org.eclipse.viatra.dse.objectives.IGlobalConstraint
7import org.eclipse.viatra.dse.objectives.impl.ConstraintsObjective
8import org.eclipse.viatra.dse.objectives.impl.ConstraintsObjective.QueryConstraint
9import org.eclipse.viatra.dse.objectives.impl.ModelQueriesGlobalConstraint
10import org.eclipse.viatra.query.runtime.api.IPatternMatch
11import org.eclipse.viatra.query.runtime.api.IQuerySpecification
12import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
13
14class WF2ObjectiveConverter {
15
16 def createCompletenessObjective(
17 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWF)
18 {
19 val res = new ConstraintsObjective('''unfinishedWFs''',
20 unfinishedWF.map[
21 new QueryConstraint(it.fullyQualifiedName,it,1.0)
22 ].toList
23 )
24 res.withComparator(Comparators.LOWER_IS_BETTER)
25 res.level = 2
26 return res
27 }
28
29 def IGlobalConstraint createInvalidationObjective(
30 Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidatedByWF)
31 {
32 return new ModelQueriesGlobalConstraint('''invalidatedWFs''',
33 new ArrayList(invalidatedByWF)
34 )
35 }
36} \ No newline at end of file