aboutsummaryrefslogtreecommitdiffstats
path: root/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'Framework')
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/model/ecore2logicannotations.aird1078
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/src/hu/bme/mit/inf/dslreasoner/ecore2logic/Ecore2Logic.xtend10
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregateExpression.java38
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregatedParameterSubstitution.java46
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguageFactory.java9
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguagePackage.java225
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregateExpressionImpl.java119
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregatedParameterSubstitutionImpl.java159
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguageFactoryImpl.java12
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java58
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/util/LogiclanguageAdapterFactory.java18
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/util/LogiclanguageSwitch.java21
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.aird133
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore6
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.genmodel5
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/plugin.xml52
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicModelInterpretation.xtend76
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend285
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend8
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/statistics/StatisticSections2CSV.xtend2
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/statistics/StatisticSections2Print.xtend2
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend55
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.classpath23
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.gitignore1
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/META-INF/MANIFEST.MF4
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/TransfomedViatraQuery.java37
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/VariableMapping.java71
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsFactory.java9
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsPackage.java163
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/DefinedByDerivedFeatureImpl.java2
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransfomedViatraQueryImpl.java116
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransformedViatraWellformednessConstraintImpl.java2
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/VariableMappingImpl.java230
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsFactoryImpl.java16
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsPackageImpl.java85
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/util/Viatra2LogicAnnotationsAdapterFactory.java18
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/util/Viatra2LogicAnnotationsSwitch.java21
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/lib/.gitignore0
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.aird290
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.ecore12
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.genmodel14
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend73
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/ExampleRecreation.java120
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/ExpressionEvaluation2Logic.xtend140
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/FakeIntegerElement.java169
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericProblemSolver.java473
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericTranslator.xtend80
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2Logic.xtend335
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2LogicTypeInferer.xtend392
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2LogicTypeResult.xtend47
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/XExpressionExtractor.xtend24
51 files changed, 4301 insertions, 1083 deletions
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/model/ecore2logicannotations.aird b/Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/model/ecore2logicannotations.aird
index 2336933d..6d0f06b7 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/model/ecore2logicannotations.aird
+++ b/Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/model/ecore2logicannotations.aird
@@ -1,527 +1,575 @@
1<?xml version="1.0" encoding="UTF-8"?> 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="_8ji8MMArEeaaj7sYFz2QKg" selectedViews="_8mY00MArEeaaj7sYFz2QKg _8mhXsMArEeaaj7sYFz2QKg _8mrIsMArEeaaj7sYFz2QKg _8mydcMArEeaaj7sYFz2QKg" version="10.1.0.201509162000"> 2<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
3 <semanticResources>ecore2logicannotations.ecore</semanticResources> 3 <viewpoint:DAnalysis uid="_8ji8MMArEeaaj7sYFz2QKg" selectedViews="_8mY00MArEeaaj7sYFz2QKg _8mhXsMArEeaaj7sYFz2QKg _8mrIsMArEeaaj7sYFz2QKg _8mydcMArEeaaj7sYFz2QKg" version="14.1.0.201810161215">
4 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore</semanticResources> 4 <semanticResources>ecore2logicannotations.ecore</semanticResources>
5 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore</semanticResources> 5 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore</semanticResources>
6 <semanticResources>http://www.eclipse.org/emf/2002/Ecore</semanticResources> 6 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore</semanticResources>
7 <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_8mY00MArEeaaj7sYFz2QKg"> 7 <semanticResources>http://www.eclipse.org/emf/2002/Ecore</semanticResources>
8 <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_9rgp0MArEeaaj7sYFz2QKg" name="ecore2logicannotations class diagram"> 8 <ownedViews xmi:type="viewpoint:DView" uid="_8mY00MArEeaaj7sYFz2QKg">
9 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_9rgp0cArEeaaj7sYFz2QKg" source="DANNOTATION_CUSTOMIZATION_KEY"> 9 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
10 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_9rgp0sArEeaaj7sYFz2QKg"> 10 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_mYtLUKPiEemFddEW7ouAfg" name="ecore2logicannotations class diagram" repPath="#_9rgp0MArEeaaj7sYFz2QKg">
11 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_DwMwIcAsEeaaj7sYFz2QKg" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1"> 11 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
12 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> 12 <target xmi:type="ecore:EPackage" href="ecore2logicannotations.ecore#/"/>
13 </ownedRepresentationDescriptors>
14 </ownedViews>
15 <ownedViews xmi:type="viewpoint:DView" uid="_8mhXsMArEeaaj7sYFz2QKg">
16 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/>
17 </ownedViews>
18 <ownedViews xmi:type="viewpoint:DView" uid="_8mrIsMArEeaaj7sYFz2QKg">
19 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/>
20 </ownedViews>
21 <ownedViews xmi:type="viewpoint:DView" uid="_8mydcMArEeaaj7sYFz2QKg">
22 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/>
23 </ownedViews>
24 </viewpoint:DAnalysis>
25 <diagram:DSemanticDiagram uid="_9rgp0MArEeaaj7sYFz2QKg" name="ecore2logicannotations class diagram">
26 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_9rgp0cArEeaaj7sYFz2QKg" source="DANNOTATION_CUSTOMIZATION_KEY">
27 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_9rgp0sArEeaaj7sYFz2QKg">
28 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_DwMwIcAsEeaaj7sYFz2QKg" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
29 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
30 <labelFormat>bold</labelFormat>
31 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
32 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
33 </computedStyleDescriptions>
34 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_DwN-QMAsEeaaj7sYFz2QKg" routingStyle="manhattan">
35 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
36 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_DwN-QcAsEeaaj7sYFz2QKg" showIcon="false" labelExpression="service:render">
13 <labelFormat>bold</labelFormat> 37 <labelFormat>bold</labelFormat>
14 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> 38 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
15 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> 39 </centerLabelStyleDescription>
16 </computedStyleDescriptions> 40 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_DwN-QsAsEeaaj7sYFz2QKg" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
17 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_DwN-QMAsEeaaj7sYFz2QKg" routingStyle="manhattan"> 41 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
18 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> 42 </endLabelStyleDescription>
19 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_DwN-QcAsEeaaj7sYFz2QKg" showIcon="false" labelExpression="service:render"> 43 </computedStyleDescriptions>
20 <labelFormat>bold</labelFormat> 44 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_XIVCYMDwEea_b6UyFzv22g" sourceArrow="InputArrow" routingStyle="manhattan">
21 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> 45 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
22 </centerLabelStyleDescription> 46 <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_XIVCYcDwEea_b6UyFzv22g" showIcon="false" labelExpression="service:renderEOpposite">
23 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_DwN-QsAsEeaaj7sYFz2QKg" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
24 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
25 </endLabelStyleDescription>
26 </computedStyleDescriptions>
27 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_XIVCYMDwEea_b6UyFzv22g" sourceArrow="InputArrow" routingStyle="manhattan">
28 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
29 <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_XIVCYcDwEea_b6UyFzv22g" showIcon="false" labelExpression="service:renderEOpposite">
30 <labelFormat>bold</labelFormat>
31 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
32 </beginLabelStyleDescription>
33 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_XIVCYsDwEea_b6UyFzv22g" showIcon="false" labelExpression="service:render">
34 <labelFormat>bold</labelFormat>
35 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
36 </endLabelStyleDescription>
37 </computedStyleDescriptions>
38 </data>
39 </ownedAnnotationEntries>
40 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_9rjtIMArEeaaj7sYFz2QKg" source="GMF_DIAGRAMS">
41 <data xmi:type="notation:Diagram" xmi:id="_9rjtIcArEeaaj7sYFz2QKg" type="Sirius" element="_9rgp0MArEeaaj7sYFz2QKg" measurementUnit="Pixel">
42 <children xmi:type="notation:Node" xmi:id="_-SNdcMArEeaaj7sYFz2QKg" type="2003" element="_-SH94MArEeaaj7sYFz2QKg">
43 <children xmi:type="notation:Node" xmi:id="_-SOEgMArEeaaj7sYFz2QKg" type="5007"/>
44 <children xmi:type="notation:Node" xmi:id="_-SOrkMArEeaaj7sYFz2QKg" type="7004">
45 <styles xmi:type="notation:SortingStyle" xmi:id="_-SOrkcArEeaaj7sYFz2QKg"/>
46 <styles xmi:type="notation:FilteringStyle" xmi:id="_-SOrksArEeaaj7sYFz2QKg"/>
47 </children>
48 <styles xmi:type="notation:ShapeStyle" xmi:id="_-SNdccArEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
49 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-SNdcsArEeaaj7sYFz2QKg" x="100" y="180"/>
50 </children>
51 <children xmi:type="notation:Node" xmi:id="_-5TSoMArEeaaj7sYFz2QKg" type="2003" element="_-5OaIMArEeaaj7sYFz2QKg">
52 <children xmi:type="notation:Node" xmi:id="_-5T5sMArEeaaj7sYFz2QKg" type="5007"/>
53 <children xmi:type="notation:Node" xmi:id="_-5T5scArEeaaj7sYFz2QKg" type="7004">
54 <styles xmi:type="notation:SortingStyle" xmi:id="_-5T5ssArEeaaj7sYFz2QKg"/>
55 <styles xmi:type="notation:FilteringStyle" xmi:id="_-5T5s8ArEeaaj7sYFz2QKg"/>
56 </children>
57 <styles xmi:type="notation:ShapeStyle" xmi:id="_-5TSocArEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
58 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-5TSosArEeaaj7sYFz2QKg" x="260" y="15"/>
59 </children>
60 <children xmi:type="notation:Node" xmi:id="_ABlJUMAsEeaaj7sYFz2QKg" type="2003" element="_ABfpwMAsEeaaj7sYFz2QKg">
61 <children xmi:type="notation:Node" xmi:id="_ABlwYMAsEeaaj7sYFz2QKg" type="5007"/>
62 <children xmi:type="notation:Node" xmi:id="_ABlwYcAsEeaaj7sYFz2QKg" type="7004">
63 <styles xmi:type="notation:SortingStyle" xmi:id="_ABlwYsAsEeaaj7sYFz2QKg"/>
64 <styles xmi:type="notation:FilteringStyle" xmi:id="_ABlwY8AsEeaaj7sYFz2QKg"/>
65 </children>
66 <styles xmi:type="notation:ShapeStyle" xmi:id="_ABlJUcAsEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
67 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ABlJUsAsEeaaj7sYFz2QKg" x="520" y="180" width="168" height="100"/>
68 </children>
69 <children xmi:type="notation:Node" xmi:id="_DwQagMAsEeaaj7sYFz2QKg" type="2003" element="_DwH3oMAsEeaaj7sYFz2QKg">
70 <children xmi:type="notation:Node" xmi:id="_DwRBkMAsEeaaj7sYFz2QKg" type="5007"/>
71 <children xmi:type="notation:Node" xmi:id="_DwRBkcAsEeaaj7sYFz2QKg" type="7004">
72 <children xmi:type="notation:Node" xmi:id="_DwRBlMAsEeaaj7sYFz2QKg" type="3010" element="_DwMwIMAsEeaaj7sYFz2QKg">
73 <styles xmi:type="notation:FontStyle" xmi:id="_DwRBlcAsEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8" bold="true"/>
74 <layoutConstraint xmi:type="notation:Location" xmi:id="_DwRBlsAsEeaaj7sYFz2QKg"/>
75 </children>
76 <styles xmi:type="notation:SortingStyle" xmi:id="_DwRBksAsEeaaj7sYFz2QKg"/>
77 <styles xmi:type="notation:FilteringStyle" xmi:id="_DwRBk8AsEeaaj7sYFz2QKg"/>
78 </children>
79 <styles xmi:type="notation:ShapeStyle" xmi:id="_DwQagcAsEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
80 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DwQagsAsEeaaj7sYFz2QKg" x="500" y="15"/>
81 </children>
82 <children xmi:type="notation:Node" xmi:id="_Cu2ycMAtEeaaj7sYFz2QKg" type="2003" element="_CuwEwMAtEeaaj7sYFz2QKg">
83 <children xmi:type="notation:Node" xmi:id="_Cu2yc8AtEeaaj7sYFz2QKg" type="5007"/>
84 <children xmi:type="notation:Node" xmi:id="_Cu2ydMAtEeaaj7sYFz2QKg" type="7004">
85 <children xmi:type="notation:Node" xmi:id="_GeXKEMAtEeaaj7sYFz2QKg" type="3010" element="_JJ28cMAsEeaaj7sYFz2QKg">
86 <styles xmi:type="notation:FontStyle" xmi:id="_GeXKEcAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8" bold="true"/>
87 <layoutConstraint xmi:type="notation:Location" xmi:id="_GeXKEsAtEeaaj7sYFz2QKg"/>
88 </children>
89 <styles xmi:type="notation:SortingStyle" xmi:id="_Cu2ydcAtEeaaj7sYFz2QKg"/>
90 <styles xmi:type="notation:FilteringStyle" xmi:id="_Cu2ydsAtEeaaj7sYFz2QKg"/>
91 </children>
92 <styles xmi:type="notation:ShapeStyle" xmi:id="_Cu2yccAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
93 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cu2ycsAtEeaaj7sYFz2QKg" x="25" y="330" width="120" height="100"/>
94 </children>
95 <children xmi:type="notation:Node" xmi:id="_EQinoMAtEeaaj7sYFz2QKg" type="2003" element="_EQaEwMAtEeaaj7sYFz2QKg">
96 <children xmi:type="notation:Node" xmi:id="_EQjOsMAtEeaaj7sYFz2QKg" type="5007"/>
97 <children xmi:type="notation:Node" xmi:id="_EQjOscAtEeaaj7sYFz2QKg" type="7004">
98 <children xmi:type="notation:Node" xmi:id="_GLWugMAtEeaaj7sYFz2QKg" type="3010" element="_KDnO8MAsEeaaj7sYFz2QKg">
99 <styles xmi:type="notation:FontStyle" xmi:id="_GLWugcAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8" bold="true"/>
100 <layoutConstraint xmi:type="notation:Location" xmi:id="_GLWugsAtEeaaj7sYFz2QKg"/>
101 </children>
102 <styles xmi:type="notation:SortingStyle" xmi:id="_EQjOssAtEeaaj7sYFz2QKg"/>
103 <styles xmi:type="notation:FilteringStyle" xmi:id="_EQjOs8AtEeaaj7sYFz2QKg"/>
104 </children>
105 <styles xmi:type="notation:ShapeStyle" xmi:id="_EQinocAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
106 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EQinosAtEeaaj7sYFz2QKg" x="163" y="330" width="120" height="100"/>
107 </children>
108 <children xmi:type="notation:Node" xmi:id="_LJwiMMAtEeaaj7sYFz2QKg" type="2003" element="_LJomYMAtEeaaj7sYFz2QKg">
109 <children xmi:type="notation:Node" xmi:id="_LJwiM8AtEeaaj7sYFz2QKg" type="5007"/>
110 <children xmi:type="notation:Node" xmi:id="_LJxJQMAtEeaaj7sYFz2QKg" type="7004">
111 <styles xmi:type="notation:SortingStyle" xmi:id="_LJxJQcAtEeaaj7sYFz2QKg"/>
112 <styles xmi:type="notation:FilteringStyle" xmi:id="_LJxJQsAtEeaaj7sYFz2QKg"/>
113 </children>
114 <styles xmi:type="notation:ShapeStyle" xmi:id="_LJwiMcAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
115 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LJwiMsAtEeaaj7sYFz2QKg" x="280" y="-150"/>
116 </children>
117 <children xmi:type="notation:Node" xmi:id="_OgZt4MAtEeaaj7sYFz2QKg" type="2003" element="_OgM5kMAtEeaaj7sYFz2QKg">
118 <children xmi:type="notation:Node" xmi:id="_OgZt48AtEeaaj7sYFz2QKg" type="5007"/>
119 <children xmi:type="notation:Node" xmi:id="_OgZt5MAtEeaaj7sYFz2QKg" type="7004">
120 <styles xmi:type="notation:SortingStyle" xmi:id="_OgZt5cAtEeaaj7sYFz2QKg"/>
121 <styles xmi:type="notation:FilteringStyle" xmi:id="_OgZt5sAtEeaaj7sYFz2QKg"/>
122 </children>
123 <styles xmi:type="notation:ShapeStyle" xmi:id="_OgZt4cAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8" italic="true"/>
124 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OgZt4sAtEeaaj7sYFz2QKg" x="315" y="180"/>
125 </children>
126 <styles xmi:type="notation:DiagramStyle" xmi:id="_9rjtIsArEeaaj7sYFz2QKg"/>
127 <edges xmi:type="notation:Edge" xmi:id="_-5VH0MArEeaaj7sYFz2QKg" type="4001" element="_-5SEgcArEeaaj7sYFz2QKg" source="_-SNdcMArEeaaj7sYFz2QKg" target="_-5TSoMArEeaaj7sYFz2QKg">
128 <children xmi:type="notation:Node" xmi:id="_-5Vu4MArEeaaj7sYFz2QKg" type="6001">
129 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-5Vu4cArEeaaj7sYFz2QKg" y="-10"/>
130 </children>
131 <children xmi:type="notation:Node" xmi:id="_-5Vu4sArEeaaj7sYFz2QKg" type="6002">
132 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-5Vu48ArEeaaj7sYFz2QKg" y="10"/>
133 </children>
134 <children xmi:type="notation:Node" xmi:id="_-5Vu5MArEeaaj7sYFz2QKg" type="6003">
135 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-5Vu5cArEeaaj7sYFz2QKg" y="10"/>
136 </children>
137 <styles xmi:type="notation:ConnectorStyle" xmi:id="_-5VH0cArEeaaj7sYFz2QKg" routing="Tree"/>
138 <styles xmi:type="notation:FontStyle" xmi:id="_-5VH0sArEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
139 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-5VH08ArEeaaj7sYFz2QKg" points="[210, 135, 210, 135]$[0, 0, 0, 0]"/>
140 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-5WV8MArEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
141 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-5WV8cArEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
142 </edges>
143 <edges xmi:type="notation:Edge" xmi:id="_u58dgMAsEeaaj7sYFz2QKg" type="4001" element="_u5ysgMAsEeaaj7sYFz2QKg" source="_ABlJUMAsEeaaj7sYFz2QKg" target="_-5TSoMArEeaaj7sYFz2QKg">
144 <children xmi:type="notation:Node" xmi:id="_u58dhMAsEeaaj7sYFz2QKg" type="6001">
145 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u59EkMAsEeaaj7sYFz2QKg" y="-10"/>
146 </children>
147 <children xmi:type="notation:Node" xmi:id="_u59EkcAsEeaaj7sYFz2QKg" type="6002">
148 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u59EksAsEeaaj7sYFz2QKg" y="10"/>
149 </children>
150 <children xmi:type="notation:Node" xmi:id="_u59Ek8AsEeaaj7sYFz2QKg" type="6003">
151 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u59ElMAsEeaaj7sYFz2QKg" y="10"/>
152 </children>
153 <styles xmi:type="notation:ConnectorStyle" xmi:id="_u58dgcAsEeaaj7sYFz2QKg" routing="Tree"/>
154 <styles xmi:type="notation:FontStyle" xmi:id="_u58dgsAsEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
155 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_u58dg8AsEeaaj7sYFz2QKg" points="[0, 0, 101, 67]$[-101, -67, 0, 0]"/>
156 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_u59ElcAsEeaaj7sYFz2QKg" id="(0.8132530120481928,0.0)"/>
157 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_u59ElsAsEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
158 </edges>
159 <edges xmi:type="notation:Edge" xmi:id="_HR0nUMAtEeaaj7sYFz2QKg" type="4001" element="_HRrdYMAtEeaaj7sYFz2QKg" source="_Cu2ycMAtEeaaj7sYFz2QKg" target="_-SNdcMArEeaaj7sYFz2QKg">
160 <children xmi:type="notation:Node" xmi:id="_HR1OYMAtEeaaj7sYFz2QKg" type="6001">
161 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HR1OYcAtEeaaj7sYFz2QKg" y="-10"/>
162 </children>
163 <children xmi:type="notation:Node" xmi:id="_HR1OYsAtEeaaj7sYFz2QKg" type="6002">
164 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HR1OY8AtEeaaj7sYFz2QKg" y="10"/>
165 </children>
166 <children xmi:type="notation:Node" xmi:id="_HR1OZMAtEeaaj7sYFz2QKg" type="6003">
167 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HR1OZcAtEeaaj7sYFz2QKg" y="10"/>
168 </children>
169 <styles xmi:type="notation:ConnectorStyle" xmi:id="_HR0nUcAtEeaaj7sYFz2QKg" routing="Tree"/>
170 <styles xmi:type="notation:FontStyle" xmi:id="_HR0nUsAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
171 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HR0nU8AtEeaaj7sYFz2QKg" points="[0, 0, -35, 52]$[35, -52, 0, 0]"/>
172 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HR1OZsAtEeaaj7sYFz2QKg" id="(0.635593220338983,0.0)"/>
173 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HR1OZ8AtEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
174 </edges>
175 <edges xmi:type="notation:Edge" xmi:id="_HuNoYMAtEeaaj7sYFz2QKg" type="4001" element="_HuEecMAtEeaaj7sYFz2QKg" source="_EQinoMAtEeaaj7sYFz2QKg" target="_-SNdcMArEeaaj7sYFz2QKg">
176 <children xmi:type="notation:Node" xmi:id="_HuNoZMAtEeaaj7sYFz2QKg" type="6001">
177 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HuNoZcAtEeaaj7sYFz2QKg" y="-10"/>
178 </children>
179 <children xmi:type="notation:Node" xmi:id="_HuNoZsAtEeaaj7sYFz2QKg" type="6002">
180 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HuNoZ8AtEeaaj7sYFz2QKg" y="10"/>
181 </children>
182 <children xmi:type="notation:Node" xmi:id="_HuNoaMAtEeaaj7sYFz2QKg" type="6003">
183 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HuNoacAtEeaaj7sYFz2QKg" y="10"/>
184 </children>
185 <styles xmi:type="notation:ConnectorStyle" xmi:id="_HuNoYcAtEeaaj7sYFz2QKg" routing="Tree"/>
186 <styles xmi:type="notation:FontStyle" xmi:id="_HuNoYsAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
187 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HuNoY8AtEeaaj7sYFz2QKg" points="[0, 0, 112, 52]$[-112, -52, 0, 0]"/>
188 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HuNoasAtEeaaj7sYFz2QKg" id="(0.5,0.0)"/>
189 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HuNoa8AtEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
190 </edges>
191 <edges xmi:type="notation:Edge" xmi:id="_LJyXYMAtEeaaj7sYFz2QKg" type="4001" element="_LJutAMAtEeaaj7sYFz2QKg" source="_-5TSoMArEeaaj7sYFz2QKg" target="_LJwiMMAtEeaaj7sYFz2QKg">
192 <children xmi:type="notation:Node" xmi:id="_LJyXZMAtEeaaj7sYFz2QKg" type="6001">
193 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LJyXZcAtEeaaj7sYFz2QKg" y="-10"/>
194 </children>
195 <children xmi:type="notation:Node" xmi:id="_LJyXZsAtEeaaj7sYFz2QKg" type="6002">
196 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LJyXZ8AtEeaaj7sYFz2QKg" y="10"/>
197 </children>
198 <children xmi:type="notation:Node" xmi:id="_LJyXaMAtEeaaj7sYFz2QKg" type="6003">
199 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LJyXacAtEeaaj7sYFz2QKg" y="10"/>
200 </children>
201 <styles xmi:type="notation:ConnectorStyle" xmi:id="_LJyXYcAtEeaaj7sYFz2QKg" routing="Tree"/>
202 <styles xmi:type="notation:FontStyle" xmi:id="_LJyXYsAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
203 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LJyXY8AtEeaaj7sYFz2QKg" points="[260, 15, 260, 15]$[0, 0, 0, 0]"/>
204 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LJzlgMAtEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
205 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LJzlgcAtEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
206 </edges>
207 <edges xmi:type="notation:Edge" xmi:id="_QkxZYMAtEeaaj7sYFz2QKg" type="4001" element="_Qko2gMAtEeaaj7sYFz2QKg" source="_ABlJUMAsEeaaj7sYFz2QKg" target="_OgZt4MAtEeaaj7sYFz2QKg">
208 <children xmi:type="notation:Node" xmi:id="_QkxZZMAtEeaaj7sYFz2QKg" type="6001">
209 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QkxZZcAtEeaaj7sYFz2QKg" x="1" y="12"/>
210 </children>
211 <children xmi:type="notation:Node" xmi:id="_QkxZZsAtEeaaj7sYFz2QKg" type="6002">
212 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QkxZZ8AtEeaaj7sYFz2QKg" y="-10"/>
213 </children>
214 <children xmi:type="notation:Node" xmi:id="_QkxZaMAtEeaaj7sYFz2QKg" type="6003">
215 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QkxZacAtEeaaj7sYFz2QKg" y="-10"/>
216 </children>
217 <styles xmi:type="notation:ConnectorStyle" xmi:id="_QkxZYcAtEeaaj7sYFz2QKg" routing="Rectilinear"/>
218 <styles xmi:type="notation:FontStyle" xmi:id="_QkxZYsAtEeaaj7sYFz2QKg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
219 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QkxZY8AtEeaaj7sYFz2QKg" points="[-166, 30, 205, 30]$[-253, 30, 118, 30]"/>
220 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QkyAcMAtEeaaj7sYFz2QKg" id="(1.0,0.0)"/>
221 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QkyAccAtEeaaj7sYFz2QKg" id="(0.0,0.0)"/>
222 </edges>
223 <edges xmi:type="notation:Edge" xmi:id="_wTbfUMA0Eeaaj7sYFz2QKg" type="4001" element="_wTP5IMA0Eeaaj7sYFz2QKg" source="_-SNdcMArEeaaj7sYFz2QKg" target="_OgZt4MAtEeaaj7sYFz2QKg">
224 <children xmi:type="notation:Node" xmi:id="_wTbfVMA0Eeaaj7sYFz2QKg" type="6001">
225 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wTbfVcA0Eeaaj7sYFz2QKg" x="-2" y="-12"/>
226 </children>
227 <children xmi:type="notation:Node" xmi:id="_wTbfVsA0Eeaaj7sYFz2QKg" type="6002">
228 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wTbfV8A0Eeaaj7sYFz2QKg" x="21" y="10"/>
229 </children>
230 <children xmi:type="notation:Node" xmi:id="_wTcGYMA0Eeaaj7sYFz2QKg" type="6003">
231 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wTcGYcA0Eeaaj7sYFz2QKg" y="10"/>
232 </children>
233 <styles xmi:type="notation:ConnectorStyle" xmi:id="_wTbfUcA0Eeaaj7sYFz2QKg" routing="Rectilinear"/>
234 <styles xmi:type="notation:FontStyle" xmi:id="_wTbfUsA0Eeaaj7sYFz2QKg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
235 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wTbfU8A0Eeaaj7sYFz2QKg" points="[0, 20, -124, 60]$[89, 20, -35, 60]"/>
236 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wTcGYsA0Eeaaj7sYFz2QKg" id="(1.0,0.40816326530612246)"/>
237 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wTcGY8A0Eeaaj7sYFz2QKg" id="(0.2966101694915254,0.0)"/>
238 </edges>
239 <edges xmi:type="notation:Edge" xmi:id="_D6-y0MDnEea_b6UyFzv22g" type="4001" element="_D6viQMDnEea_b6UyFzv22g" source="_ABlJUMAsEeaaj7sYFz2QKg" target="_OgZt4MAtEeaaj7sYFz2QKg">
240 <children xmi:type="notation:Node" xmi:id="_D6_Z4MDnEea_b6UyFzv22g" type="6001">
241 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D6_Z4cDnEea_b6UyFzv22g" y="-6"/>
242 </children>
243 <children xmi:type="notation:Node" xmi:id="_D6_Z4sDnEea_b6UyFzv22g" type="6002">
244 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D6_Z48DnEea_b6UyFzv22g" x="1" y="10"/>
245 </children>
246 <children xmi:type="notation:Node" xmi:id="_D6_Z5MDnEea_b6UyFzv22g" type="6003">
247 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D6_Z5cDnEea_b6UyFzv22g" x="-2" y="10"/>
248 </children>
249 <styles xmi:type="notation:ConnectorStyle" xmi:id="_D6-y0cDnEea_b6UyFzv22g" routing="Rectilinear"/>
250 <styles xmi:type="notation:FontStyle" xmi:id="_D6-y0sDnEea_b6UyFzv22g" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
251 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D6-y08DnEea_b6UyFzv22g" points="[0, 0, 87, 10]$[-87, 0, 0, 10]"/>
252 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D6_Z5sDnEea_b6UyFzv22g" id="(0.0,0.8673469387755102)"/>
253 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D7AA8MDnEea_b6UyFzv22g" id="(1.0,0.7653061224489796)"/>
254 </edges>
255 <edges xmi:type="notation:Edge" xmi:id="_NpFP0MDnEea_b6UyFzv22g" type="4001" element="_NozjAMDnEea_b6UyFzv22g" source="_-5TSoMArEeaaj7sYFz2QKg" target="_DwQagMAsEeaaj7sYFz2QKg">
256 <children xmi:type="notation:Node" xmi:id="_NpFP1MDnEea_b6UyFzv22g" type="6001">
257 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpFP1cDnEea_b6UyFzv22g" y="-10"/>
258 </children>
259 <children xmi:type="notation:Node" xmi:id="_NpF24MDnEea_b6UyFzv22g" type="6002">
260 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpF24cDnEea_b6UyFzv22g" y="10"/>
261 </children>
262 <children xmi:type="notation:Node" xmi:id="_NpF24sDnEea_b6UyFzv22g" type="6003">
263 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpF248DnEea_b6UyFzv22g" y="10"/>
264 </children>
265 <styles xmi:type="notation:ConnectorStyle" xmi:id="_NpFP0cDnEea_b6UyFzv22g" routing="Rectilinear"/>
266 <styles xmi:type="notation:FontStyle" xmi:id="_NpFP0sDnEea_b6UyFzv22g" fontName="Segoe UI" fontHeight="8" bold="true"/>
267 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NpFP08DnEea_b6UyFzv22g" points="[260, 15, 260, 15]$[500, 15, 500, 15]"/>
268 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NpF25MDnEea_b6UyFzv22g" id="(0.5,0.5)"/>
269 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NpF25cDnEea_b6UyFzv22g" id="(0.5,0.5)"/>
270 </edges>
271 </data>
272 </ownedAnnotationEntries>
273 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_-SH94MArEeaaj7sYFz2QKg" name="MultiplicityAssertion" tooltipText="" outgoingEdges="_-5SEgcArEeaaj7sYFz2QKg _wTP5IMA0Eeaaj7sYFz2QKg" incomingEdges="_HRrdYMAtEeaaj7sYFz2QKg _HuEecMAtEeaaj7sYFz2QKg" width="12" height="10">
274 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//MultiplicityAssertion"/>
275 <semanticElements xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//MultiplicityAssertion"/>
276 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
277 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
278 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
279 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_BQSisMAtEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
280 <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"/>
281 </ownedStyle>
282 <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']"/>
283 </ownedDiagramElements>
284 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_-5OaIMArEeaaj7sYFz2QKg" name="AssertionAnnotation" tooltipText="" outgoingEdges="_LJutAMAtEeaaj7sYFz2QKg _NozjAMDnEea_b6UyFzv22g" incomingEdges="_-5SEgcArEeaaj7sYFz2QKg _u5ysgMAsEeaaj7sYFz2QKg" width="12" height="10">
285 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/>
286 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/>
287 <decorations xmi:type="viewpoint:Decoration" xmi:id="_-5SEgMArEeaaj7sYFz2QKg">
288 <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']"/>
289 </decorations>
290 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
291 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
292 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
293 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_XIPi0MDwEea_b6UyFzv22g" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
294 <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"/>
295 </ownedStyle>
296 <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']"/>
297 </ownedDiagramElements>
298 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_-5SEgcArEeaaj7sYFz2QKg" sourceNode="_-SH94MArEeaaj7sYFz2QKg" targetNode="_-5OaIMArEeaaj7sYFz2QKg">
299 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//MultiplicityAssertion"/>
300 <semanticElements xmi:type="ecore:EGenericType" href="ecore2logicannotations.ecore#//MultiplicityAssertion/@eGenericSuperTypes.0"/>
301 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BQWNEMAtEeaaj7sYFz2QKg" targetArrow="InputClosedArrow" routingStyle="tree">
302 <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"/>
303 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BQWNEcAtEeaaj7sYFz2QKg" showIcon="false">
304 <labelFormat>italic</labelFormat>
305 </beginLabelStyle>
306 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_BQWNEsAtEeaaj7sYFz2QKg" showIcon="false"/>
307 </ownedStyle>
308 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
309 </ownedDiagramElements>
310 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_ABfpwMAsEeaaj7sYFz2QKg" name="InverseRelationAssertion" tooltipText="" outgoingEdges="_u5ysgMAsEeaaj7sYFz2QKg _Qko2gMAtEeaaj7sYFz2QKg _D6viQMDnEea_b6UyFzv22g" width="12" height="10">
311 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//InverseRelationAssertion"/>
312 <semanticElements xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//InverseRelationAssertion"/>
313 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
314 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
315 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
316 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_ABfpwcAsEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
317 <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"/>
318 </ownedStyle>
319 <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']"/>
320 </ownedDiagramElements>
321 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_DwH3oMAsEeaaj7sYFz2QKg" name="Assertion" tooltipText="" incomingEdges="_NozjAMDnEea_b6UyFzv22g" width="12" height="10">
322 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Assertion"/>
323 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Assertion"/>
324 <decorations xmi:type="viewpoint:Decoration" xmi:id="_DwNXMMAsEeaaj7sYFz2QKg">
325 <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']"/>
326 </decorations>
327 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
328 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
329 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
330 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_DwH3ocAsEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
331 <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"/>
332 </ownedStyle>
333 <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']"/>
334 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_DwMwIMAsEeaaj7sYFz2QKg" name="name : EString" tooltipText="">
335 <target xmi:type="ecore:EAttribute" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Assertion/name"/>
336 <semanticElements xmi:type="ecore:EAttribute" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Assertion/name"/>
337 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_DwMwIsAsEeaaj7sYFz2QKg" labelAlignment="LEFT" description="_DwMwIcAsEeaaj7sYFz2QKg">
338 <labelFormat>bold</labelFormat> 47 <labelFormat>bold</labelFormat>
339 </ownedStyle> 48 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
340 <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']"/> 49 </beginLabelStyleDescription>
341 </ownedElements> 50 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_XIVCYsDwEea_b6UyFzv22g" showIcon="false" labelExpression="service:render">
342 </ownedDiagramElements>
343 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_u5ysgMAsEeaaj7sYFz2QKg" sourceNode="_ABfpwMAsEeaaj7sYFz2QKg" targetNode="_-5OaIMArEeaaj7sYFz2QKg">
344 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//InverseRelationAssertion"/>
345 <semanticElements xmi:type="ecore:EGenericType" href="ecore2logicannotations.ecore#//InverseRelationAssertion/@eGenericSuperTypes.0"/>
346 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_u5zTkMAsEeaaj7sYFz2QKg" targetArrow="InputClosedArrow" routingStyle="tree">
347 <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"/>
348 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_u5zTkcAsEeaaj7sYFz2QKg" showIcon="false">
349 <labelFormat>italic</labelFormat>
350 </beginLabelStyle>
351 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_u5zTksAsEeaaj7sYFz2QKg" showIcon="false"/>
352 </ownedStyle>
353 <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']"/>
354 </ownedDiagramElements>
355 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_CuwEwMAtEeaaj7sYFz2QKg" name="LowerMultiplicityAssertion" tooltipText="" outgoingEdges="_HRrdYMAtEeaaj7sYFz2QKg" width="12" height="10">
356 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//LowerMultiplicityAssertion"/>
357 <semanticElements xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//LowerMultiplicityAssertion"/>
358 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
359 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
360 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
361 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_CuwEwcAtEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
362 <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"/>
363 </ownedStyle>
364 <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']"/>
365 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_JJ28cMAsEeaaj7sYFz2QKg" name="lower : EInt" tooltipText="">
366 <target xmi:type="ecore:EAttribute" href="ecore2logicannotations.ecore#//LowerMultiplicityAssertion/lower"/>
367 <semanticElements xmi:type="ecore:EAttribute" href="ecore2logicannotations.ecore#//LowerMultiplicityAssertion/lower"/>
368 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_Alvw4MAtEeaaj7sYFz2QKg" labelAlignment="LEFT" description="_DwMwIcAsEeaaj7sYFz2QKg">
369 <labelFormat>bold</labelFormat>
370 </ownedStyle>
371 <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']"/>
372 </ownedElements>
373 </ownedDiagramElements>
374 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_EQaEwMAtEeaaj7sYFz2QKg" name="UpperMultiplicityAssertion" tooltipText="" outgoingEdges="_HuEecMAtEeaaj7sYFz2QKg" width="12" height="10">
375 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//UpperMultiplicityAssertion"/>
376 <semanticElements xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//UpperMultiplicityAssertion"/>
377 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
378 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
379 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
380 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_EQar0MAtEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
381 <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"/>
382 </ownedStyle>
383 <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']"/>
384 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_KDnO8MAsEeaaj7sYFz2QKg" name="upper : EInt" tooltipText="">
385 <target xmi:type="ecore:EAttribute" href="ecore2logicannotations.ecore#//UpperMultiplicityAssertion/upper"/>
386 <semanticElements xmi:type="ecore:EAttribute" href="ecore2logicannotations.ecore#//UpperMultiplicityAssertion/upper"/>
387 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_F2B-wMAtEeaaj7sYFz2QKg" labelAlignment="LEFT" description="_DwMwIcAsEeaaj7sYFz2QKg">
388 <labelFormat>bold</labelFormat> 51 <labelFormat>bold</labelFormat>
389 </ownedStyle> 52 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
390 <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']"/> 53 </endLabelStyleDescription>
391 </ownedElements> 54 </computedStyleDescriptions>
392 </ownedDiagramElements> 55 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_nza10KPiEemFddEW7ouAfg" labelExpression="service:renderAsNode" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
393 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HRrdYMAtEeaaj7sYFz2QKg" sourceNode="_CuwEwMAtEeaaj7sYFz2QKg" targetNode="_-SH94MArEeaaj7sYFz2QKg"> 56 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
394 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//LowerMultiplicityAssertion"/> 57 <labelFormat>bold</labelFormat>
395 <semanticElements xmi:type="ecore:EGenericType" href="ecore2logicannotations.ecore#//LowerMultiplicityAssertion/@eGenericSuperTypes.0"/> 58 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
396 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HRsEcMAtEeaaj7sYFz2QKg" targetArrow="InputClosedArrow" routingStyle="tree"> 59 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
397 <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"/> 60 </computedStyleDescriptions>
398 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HRsEccAtEeaaj7sYFz2QKg" showIcon="false"> 61 </data>
399 <labelFormat>italic</labelFormat> 62 </ownedAnnotationEntries>
400 </beginLabelStyle> 63 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_9rjtIMArEeaaj7sYFz2QKg" source="GMF_DIAGRAMS">
401 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HRsEcsAtEeaaj7sYFz2QKg" showIcon="false"/> 64 <data xmi:type="notation:Diagram" xmi:id="_9rjtIcArEeaaj7sYFz2QKg" type="Sirius" element="_9rgp0MArEeaaj7sYFz2QKg" measurementUnit="Pixel">
402 </ownedStyle> 65 <children xmi:type="notation:Node" xmi:id="_-SNdcMArEeaaj7sYFz2QKg" type="2003" element="_-SH94MArEeaaj7sYFz2QKg">
403 <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']"/> 66 <children xmi:type="notation:Node" xmi:id="_-SOEgMArEeaaj7sYFz2QKg" type="5007"/>
404 </ownedDiagramElements> 67 <children xmi:type="notation:Node" xmi:id="_-SOrkMArEeaaj7sYFz2QKg" type="7004">
405 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HuEecMAtEeaaj7sYFz2QKg" sourceNode="_EQaEwMAtEeaaj7sYFz2QKg" targetNode="_-SH94MArEeaaj7sYFz2QKg"> 68 <styles xmi:type="notation:SortingStyle" xmi:id="_-SOrkcArEeaaj7sYFz2QKg"/>
406 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//UpperMultiplicityAssertion"/> 69 <styles xmi:type="notation:FilteringStyle" xmi:id="_-SOrksArEeaaj7sYFz2QKg"/>
407 <semanticElements xmi:type="ecore:EGenericType" href="ecore2logicannotations.ecore#//UpperMultiplicityAssertion/@eGenericSuperTypes.0"/> 70 </children>
408 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HuEeccAtEeaaj7sYFz2QKg" targetArrow="InputClosedArrow" routingStyle="tree"> 71 <styles xmi:type="notation:ShapeStyle" xmi:id="_-SNdccArEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
409 <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"/> 72 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-SNdcsArEeaaj7sYFz2QKg" x="100" y="180"/>
410 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HuEecsAtEeaaj7sYFz2QKg" showIcon="false"> 73 </children>
411 <labelFormat>italic</labelFormat> 74 <children xmi:type="notation:Node" xmi:id="_-5TSoMArEeaaj7sYFz2QKg" type="2003" element="_-5OaIMArEeaaj7sYFz2QKg">
412 </beginLabelStyle> 75 <children xmi:type="notation:Node" xmi:id="_-5T5sMArEeaaj7sYFz2QKg" type="5007"/>
413 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HuEec8AtEeaaj7sYFz2QKg" showIcon="false"/> 76 <children xmi:type="notation:Node" xmi:id="_-5T5scArEeaaj7sYFz2QKg" type="7004">
414 </ownedStyle> 77 <styles xmi:type="notation:SortingStyle" xmi:id="_-5T5ssArEeaaj7sYFz2QKg"/>
415 <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']"/> 78 <styles xmi:type="notation:FilteringStyle" xmi:id="_-5T5s8ArEeaaj7sYFz2QKg"/>
416 </ownedDiagramElements> 79 </children>
417 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_LJomYMAtEeaaj7sYFz2QKg" name="Annotation" tooltipText="" incomingEdges="_LJutAMAtEeaaj7sYFz2QKg" width="12" height="10"> 80 <styles xmi:type="notation:ShapeStyle" xmi:id="_-5TSocArEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
418 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//Annotation"/> 81 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-5TSosArEeaaj7sYFz2QKg" x="260" y="15"/>
419 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//Annotation"/> 82 </children>
420 <decorations xmi:type="viewpoint:Decoration" xmi:id="_LJte4MAtEeaaj7sYFz2QKg"> 83 <children xmi:type="notation:Node" xmi:id="_ABlJUMAsEeaaj7sYFz2QKg" type="2003" element="_ABfpwMAsEeaaj7sYFz2QKg">
421 <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']"/> 84 <children xmi:type="notation:Node" xmi:id="_ABlwYMAsEeaaj7sYFz2QKg" type="5007"/>
422 </decorations> 85 <children xmi:type="notation:Node" xmi:id="_ABlwYcAsEeaaj7sYFz2QKg" type="7004">
423 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 86 <styles xmi:type="notation:SortingStyle" xmi:id="_ABlwYsAsEeaaj7sYFz2QKg"/>
424 <arrangeConstraints>KEEP_SIZE</arrangeConstraints> 87 <styles xmi:type="notation:FilteringStyle" xmi:id="_ABlwY8AsEeaaj7sYFz2QKg"/>
425 <arrangeConstraints>KEEP_RATIO</arrangeConstraints> 88 </children>
426 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_LJomYcAtEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 89 <styles xmi:type="notation:ShapeStyle" xmi:id="_ABlJUcAsEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
427 <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"/> 90 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ABlJUsAsEeaaj7sYFz2QKg" x="520" y="180" width="168" height="100"/>
91 </children>
92 <children xmi:type="notation:Node" xmi:id="_DwQagMAsEeaaj7sYFz2QKg" type="2003" element="_DwH3oMAsEeaaj7sYFz2QKg">
93 <children xmi:type="notation:Node" xmi:id="_DwRBkMAsEeaaj7sYFz2QKg" type="5007"/>
94 <children xmi:type="notation:Node" xmi:id="_DwRBkcAsEeaaj7sYFz2QKg" type="7004">
95 <children xmi:type="notation:Node" xmi:id="_DwRBlMAsEeaaj7sYFz2QKg" type="3010" element="_DwMwIMAsEeaaj7sYFz2QKg">
96 <styles xmi:type="notation:FontStyle" xmi:id="_DwRBlcAsEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8" bold="true"/>
97 <layoutConstraint xmi:type="notation:Location" xmi:id="_DwRBlsAsEeaaj7sYFz2QKg"/>
98 </children>
99 <children xmi:type="notation:Node" xmi:id="_n0E9IKPiEemFddEW7ouAfg" type="3010" element="_nzRr5aPiEemFddEW7ouAfg">
100 <styles xmi:type="notation:FontStyle" xmi:id="_n0E9IaPiEemFddEW7ouAfg" fontName="Segoe UI" fontHeight="8" bold="true"/>
101 <layoutConstraint xmi:type="notation:Location" xmi:id="_n0E9IqPiEemFddEW7ouAfg"/>
102 </children>
103 <styles xmi:type="notation:SortingStyle" xmi:id="_DwRBksAsEeaaj7sYFz2QKg"/>
104 <styles xmi:type="notation:FilteringStyle" xmi:id="_DwRBk8AsEeaaj7sYFz2QKg"/>
105 </children>
106 <styles xmi:type="notation:ShapeStyle" xmi:id="_DwQagcAsEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
107 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DwQagsAsEeaaj7sYFz2QKg" x="500" y="15"/>
108 </children>
109 <children xmi:type="notation:Node" xmi:id="_Cu2ycMAtEeaaj7sYFz2QKg" type="2003" element="_CuwEwMAtEeaaj7sYFz2QKg">
110 <children xmi:type="notation:Node" xmi:id="_Cu2yc8AtEeaaj7sYFz2QKg" type="5007"/>
111 <children xmi:type="notation:Node" xmi:id="_Cu2ydMAtEeaaj7sYFz2QKg" type="7004">
112 <children xmi:type="notation:Node" xmi:id="_GeXKEMAtEeaaj7sYFz2QKg" type="3010" element="_JJ28cMAsEeaaj7sYFz2QKg">
113 <styles xmi:type="notation:FontStyle" xmi:id="_GeXKEcAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8" bold="true"/>
114 <layoutConstraint xmi:type="notation:Location" xmi:id="_GeXKEsAtEeaaj7sYFz2QKg"/>
115 </children>
116 <styles xmi:type="notation:SortingStyle" xmi:id="_Cu2ydcAtEeaaj7sYFz2QKg"/>
117 <styles xmi:type="notation:FilteringStyle" xmi:id="_Cu2ydsAtEeaaj7sYFz2QKg"/>
118 </children>
119 <styles xmi:type="notation:ShapeStyle" xmi:id="_Cu2yccAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
120 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cu2ycsAtEeaaj7sYFz2QKg" x="25" y="330" width="120" height="100"/>
121 </children>
122 <children xmi:type="notation:Node" xmi:id="_EQinoMAtEeaaj7sYFz2QKg" type="2003" element="_EQaEwMAtEeaaj7sYFz2QKg">
123 <children xmi:type="notation:Node" xmi:id="_EQjOsMAtEeaaj7sYFz2QKg" type="5007"/>
124 <children xmi:type="notation:Node" xmi:id="_EQjOscAtEeaaj7sYFz2QKg" type="7004">
125 <children xmi:type="notation:Node" xmi:id="_GLWugMAtEeaaj7sYFz2QKg" type="3010" element="_KDnO8MAsEeaaj7sYFz2QKg">
126 <styles xmi:type="notation:FontStyle" xmi:id="_GLWugcAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8" bold="true"/>
127 <layoutConstraint xmi:type="notation:Location" xmi:id="_GLWugsAtEeaaj7sYFz2QKg"/>
128 </children>
129 <styles xmi:type="notation:SortingStyle" xmi:id="_EQjOssAtEeaaj7sYFz2QKg"/>
130 <styles xmi:type="notation:FilteringStyle" xmi:id="_EQjOs8AtEeaaj7sYFz2QKg"/>
131 </children>
132 <styles xmi:type="notation:ShapeStyle" xmi:id="_EQinocAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
133 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EQinosAtEeaaj7sYFz2QKg" x="163" y="330" width="120" height="100"/>
134 </children>
135 <children xmi:type="notation:Node" xmi:id="_LJwiMMAtEeaaj7sYFz2QKg" type="2003" element="_LJomYMAtEeaaj7sYFz2QKg">
136 <children xmi:type="notation:Node" xmi:id="_LJwiM8AtEeaaj7sYFz2QKg" type="5007"/>
137 <children xmi:type="notation:Node" xmi:id="_LJxJQMAtEeaaj7sYFz2QKg" type="7004">
138 <styles xmi:type="notation:SortingStyle" xmi:id="_LJxJQcAtEeaaj7sYFz2QKg"/>
139 <styles xmi:type="notation:FilteringStyle" xmi:id="_LJxJQsAtEeaaj7sYFz2QKg"/>
140 </children>
141 <styles xmi:type="notation:ShapeStyle" xmi:id="_LJwiMcAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
142 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LJwiMsAtEeaaj7sYFz2QKg" x="280" y="-150"/>
143 </children>
144 <children xmi:type="notation:Node" xmi:id="_OgZt4MAtEeaaj7sYFz2QKg" type="2003" element="_OgM5kMAtEeaaj7sYFz2QKg">
145 <children xmi:type="notation:Node" xmi:id="_OgZt48AtEeaaj7sYFz2QKg" type="5007"/>
146 <children xmi:type="notation:Node" xmi:id="_OgZt5MAtEeaaj7sYFz2QKg" type="7004">
147 <children xmi:type="notation:Node" xmi:id="_n0OuIKPiEemFddEW7ouAfg" type="3010" element="_nza106PiEemFddEW7ouAfg">
148 <styles xmi:type="notation:FontStyle" xmi:id="_n0OuIaPiEemFddEW7ouAfg" fontName="Segoe UI" fontHeight="8"/>
149 <layoutConstraint xmi:type="notation:Location" xmi:id="_n0OuIqPiEemFddEW7ouAfg"/>
150 </children>
151 <children xmi:type="notation:Node" xmi:id="_n0OuI6PiEemFddEW7ouAfg" type="3010" element="_nza11aPiEemFddEW7ouAfg">
152 <styles xmi:type="notation:FontStyle" xmi:id="_n0OuJKPiEemFddEW7ouAfg" fontName="Segoe UI" fontHeight="8"/>
153 <layoutConstraint xmi:type="notation:Location" xmi:id="_n0OuJaPiEemFddEW7ouAfg"/>
154 </children>
155 <styles xmi:type="notation:SortingStyle" xmi:id="_OgZt5cAtEeaaj7sYFz2QKg"/>
156 <styles xmi:type="notation:FilteringStyle" xmi:id="_OgZt5sAtEeaaj7sYFz2QKg"/>
157 </children>
158 <styles xmi:type="notation:ShapeStyle" xmi:id="_OgZt4cAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8" italic="true"/>
159 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OgZt4sAtEeaaj7sYFz2QKg" x="397" y="312"/>
160 </children>
161 <styles xmi:type="notation:DiagramStyle" xmi:id="_9rjtIsArEeaaj7sYFz2QKg"/>
162 <edges xmi:type="notation:Edge" xmi:id="_-5VH0MArEeaaj7sYFz2QKg" type="4001" element="_-5SEgcArEeaaj7sYFz2QKg" source="_-SNdcMArEeaaj7sYFz2QKg" target="_-5TSoMArEeaaj7sYFz2QKg">
163 <children xmi:type="notation:Node" xmi:id="_-5Vu4MArEeaaj7sYFz2QKg" type="6001">
164 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-5Vu4cArEeaaj7sYFz2QKg" y="-10"/>
165 </children>
166 <children xmi:type="notation:Node" xmi:id="_-5Vu4sArEeaaj7sYFz2QKg" type="6002">
167 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-5Vu48ArEeaaj7sYFz2QKg" y="10"/>
168 </children>
169 <children xmi:type="notation:Node" xmi:id="_-5Vu5MArEeaaj7sYFz2QKg" type="6003">
170 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-5Vu5cArEeaaj7sYFz2QKg" y="10"/>
171 </children>
172 <styles xmi:type="notation:ConnectorStyle" xmi:id="_-5VH0cArEeaaj7sYFz2QKg" routing="Tree"/>
173 <styles xmi:type="notation:FontStyle" xmi:id="_-5VH0sArEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
174 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-5VH08ArEeaaj7sYFz2QKg" points="[210, 135, 210, 135]$[0, 0, 0, 0]"/>
175 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-5WV8MArEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
176 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-5WV8cArEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
177 </edges>
178 <edges xmi:type="notation:Edge" xmi:id="_u58dgMAsEeaaj7sYFz2QKg" type="4001" element="_u5ysgMAsEeaaj7sYFz2QKg" source="_ABlJUMAsEeaaj7sYFz2QKg" target="_-5TSoMArEeaaj7sYFz2QKg">
179 <children xmi:type="notation:Node" xmi:id="_u58dhMAsEeaaj7sYFz2QKg" type="6001">
180 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u59EkMAsEeaaj7sYFz2QKg" y="-10"/>
181 </children>
182 <children xmi:type="notation:Node" xmi:id="_u59EkcAsEeaaj7sYFz2QKg" type="6002">
183 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u59EksAsEeaaj7sYFz2QKg" y="10"/>
184 </children>
185 <children xmi:type="notation:Node" xmi:id="_u59Ek8AsEeaaj7sYFz2QKg" type="6003">
186 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u59ElMAsEeaaj7sYFz2QKg" y="10"/>
187 </children>
188 <styles xmi:type="notation:ConnectorStyle" xmi:id="_u58dgcAsEeaaj7sYFz2QKg" routing="Tree"/>
189 <styles xmi:type="notation:FontStyle" xmi:id="_u58dgsAsEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
190 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_u58dg8AsEeaaj7sYFz2QKg" points="[0, 0, 397, 166]$[-395, -165, 2, 1]"/>
191 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_u59ElcAsEeaaj7sYFz2QKg" id="(0.8132530120481928,0.0)"/>
192 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_u59ElsAsEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
193 </edges>
194 <edges xmi:type="notation:Edge" xmi:id="_HR0nUMAtEeaaj7sYFz2QKg" type="4001" element="_HRrdYMAtEeaaj7sYFz2QKg" source="_Cu2ycMAtEeaaj7sYFz2QKg" target="_-SNdcMArEeaaj7sYFz2QKg">
195 <children xmi:type="notation:Node" xmi:id="_HR1OYMAtEeaaj7sYFz2QKg" type="6001">
196 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HR1OYcAtEeaaj7sYFz2QKg" y="-10"/>
197 </children>
198 <children xmi:type="notation:Node" xmi:id="_HR1OYsAtEeaaj7sYFz2QKg" type="6002">
199 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HR1OY8AtEeaaj7sYFz2QKg" y="10"/>
200 </children>
201 <children xmi:type="notation:Node" xmi:id="_HR1OZMAtEeaaj7sYFz2QKg" type="6003">
202 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HR1OZcAtEeaaj7sYFz2QKg" y="10"/>
203 </children>
204 <styles xmi:type="notation:ConnectorStyle" xmi:id="_HR0nUcAtEeaaj7sYFz2QKg" routing="Tree"/>
205 <styles xmi:type="notation:FontStyle" xmi:id="_HR0nUsAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
206 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HR0nU8AtEeaaj7sYFz2QKg" points="[0, 0, 2, 151]$[-2, -110, 0, 41]"/>
207 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HR1OZsAtEeaaj7sYFz2QKg" id="(0.635593220338983,0.0)"/>
208 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HR1OZ8AtEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
209 </edges>
210 <edges xmi:type="notation:Edge" xmi:id="_HuNoYMAtEeaaj7sYFz2QKg" type="4001" element="_HuEecMAtEeaaj7sYFz2QKg" source="_EQinoMAtEeaaj7sYFz2QKg" target="_-SNdcMArEeaaj7sYFz2QKg">
211 <children xmi:type="notation:Node" xmi:id="_HuNoZMAtEeaaj7sYFz2QKg" type="6001">
212 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HuNoZcAtEeaaj7sYFz2QKg" y="-10"/>
213 </children>
214 <children xmi:type="notation:Node" xmi:id="_HuNoZsAtEeaaj7sYFz2QKg" type="6002">
215 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HuNoZ8AtEeaaj7sYFz2QKg" y="10"/>
216 </children>
217 <children xmi:type="notation:Node" xmi:id="_HuNoaMAtEeaaj7sYFz2QKg" type="6003">
218 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HuNoacAtEeaaj7sYFz2QKg" y="10"/>
219 </children>
220 <styles xmi:type="notation:ConnectorStyle" xmi:id="_HuNoYcAtEeaaj7sYFz2QKg" routing="Tree"/>
221 <styles xmi:type="notation:FontStyle" xmi:id="_HuNoYsAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
222 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HuNoY8AtEeaaj7sYFz2QKg" points="[0, 0, 124, 151]$[-124, -150, 0, 1]"/>
223 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HuNoasAtEeaaj7sYFz2QKg" id="(0.5,0.0)"/>
224 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HuNoa8AtEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
225 </edges>
226 <edges xmi:type="notation:Edge" xmi:id="_LJyXYMAtEeaaj7sYFz2QKg" type="4001" element="_LJutAMAtEeaaj7sYFz2QKg" source="_-5TSoMArEeaaj7sYFz2QKg" target="_LJwiMMAtEeaaj7sYFz2QKg">
227 <children xmi:type="notation:Node" xmi:id="_LJyXZMAtEeaaj7sYFz2QKg" type="6001">
228 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LJyXZcAtEeaaj7sYFz2QKg" y="-10"/>
229 </children>
230 <children xmi:type="notation:Node" xmi:id="_LJyXZsAtEeaaj7sYFz2QKg" type="6002">
231 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LJyXZ8AtEeaaj7sYFz2QKg" y="10"/>
232 </children>
233 <children xmi:type="notation:Node" xmi:id="_LJyXaMAtEeaaj7sYFz2QKg" type="6003">
234 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LJyXacAtEeaaj7sYFz2QKg" y="10"/>
235 </children>
236 <styles xmi:type="notation:ConnectorStyle" xmi:id="_LJyXYcAtEeaaj7sYFz2QKg" routing="Tree"/>
237 <styles xmi:type="notation:FontStyle" xmi:id="_LJyXYsAtEeaaj7sYFz2QKg" fontName="Segoe UI" fontHeight="8"/>
238 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LJyXY8AtEeaaj7sYFz2QKg" points="[260, 15, 260, 15]$[0, 0, 0, 0]"/>
239 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LJzlgMAtEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
240 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LJzlgcAtEeaaj7sYFz2QKg" id="(0.5,0.5)"/>
241 </edges>
242 <edges xmi:type="notation:Edge" xmi:id="_QkxZYMAtEeaaj7sYFz2QKg" type="4001" element="_Qko2gMAtEeaaj7sYFz2QKg" source="_ABlJUMAsEeaaj7sYFz2QKg" target="_OgZt4MAtEeaaj7sYFz2QKg">
243 <children xmi:type="notation:Node" xmi:id="_QkxZZMAtEeaaj7sYFz2QKg" type="6001">
244 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QkxZZcAtEeaaj7sYFz2QKg" x="-60" y="10"/>
245 </children>
246 <children xmi:type="notation:Node" xmi:id="_QkxZZsAtEeaaj7sYFz2QKg" type="6002">
247 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QkxZZ8AtEeaaj7sYFz2QKg" x="10"/>
248 </children>
249 <children xmi:type="notation:Node" xmi:id="_QkxZaMAtEeaaj7sYFz2QKg" type="6003">
250 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QkxZacAtEeaaj7sYFz2QKg" y="-10"/>
251 </children>
252 <styles xmi:type="notation:ConnectorStyle" xmi:id="_QkxZYcAtEeaaj7sYFz2QKg" routing="Rectilinear"/>
253 <styles xmi:type="notation:FontStyle" xmi:id="_QkxZYsAtEeaaj7sYFz2QKg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
254 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QkxZY8AtEeaaj7sYFz2QKg" points="[-14, 98, 275, -34]$[-14, 182, 275, 50]$[-83, 182, 206, 50]"/>
255 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QkyAcMAtEeaaj7sYFz2QKg" id="(1.0,0.0)"/>
256 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QkyAccAtEeaaj7sYFz2QKg" id="(0.0,0.0)"/>
257 </edges>
258 <edges xmi:type="notation:Edge" xmi:id="_wTbfUMA0Eeaaj7sYFz2QKg" type="4001" element="_wTP5IMA0Eeaaj7sYFz2QKg" source="_-SNdcMArEeaaj7sYFz2QKg" target="_OgZt4MAtEeaaj7sYFz2QKg">
259 <children xmi:type="notation:Node" xmi:id="_wTbfVMA0Eeaaj7sYFz2QKg" type="6001">
260 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wTbfVcA0Eeaaj7sYFz2QKg" x="18" y="-12"/>
261 </children>
262 <children xmi:type="notation:Node" xmi:id="_wTbfVsA0Eeaaj7sYFz2QKg" type="6002">
263 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wTbfV8A0Eeaaj7sYFz2QKg" x="70" y="10"/>
264 </children>
265 <children xmi:type="notation:Node" xmi:id="_wTcGYMA0Eeaaj7sYFz2QKg" type="6003">
266 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wTcGYcA0Eeaaj7sYFz2QKg" x="-11" y="10"/>
267 </children>
268 <styles xmi:type="notation:ConnectorStyle" xmi:id="_wTbfUcA0Eeaaj7sYFz2QKg" routing="Rectilinear"/>
269 <styles xmi:type="notation:FontStyle" xmi:id="_wTbfUsA0Eeaaj7sYFz2QKg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
270 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wTbfU8A0Eeaaj7sYFz2QKg" points="[0, 0, -232, -92]$[110, 0, -122, -92]$[110, 152, -122, 60]$[171, 152, -61, 60]"/>
271 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wTcGYsA0Eeaaj7sYFz2QKg" id="(1.0,0.40816326530612246)"/>
272 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wTcGY8A0Eeaaj7sYFz2QKg" id="(0.2966101694915254,0.0)"/>
273 </edges>
274 <edges xmi:type="notation:Edge" xmi:id="_D6-y0MDnEea_b6UyFzv22g" type="4001" element="_D6viQMDnEea_b6UyFzv22g" source="_ABlJUMAsEeaaj7sYFz2QKg" target="_OgZt4MAtEeaaj7sYFz2QKg">
275 <children xmi:type="notation:Node" xmi:id="_D6_Z4MDnEea_b6UyFzv22g" type="6001">
276 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D6_Z4cDnEea_b6UyFzv22g" x="-58" y="-6"/>
277 </children>
278 <children xmi:type="notation:Node" xmi:id="_D6_Z4sDnEea_b6UyFzv22g" type="6002">
279 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D6_Z48DnEea_b6UyFzv22g" x="40" y="10"/>
280 </children>
281 <children xmi:type="notation:Node" xmi:id="_D6_Z5MDnEea_b6UyFzv22g" type="6003">
282 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D6_Z5cDnEea_b6UyFzv22g" x="4" y="-10"/>
283 </children>
284 <styles xmi:type="notation:ConnectorStyle" xmi:id="_D6-y0cDnEea_b6UyFzv22g" routing="Rectilinear"/>
285 <styles xmi:type="notation:FontStyle" xmi:id="_D6-y0sDnEea_b6UyFzv22g" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
286 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D6-y08DnEea_b6UyFzv22g" points="[166, -35, 83, -157]$[200, -35, 117, -157]$[200, 119, 117, -3]$[83, 119, 0, -3]"/>
287 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D6_Z5sDnEea_b6UyFzv22g" id="(0.0,0.8673469387755102)"/>
288 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D7AA8MDnEea_b6UyFzv22g" id="(1.0,0.7653061224489796)"/>
289 </edges>
290 <edges xmi:type="notation:Edge" xmi:id="_NpFP0MDnEea_b6UyFzv22g" type="4001" element="_NozjAMDnEea_b6UyFzv22g" source="_-5TSoMArEeaaj7sYFz2QKg" target="_DwQagMAsEeaaj7sYFz2QKg">
291 <children xmi:type="notation:Node" xmi:id="_NpFP1MDnEea_b6UyFzv22g" type="6001">
292 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpFP1cDnEea_b6UyFzv22g" y="-10"/>
293 </children>
294 <children xmi:type="notation:Node" xmi:id="_NpF24MDnEea_b6UyFzv22g" type="6002">
295 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpF24cDnEea_b6UyFzv22g" y="10"/>
296 </children>
297 <children xmi:type="notation:Node" xmi:id="_NpF24sDnEea_b6UyFzv22g" type="6003">
298 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpF248DnEea_b6UyFzv22g" y="10"/>
299 </children>
300 <styles xmi:type="notation:ConnectorStyle" xmi:id="_NpFP0cDnEea_b6UyFzv22g" routing="Rectilinear"/>
301 <styles xmi:type="notation:FontStyle" xmi:id="_NpFP0sDnEea_b6UyFzv22g" fontName="Segoe UI" fontHeight="8" bold="true"/>
302 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NpFP08DnEea_b6UyFzv22g" points="[260, 15, 260, 15]$[500, 15, 500, 15]"/>
303 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NpF25MDnEea_b6UyFzv22g" id="(0.5,0.5)"/>
304 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NpF25cDnEea_b6UyFzv22g" id="(0.5,0.5)"/>
305 </edges>
306 </data>
307 </ownedAnnotationEntries>
308 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_-SH94MArEeaaj7sYFz2QKg" name="MultiplicityAssertion" tooltipText="" outgoingEdges="_-5SEgcArEeaaj7sYFz2QKg _wTP5IMA0Eeaaj7sYFz2QKg" incomingEdges="_HRrdYMAtEeaaj7sYFz2QKg _HuEecMAtEeaaj7sYFz2QKg" width="12" height="10">
309 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//MultiplicityAssertion"/>
310 <semanticElements xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//MultiplicityAssertion"/>
311 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
312 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
313 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
314 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_BQSisMAtEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
315 <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"/>
316 </ownedStyle>
317 <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']"/>
318 </ownedDiagramElements>
319 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_-5OaIMArEeaaj7sYFz2QKg" name="AssertionAnnotation" tooltipText="" outgoingEdges="_LJutAMAtEeaaj7sYFz2QKg _NozjAMDnEea_b6UyFzv22g" incomingEdges="_-5SEgcArEeaaj7sYFz2QKg _u5ysgMAsEeaaj7sYFz2QKg" width="12" height="10">
320 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/>
321 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/>
322 <decorations xmi:type="viewpoint:Decoration" uid="_-5SEgMArEeaaj7sYFz2QKg">
323 <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']"/>
324 </decorations>
325 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
326 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
327 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
328 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_XIPi0MDwEea_b6UyFzv22g" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
329 <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"/>
330 </ownedStyle>
331 <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']"/>
332 </ownedDiagramElements>
333 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_-5SEgcArEeaaj7sYFz2QKg" sourceNode="_-SH94MArEeaaj7sYFz2QKg" targetNode="_-5OaIMArEeaaj7sYFz2QKg">
334 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//MultiplicityAssertion"/>
335 <semanticElements xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//MultiplicityAssertion"/>
336 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_BQWNEMAtEeaaj7sYFz2QKg" targetArrow="InputClosedArrow" routingStyle="tree">
337 <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"/>
338 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_BQWNEcAtEeaaj7sYFz2QKg" showIcon="false">
339 <labelFormat>italic</labelFormat>
340 </beginLabelStyle>
341 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_BQWNEsAtEeaaj7sYFz2QKg" showIcon="false"/>
342 </ownedStyle>
343 <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']"/>
344 </ownedDiagramElements>
345 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_ABfpwMAsEeaaj7sYFz2QKg" name="InverseRelationAssertion" tooltipText="" outgoingEdges="_u5ysgMAsEeaaj7sYFz2QKg _Qko2gMAtEeaaj7sYFz2QKg _D6viQMDnEea_b6UyFzv22g" width="12" height="10">
346 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//InverseRelationAssertion"/>
347 <semanticElements xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//InverseRelationAssertion"/>
348 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
349 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
350 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
351 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ABfpwcAsEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
352 <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"/>
353 </ownedStyle>
354 <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']"/>
355 </ownedDiagramElements>
356 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_DwH3oMAsEeaaj7sYFz2QKg" name="Assertion" tooltipText="" incomingEdges="_NozjAMDnEea_b6UyFzv22g" width="12" height="10">
357 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Assertion"/>
358 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Assertion"/>
359 <decorations xmi:type="viewpoint:Decoration" uid="_DwNXMMAsEeaaj7sYFz2QKg">
360 <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']"/>
361 </decorations>
362 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
363 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
364 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
365 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_DwH3ocAsEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
366 <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"/>
367 </ownedStyle>
368 <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']"/>
369 <ownedElements xmi:type="diagram:DNodeListElement" uid="_DwMwIMAsEeaaj7sYFz2QKg" name="name : EString" tooltipText="">
370 <target xmi:type="ecore:EAttribute" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Assertion/name"/>
371 <semanticElements xmi:type="ecore:EAttribute" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Assertion/name"/>
372 <ownedStyle xmi:type="diagram:BundledImage" uid="_DwMwIsAsEeaaj7sYFz2QKg" labelAlignment="LEFT" description="_DwMwIcAsEeaaj7sYFz2QKg">
373 <labelFormat>bold</labelFormat>
428 </ownedStyle> 374 </ownedStyle>
429 <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']"/> 375 <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']"/>
430 </ownedDiagramElements> 376 </ownedElements>
431 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_LJutAMAtEeaaj7sYFz2QKg" sourceNode="_-5OaIMArEeaaj7sYFz2QKg" targetNode="_LJomYMAtEeaaj7sYFz2QKg"> 377 <ownedElements xmi:type="diagram:DNodeListElement" uid="_nzRr5aPiEemFddEW7ouAfg" name=" value : Term" tooltipText="">
432 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/> 378 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Assertion/value"/>
433 <semanticElements xmi:type="ecore:EGenericType" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation/@eGenericSuperTypes.0"/> 379 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Assertion/value"/>
434 <decorations xmi:type="viewpoint:Decoration" xmi:id="_QknoYMAtEeaaj7sYFz2QKg"> 380 <ownedStyle xmi:type="diagram:BundledImage" uid="_nza10aPiEemFddEW7ouAfg" labelAlignment="LEFT" description="_nza10KPiEemFddEW7ouAfg" color="114,159,207">
435 <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']"/> 381 <labelFormat>bold</labelFormat>
436 </decorations>
437 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_XIT0QMDwEea_b6UyFzv22g" targetArrow="InputClosedArrow" routingStyle="tree">
438 <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"/>
439 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_XIUbUMDwEea_b6UyFzv22g" showIcon="false">
440 <labelFormat>italic</labelFormat>
441 </beginLabelStyle>
442 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_XIUbUcDwEea_b6UyFzv22g" showIcon="false"/>
443 </ownedStyle> 382 </ownedStyle>
444 <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']"/> 383 <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%20EReferenceNode']"/>
445 </ownedDiagramElements> 384 </ownedElements>
446 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_OgM5kMAtEeaaj7sYFz2QKg" name="Relation" tooltipText="" incomingEdges="_Qko2gMAtEeaaj7sYFz2QKg _wTP5IMA0Eeaaj7sYFz2QKg _D6viQMDnEea_b6UyFzv22g" width="12" height="10"> 385 </ownedDiagramElements>
447 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation"/> 386 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_u5ysgMAsEeaaj7sYFz2QKg" sourceNode="_ABfpwMAsEeaaj7sYFz2QKg" targetNode="_-5OaIMArEeaaj7sYFz2QKg">
448 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation"/> 387 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//InverseRelationAssertion"/>
449 <decorations xmi:type="viewpoint:Decoration" xmi:id="_OgTnQMAtEeaaj7sYFz2QKg"> 388 <semanticElements xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//InverseRelationAssertion"/>
450 <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']"/> 389 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_u5zTkMAsEeaaj7sYFz2QKg" targetArrow="InputClosedArrow" routingStyle="tree">
451 </decorations> 390 <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"/>
452 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 391 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_u5zTkcAsEeaaj7sYFz2QKg" showIcon="false">
453 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
454 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
455 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_OgNgoMAtEeaaj7sYFz2QKg" 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">
456 <labelFormat>italic</labelFormat> 392 <labelFormat>italic</labelFormat>
457 <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"/> 393 </beginLabelStyle>
458 </ownedStyle> 394 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_u5zTksAsEeaaj7sYFz2QKg" showIcon="false"/>
459 <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']"/> 395 </ownedStyle>
460 </ownedDiagramElements> 396 <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']"/>
461 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_Qko2gMAtEeaaj7sYFz2QKg" name="[1..1] inverseA" sourceNode="_ABfpwMAsEeaaj7sYFz2QKg" targetNode="_OgM5kMAtEeaaj7sYFz2QKg"> 397 </ownedDiagramElements>
462 <target xmi:type="ecore:EReference" href="ecore2logicannotations.ecore#//InverseRelationAssertion/inverseA"/> 398 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_CuwEwMAtEeaaj7sYFz2QKg" name="LowerMultiplicityAssertion" tooltipText="" outgoingEdges="_HRrdYMAtEeaaj7sYFz2QKg" width="12" height="10">
463 <semanticElements xmi:type="ecore:EReference" href="ecore2logicannotations.ecore#//InverseRelationAssertion/inverseA"/> 399 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//LowerMultiplicityAssertion"/>
464 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_UKs-QMAtEeaaj7sYFz2QKg" description="_DwN-QMAsEeaaj7sYFz2QKg" routingStyle="manhattan" strokeColor="0,0,0"> 400 <semanticElements xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//LowerMultiplicityAssertion"/>
465 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_UKs-QcAtEeaaj7sYFz2QKg" showIcon="false"> 401 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
466 <labelFormat>bold</labelFormat> 402 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
467 </centerLabelStyle> 403 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
468 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_UKs-QsAtEeaaj7sYFz2QKg" labelSize="6" showIcon="false" labelColor="39,76,114"/> 404 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_CuwEwcAtEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
405 <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"/>
406 </ownedStyle>
407 <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']"/>
408 <ownedElements xmi:type="diagram:DNodeListElement" uid="_JJ28cMAsEeaaj7sYFz2QKg" name="lower : EInt" tooltipText="">
409 <target xmi:type="ecore:EAttribute" href="ecore2logicannotations.ecore#//LowerMultiplicityAssertion/lower"/>
410 <semanticElements xmi:type="ecore:EAttribute" href="ecore2logicannotations.ecore#//LowerMultiplicityAssertion/lower"/>
411 <ownedStyle xmi:type="diagram:BundledImage" uid="_Alvw4MAtEeaaj7sYFz2QKg" labelAlignment="LEFT" description="_DwMwIcAsEeaaj7sYFz2QKg">
412 <labelFormat>bold</labelFormat>
469 </ownedStyle> 413 </ownedStyle>
470 <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']"/> 414 <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']"/>
471 </ownedDiagramElements> 415 </ownedElements>
472 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_wTP5IMA0Eeaaj7sYFz2QKg" name="[1..1] relation" sourceNode="_-SH94MArEeaaj7sYFz2QKg" targetNode="_OgM5kMAtEeaaj7sYFz2QKg"> 416 </ownedDiagramElements>
473 <target xmi:type="ecore:EReference" href="ecore2logicannotations.ecore#//MultiplicityAssertion/relation"/> 417 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_EQaEwMAtEeaaj7sYFz2QKg" name="UpperMultiplicityAssertion" tooltipText="" outgoingEdges="_HuEecMAtEeaaj7sYFz2QKg" width="12" height="10">
474 <semanticElements xmi:type="ecore:EReference" href="ecore2logicannotations.ecore#//MultiplicityAssertion/relation"/> 418 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//UpperMultiplicityAssertion"/>
475 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_x7xWIMA0Eeaaj7sYFz2QKg" description="_DwN-QMAsEeaaj7sYFz2QKg" routingStyle="manhattan" strokeColor="0,0,0"> 419 <semanticElements xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//UpperMultiplicityAssertion"/>
476 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_x7xWIcA0Eeaaj7sYFz2QKg" showIcon="false"> 420 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
477 <labelFormat>bold</labelFormat> 421 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
478 </centerLabelStyle> 422 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
479 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_x7xWIsA0Eeaaj7sYFz2QKg" labelSize="6" showIcon="false" labelColor="39,76,114"/> 423 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_EQar0MAtEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
424 <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"/>
425 </ownedStyle>
426 <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']"/>
427 <ownedElements xmi:type="diagram:DNodeListElement" uid="_KDnO8MAsEeaaj7sYFz2QKg" name="upper : EInt" tooltipText="">
428 <target xmi:type="ecore:EAttribute" href="ecore2logicannotations.ecore#//UpperMultiplicityAssertion/upper"/>
429 <semanticElements xmi:type="ecore:EAttribute" href="ecore2logicannotations.ecore#//UpperMultiplicityAssertion/upper"/>
430 <ownedStyle xmi:type="diagram:BundledImage" uid="_F2B-wMAtEeaaj7sYFz2QKg" labelAlignment="LEFT" description="_DwMwIcAsEeaaj7sYFz2QKg">
431 <labelFormat>bold</labelFormat>
480 </ownedStyle> 432 </ownedStyle>
481 <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']"/> 433 <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']"/>
482 </ownedDiagramElements> 434 </ownedElements>
483 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_D6viQMDnEea_b6UyFzv22g" name="[1..1] inverseB" sourceNode="_ABfpwMAsEeaaj7sYFz2QKg" targetNode="_OgM5kMAtEeaaj7sYFz2QKg"> 435 </ownedDiagramElements>
484 <target xmi:type="ecore:EReference" href="ecore2logicannotations.ecore#//InverseRelationAssertion/inverseB"/> 436 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_HRrdYMAtEeaaj7sYFz2QKg" sourceNode="_CuwEwMAtEeaaj7sYFz2QKg" targetNode="_-SH94MArEeaaj7sYFz2QKg">
485 <semanticElements xmi:type="ecore:EReference" href="ecore2logicannotations.ecore#//InverseRelationAssertion/inverseB"/> 437 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//LowerMultiplicityAssertion"/>
486 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_F6Fj0MDnEea_b6UyFzv22g" description="_DwN-QMAsEeaaj7sYFz2QKg" routingStyle="manhattan" strokeColor="0,0,0"> 438 <semanticElements xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//LowerMultiplicityAssertion"/>
487 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_F6Fj0cDnEea_b6UyFzv22g" showIcon="false"> 439 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_HRsEcMAtEeaaj7sYFz2QKg" targetArrow="InputClosedArrow" routingStyle="tree">
488 <labelFormat>bold</labelFormat> 440 <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"/>
489 </centerLabelStyle> 441 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_HRsEccAtEeaaj7sYFz2QKg" showIcon="false">
490 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_F6Fj0sDnEea_b6UyFzv22g" labelSize="6" showIcon="false" labelColor="39,76,114"/> 442 <labelFormat>italic</labelFormat>
443 </beginLabelStyle>
444 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_HRsEcsAtEeaaj7sYFz2QKg" showIcon="false"/>
445 </ownedStyle>
446 <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']"/>
447 </ownedDiagramElements>
448 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_HuEecMAtEeaaj7sYFz2QKg" sourceNode="_EQaEwMAtEeaaj7sYFz2QKg" targetNode="_-SH94MArEeaaj7sYFz2QKg">
449 <target xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//UpperMultiplicityAssertion"/>
450 <semanticElements xmi:type="ecore:EClass" href="ecore2logicannotations.ecore#//UpperMultiplicityAssertion"/>
451 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_HuEeccAtEeaaj7sYFz2QKg" targetArrow="InputClosedArrow" routingStyle="tree">
452 <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"/>
453 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_HuEecsAtEeaaj7sYFz2QKg" showIcon="false">
454 <labelFormat>italic</labelFormat>
455 </beginLabelStyle>
456 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_HuEec8AtEeaaj7sYFz2QKg" showIcon="false"/>
457 </ownedStyle>
458 <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']"/>
459 </ownedDiagramElements>
460 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_LJomYMAtEeaaj7sYFz2QKg" name="Annotation" tooltipText="" incomingEdges="_LJutAMAtEeaaj7sYFz2QKg" width="12" height="10">
461 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//Annotation"/>
462 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//Annotation"/>
463 <decorations xmi:type="viewpoint:Decoration" uid="_LJte4MAtEeaaj7sYFz2QKg">
464 <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']"/>
465 </decorations>
466 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
467 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
468 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
469 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_LJomYcAtEeaaj7sYFz2QKg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
470 <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"/>
471 </ownedStyle>
472 <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']"/>
473 </ownedDiagramElements>
474 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_LJutAMAtEeaaj7sYFz2QKg" sourceNode="_-5OaIMArEeaaj7sYFz2QKg" targetNode="_LJomYMAtEeaaj7sYFz2QKg">
475 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/>
476 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/>
477 <decorations xmi:type="viewpoint:Decoration" uid="_QknoYMAtEeaaj7sYFz2QKg">
478 <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']"/>
479 </decorations>
480 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_XIT0QMDwEea_b6UyFzv22g" targetArrow="InputClosedArrow" routingStyle="tree">
481 <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"/>
482 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_XIUbUMDwEea_b6UyFzv22g" showIcon="false">
483 <labelFormat>italic</labelFormat>
484 </beginLabelStyle>
485 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_XIUbUcDwEea_b6UyFzv22g" showIcon="false"/>
486 </ownedStyle>
487 <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']"/>
488 </ownedDiagramElements>
489 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_OgM5kMAtEeaaj7sYFz2QKg" name="Relation" tooltipText="" incomingEdges="_Qko2gMAtEeaaj7sYFz2QKg _wTP5IMA0Eeaaj7sYFz2QKg _D6viQMDnEea_b6UyFzv22g" width="12" height="10">
490 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation"/>
491 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation"/>
492 <decorations xmi:type="viewpoint:Decoration" uid="_OgTnQMAtEeaaj7sYFz2QKg">
493 <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']"/>
494 </decorations>
495 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
496 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
497 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
498 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_OgNgoMAtEeaaj7sYFz2QKg" 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">
499 <labelFormat>italic</labelFormat>
500 <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"/>
501 </ownedStyle>
502 <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']"/>
503 <ownedElements xmi:type="diagram:DNodeListElement" uid="_nza106PiEemFddEW7ouAfg" name=" parameters : TypeReference" tooltipText="">
504 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation/parameters"/>
505 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation/parameters"/>
506 <ownedStyle xmi:type="diagram:BundledImage" uid="_nza11KPiEemFddEW7ouAfg" labelAlignment="LEFT" color="114,159,207">
507 <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%20EReferenceNode']/@style"/>
491 </ownedStyle> 508 </ownedStyle>
492 <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']"/> 509 <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%20EReferenceNode']"/>
493 </ownedDiagramElements> 510 </ownedElements>
494 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_NozjAMDnEea_b6UyFzv22g" sourceNode="_-5OaIMArEeaaj7sYFz2QKg" targetNode="_DwH3oMAsEeaaj7sYFz2QKg" beginLabel="[0..*] annotations" endLabel="[1..1] target"> 511 <ownedElements xmi:type="diagram:DNodeListElement" uid="_nza11aPiEemFddEW7ouAfg" name=" annotations : RelationAnnotation" tooltipText="">
495 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation/target"/> 512 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation/annotations"/>
496 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Assertion/annotations"/> 513 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Relation/annotations"/>
497 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation/target"/> 514 <ownedStyle xmi:type="diagram:BundledImage" uid="_nza11qPiEemFddEW7ouAfg" labelAlignment="LEFT" color="114,159,207">
498 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_XIVpcMDwEea_b6UyFzv22g" description="_XIVCYMDwEea_b6UyFzv22g" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0"> 515 <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%20EReferenceNode']/@style"/>
499 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_XIVpccDwEea_b6UyFzv22g" showIcon="false">
500 <labelFormat>bold</labelFormat>
501 </beginLabelStyle>
502 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_XIVpcsDwEea_b6UyFzv22g" showIcon="false">
503 <labelFormat>bold</labelFormat>
504 </endLabelStyle>
505 </ownedStyle> 516 </ownedStyle>
506 <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']"/> 517 <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%20EReferenceNode']"/>
507 </ownedDiagramElements> 518 </ownedElements>
508 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 519 </ownedDiagramElements>
509 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_9rgp1cArEeaaj7sYFz2QKg"/> 520 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_Qko2gMAtEeaaj7sYFz2QKg" name="[1..1] inverseA" sourceNode="_ABfpwMAsEeaaj7sYFz2QKg" targetNode="_OgM5kMAtEeaaj7sYFz2QKg">
510 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> 521 <target xmi:type="ecore:EReference" href="ecore2logicannotations.ecore#//InverseRelationAssertion/inverseA"/>
511 <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']"/> 522 <semanticElements xmi:type="ecore:EReference" href="ecore2logicannotations.ecore#//InverseRelationAssertion/inverseA"/>
512 <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']"/> 523 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_UKs-QMAtEeaaj7sYFz2QKg" description="_DwN-QMAsEeaaj7sYFz2QKg" routingStyle="manhattan" strokeColor="0,0,0">
513 <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']"/> 524 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_UKs-QcAtEeaaj7sYFz2QKg" showIcon="false">
514 <target xmi:type="ecore:EPackage" href="ecore2logicannotations.ecore#/"/> 525 <labelFormat>bold</labelFormat>
515 </ownedRepresentations> 526 </centerLabelStyle>
516 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/> 527 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_UKs-QsAtEeaaj7sYFz2QKg" labelSize="6" showIcon="false" labelColor="39,76,114"/>
517 </ownedViews> 528 </ownedStyle>
518 <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_8mhXsMArEeaaj7sYFz2QKg"> 529 <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']"/>
519 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/> 530 </ownedDiagramElements>
520 </ownedViews> 531 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_wTP5IMA0Eeaaj7sYFz2QKg" name="[1..1] relation" sourceNode="_-SH94MArEeaaj7sYFz2QKg" targetNode="_OgM5kMAtEeaaj7sYFz2QKg">
521 <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_8mrIsMArEeaaj7sYFz2QKg"> 532 <target xmi:type="ecore:EReference" href="ecore2logicannotations.ecore#//MultiplicityAssertion/relation"/>
522 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/> 533 <semanticElements xmi:type="ecore:EReference" href="ecore2logicannotations.ecore#//MultiplicityAssertion/relation"/>
523 </ownedViews> 534 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_x7xWIMA0Eeaaj7sYFz2QKg" description="_DwN-QMAsEeaaj7sYFz2QKg" routingStyle="manhattan" strokeColor="0,0,0">
524 <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_8mydcMArEeaaj7sYFz2QKg"> 535 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_x7xWIcA0Eeaaj7sYFz2QKg" showIcon="false">
525 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/> 536 <labelFormat>bold</labelFormat>
526 </ownedViews> 537 </centerLabelStyle>
527</viewpoint:DAnalysis> 538 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_x7xWIsA0Eeaaj7sYFz2QKg" labelSize="6" showIcon="false" labelColor="39,76,114"/>
539 </ownedStyle>
540 <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']"/>
541 </ownedDiagramElements>
542 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_D6viQMDnEea_b6UyFzv22g" name="[1..1] inverseB" sourceNode="_ABfpwMAsEeaaj7sYFz2QKg" targetNode="_OgM5kMAtEeaaj7sYFz2QKg">
543 <target xmi:type="ecore:EReference" href="ecore2logicannotations.ecore#//InverseRelationAssertion/inverseB"/>
544 <semanticElements xmi:type="ecore:EReference" href="ecore2logicannotations.ecore#//InverseRelationAssertion/inverseB"/>
545 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_F6Fj0MDnEea_b6UyFzv22g" description="_DwN-QMAsEeaaj7sYFz2QKg" routingStyle="manhattan" strokeColor="0,0,0">
546 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_F6Fj0cDnEea_b6UyFzv22g" showIcon="false">
547 <labelFormat>bold</labelFormat>
548 </centerLabelStyle>
549 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_F6Fj0sDnEea_b6UyFzv22g" labelSize="6" showIcon="false" labelColor="39,76,114"/>
550 </ownedStyle>
551 <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']"/>
552 </ownedDiagramElements>
553 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_NozjAMDnEea_b6UyFzv22g" sourceNode="_-5OaIMArEeaaj7sYFz2QKg" targetNode="_DwH3oMAsEeaaj7sYFz2QKg" beginLabel="[0..*] annotations" endLabel="[1..1] target">
554 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation/target"/>
555 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Assertion/annotations"/>
556 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation/target"/>
557 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_XIVpcMDwEea_b6UyFzv22g" description="_XIVCYMDwEea_b6UyFzv22g" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
558 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_XIVpccDwEea_b6UyFzv22g" showIcon="false">
559 <labelFormat>bold</labelFormat>
560 </beginLabelStyle>
561 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_XIVpcsDwEea_b6UyFzv22g" showIcon="false">
562 <labelFormat>bold</labelFormat>
563 </endLabelStyle>
564 </ownedStyle>
565 <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']"/>
566 </ownedDiagramElements>
567 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
568 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_9rgp1cArEeaaj7sYFz2QKg"/>
569 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
570 <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']"/>
571 <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']"/>
572 <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']"/>
573 <target xmi:type="ecore:EPackage" href="ecore2logicannotations.ecore#/"/>
574 </diagram:DSemanticDiagram>
575</xmi:XMI>
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/src/hu/bme/mit/inf/dslreasoner/ecore2logic/Ecore2Logic.xtend b/Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/src/hu/bme/mit/inf/dslreasoner/ecore2logic/Ecore2Logic.xtend
index cae489e3..85b488eb 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/src/hu/bme/mit/inf/dslreasoner/ecore2logic/Ecore2Logic.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/src/hu/bme/mit/inf/dslreasoner/ecore2logic/Ecore2Logic.xtend
@@ -1,7 +1,13 @@
1package hu.bme.mit.inf.dslreasoner.ecore2logic 1package hu.bme.mit.inf.dslreasoner.ecore2logic
2 2
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
4import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TermDescription
7import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.ContainmentHierarchy
3import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem 8import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
4import java.util.List 9import java.util.List
10import java.util.Set
5import org.eclipse.emf.ecore.EAttribute 11import org.eclipse.emf.ecore.EAttribute
6import org.eclipse.emf.ecore.EClass 12import org.eclipse.emf.ecore.EClass
7import org.eclipse.emf.ecore.EEnum 13import org.eclipse.emf.ecore.EEnum
@@ -9,10 +15,6 @@ import org.eclipse.emf.ecore.EEnumLiteral
9import org.eclipse.emf.ecore.EReference 15import org.eclipse.emf.ecore.EReference
10import org.eclipse.xtend.lib.annotations.Data 16import org.eclipse.xtend.lib.annotations.Data
11import org.eclipse.xtend.lib.annotations.Delegate 17import org.eclipse.xtend.lib.annotations.Delegate
12import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput
13import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
14import java.util.Set
15import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.ContainmentHierarchy
16 18
17@Data class EcoreMetamodelDescriptor { 19@Data class EcoreMetamodelDescriptor {
18 val List<EClass> classes; 20 val List<EClass> classes;
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregateExpression.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregateExpression.java
index be146469..589145c3 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregateExpression.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregateExpression.java
@@ -2,6 +2,8 @@
2 */ 2 */
3package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage; 3package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage;
4 4
5import org.eclipse.emf.common.util.EList;
6
5 7
6/** 8/**
7 * <!-- begin-user-doc --> 9 * <!-- begin-user-doc -->
@@ -13,6 +15,8 @@ package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage;
13 * </p> 15 * </p>
14 * <ul> 16 * <ul>
15 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getRelation <em>Relation</em>}</li> 17 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getRelation <em>Relation</em>}</li>
18 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getParameterSubstitution <em>Parameter Substitution</em>}</li>
19 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getResultVariable <em>Result Variable</em>}</li>
16 * </ul> 20 * </ul>
17 * 21 *
18 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage#getAggregateExpression() 22 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage#getAggregateExpression()
@@ -46,4 +50,38 @@ public interface AggregateExpression extends Term {
46 */ 50 */
47 void setRelation(Relation value); 51 void setRelation(Relation value);
48 52
53 /**
54 * Returns the value of the '<em><b>Parameter Substitution</b></em>' containment reference list.
55 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregatedParameterSubstitution}.
56 * <!-- begin-user-doc -->
57 * <!-- end-user-doc -->
58 * @return the value of the '<em>Parameter Substitution</em>' containment reference list.
59 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage#getAggregateExpression_ParameterSubstitution()
60 * @model containment="true"
61 * @generated
62 */
63 EList<AggregatedParameterSubstitution> getParameterSubstitution();
64
65 /**
66 * Returns the value of the '<em><b>Result Variable</b></em>' reference.
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @return the value of the '<em>Result Variable</em>' reference.
70 * @see #setResultVariable(Variable)
71 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage#getAggregateExpression_ResultVariable()
72 * @model
73 * @generated
74 */
75 Variable getResultVariable();
76
77 /**
78 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getResultVariable <em>Result Variable</em>}' reference.
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @param value the new value of the '<em>Result Variable</em>' reference.
82 * @see #getResultVariable()
83 * @generated
84 */
85 void setResultVariable(Variable value);
86
49} // AggregateExpression 87} // AggregateExpression
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregatedParameterSubstitution.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregatedParameterSubstitution.java
new file mode 100644
index 00000000..94b6365d
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregatedParameterSubstitution.java
@@ -0,0 +1,46 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Aggregated Parameter Substitution</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.logic.model.logiclanguage.AggregatedParameterSubstitution#getVariable <em>Variable</em>}</li>
17 * </ul>
18 *
19 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage#getAggregatedParameterSubstitution()
20 * @model
21 * @generated
22 */
23public interface AggregatedParameterSubstitution extends EObject {
24 /**
25 * Returns the value of the '<em><b>Variable</b></em>' reference.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return the value of the '<em>Variable</em>' reference.
29 * @see #setVariable(Variable)
30 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage#getAggregatedParameterSubstitution_Variable()
31 * @model
32 * @generated
33 */
34 Variable getVariable();
35
36 /**
37 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregatedParameterSubstitution#getVariable <em>Variable</em>}' reference.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @param value the new value of the '<em>Variable</em>' reference.
41 * @see #getVariable()
42 * @generated
43 */
44 void setVariable(Variable value);
45
46} // AggregatedParameterSubstitution
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguageFactory.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguageFactory.java
index a6b0a790..33d79329 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguageFactory.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguageFactory.java
@@ -454,6 +454,15 @@ public interface LogiclanguageFactory extends EFactory {
454 Max createMax(); 454 Max createMax();
455 455
456 /** 456 /**
457 * Returns a new object of class '<em>Aggregated Parameter Substitution</em>'.
458 * <!-- begin-user-doc -->
459 * <!-- end-user-doc -->
460 * @return a new object of class '<em>Aggregated Parameter Substitution</em>'.
461 * @generated
462 */
463 AggregatedParameterSubstitution createAggregatedParameterSubstitution();
464
465 /**
457 * Returns the package supported by this factory. 466 * Returns the package supported by this factory.
458 * <!-- begin-user-doc --> 467 * <!-- begin-user-doc -->
459 * <!-- end-user-doc --> 468 * <!-- end-user-doc -->
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguagePackage.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguagePackage.java
index ddfb75a2..193d9bdd 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguagePackage.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguagePackage.java
@@ -2751,13 +2751,31 @@ public interface LogiclanguagePackage extends EPackage {
2751 int AGGREGATE_EXPRESSION__RELATION = TERM_FEATURE_COUNT + 0; 2751 int AGGREGATE_EXPRESSION__RELATION = TERM_FEATURE_COUNT + 0;
2752 2752
2753 /** 2753 /**
2754 * The feature id for the '<em><b>Parameter Substitution</b></em>' containment reference list.
2755 * <!-- begin-user-doc -->
2756 * <!-- end-user-doc -->
2757 * @generated
2758 * @ordered
2759 */
2760 int AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION = TERM_FEATURE_COUNT + 1;
2761
2762 /**
2763 * The feature id for the '<em><b>Result Variable</b></em>' reference.
2764 * <!-- begin-user-doc -->
2765 * <!-- end-user-doc -->
2766 * @generated
2767 * @ordered
2768 */
2769 int AGGREGATE_EXPRESSION__RESULT_VARIABLE = TERM_FEATURE_COUNT + 2;
2770
2771 /**
2754 * The number of structural features of the '<em>Aggregate Expression</em>' class. 2772 * The number of structural features of the '<em>Aggregate Expression</em>' class.
2755 * <!-- begin-user-doc --> 2773 * <!-- begin-user-doc -->
2756 * <!-- end-user-doc --> 2774 * <!-- end-user-doc -->
2757 * @generated 2775 * @generated
2758 * @ordered 2776 * @ordered
2759 */ 2777 */
2760 int AGGREGATE_EXPRESSION_FEATURE_COUNT = TERM_FEATURE_COUNT + 1; 2778 int AGGREGATE_EXPRESSION_FEATURE_COUNT = TERM_FEATURE_COUNT + 3;
2761 2779
2762 /** 2780 /**
2763 * The number of operations of the '<em>Aggregate Expression</em>' class. 2781 * The number of operations of the '<em>Aggregate Expression</em>' class.
@@ -2788,6 +2806,24 @@ public interface LogiclanguagePackage extends EPackage {
2788 int PROJECTED_AGGREGATE_EXPRESSION__RELATION = AGGREGATE_EXPRESSION__RELATION; 2806 int PROJECTED_AGGREGATE_EXPRESSION__RELATION = AGGREGATE_EXPRESSION__RELATION;
2789 2807
2790 /** 2808 /**
2809 * The feature id for the '<em><b>Parameter Substitution</b></em>' containment reference list.
2810 * <!-- begin-user-doc -->
2811 * <!-- end-user-doc -->
2812 * @generated
2813 * @ordered
2814 */
2815 int PROJECTED_AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION = AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION;
2816
2817 /**
2818 * The feature id for the '<em><b>Result Variable</b></em>' reference.
2819 * <!-- begin-user-doc -->
2820 * <!-- end-user-doc -->
2821 * @generated
2822 * @ordered
2823 */
2824 int PROJECTED_AGGREGATE_EXPRESSION__RESULT_VARIABLE = AGGREGATE_EXPRESSION__RESULT_VARIABLE;
2825
2826 /**
2791 * The feature id for the '<em><b>Projection Index</b></em>' attribute. 2827 * The feature id for the '<em><b>Projection Index</b></em>' attribute.
2792 * <!-- begin-user-doc --> 2828 * <!-- begin-user-doc -->
2793 * <!-- end-user-doc --> 2829 * <!-- end-user-doc -->
@@ -2834,6 +2870,24 @@ public interface LogiclanguagePackage extends EPackage {
2834 int SUM__RELATION = PROJECTED_AGGREGATE_EXPRESSION__RELATION; 2870 int SUM__RELATION = PROJECTED_AGGREGATE_EXPRESSION__RELATION;
2835 2871
2836 /** 2872 /**
2873 * The feature id for the '<em><b>Parameter Substitution</b></em>' containment reference list.
2874 * <!-- begin-user-doc -->
2875 * <!-- end-user-doc -->
2876 * @generated
2877 * @ordered
2878 */
2879 int SUM__PARAMETER_SUBSTITUTION = PROJECTED_AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION;
2880
2881 /**
2882 * The feature id for the '<em><b>Result Variable</b></em>' reference.
2883 * <!-- begin-user-doc -->
2884 * <!-- end-user-doc -->
2885 * @generated
2886 * @ordered
2887 */
2888 int SUM__RESULT_VARIABLE = PROJECTED_AGGREGATE_EXPRESSION__RESULT_VARIABLE;
2889
2890 /**
2837 * The feature id for the '<em><b>Projection Index</b></em>' attribute. 2891 * The feature id for the '<em><b>Projection Index</b></em>' attribute.
2838 * <!-- begin-user-doc --> 2892 * <!-- begin-user-doc -->
2839 * <!-- end-user-doc --> 2893 * <!-- end-user-doc -->
@@ -2880,6 +2934,24 @@ public interface LogiclanguagePackage extends EPackage {
2880 int COUNT__RELATION = AGGREGATE_EXPRESSION__RELATION; 2934 int COUNT__RELATION = AGGREGATE_EXPRESSION__RELATION;
2881 2935
2882 /** 2936 /**
2937 * The feature id for the '<em><b>Parameter Substitution</b></em>' containment reference list.
2938 * <!-- begin-user-doc -->
2939 * <!-- end-user-doc -->
2940 * @generated
2941 * @ordered
2942 */
2943 int COUNT__PARAMETER_SUBSTITUTION = AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION;
2944
2945 /**
2946 * The feature id for the '<em><b>Result Variable</b></em>' reference.
2947 * <!-- begin-user-doc -->
2948 * <!-- end-user-doc -->
2949 * @generated
2950 * @ordered
2951 */
2952 int COUNT__RESULT_VARIABLE = AGGREGATE_EXPRESSION__RESULT_VARIABLE;
2953
2954 /**
2883 * The number of structural features of the '<em>Count</em>' class. 2955 * The number of structural features of the '<em>Count</em>' class.
2884 * <!-- begin-user-doc --> 2956 * <!-- begin-user-doc -->
2885 * <!-- end-user-doc --> 2957 * <!-- end-user-doc -->
@@ -2917,6 +2989,24 @@ public interface LogiclanguagePackage extends EPackage {
2917 int MIN__RELATION = PROJECTED_AGGREGATE_EXPRESSION__RELATION; 2989 int MIN__RELATION = PROJECTED_AGGREGATE_EXPRESSION__RELATION;
2918 2990
2919 /** 2991 /**
2992 * The feature id for the '<em><b>Parameter Substitution</b></em>' containment reference list.
2993 * <!-- begin-user-doc -->
2994 * <!-- end-user-doc -->
2995 * @generated
2996 * @ordered
2997 */
2998 int MIN__PARAMETER_SUBSTITUTION = PROJECTED_AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION;
2999
3000 /**
3001 * The feature id for the '<em><b>Result Variable</b></em>' reference.
3002 * <!-- begin-user-doc -->
3003 * <!-- end-user-doc -->
3004 * @generated
3005 * @ordered
3006 */
3007 int MIN__RESULT_VARIABLE = PROJECTED_AGGREGATE_EXPRESSION__RESULT_VARIABLE;
3008
3009 /**
2920 * The feature id for the '<em><b>Projection Index</b></em>' attribute. 3010 * The feature id for the '<em><b>Projection Index</b></em>' attribute.
2921 * <!-- begin-user-doc --> 3011 * <!-- begin-user-doc -->
2922 * <!-- end-user-doc --> 3012 * <!-- end-user-doc -->
@@ -2963,6 +3053,24 @@ public interface LogiclanguagePackage extends EPackage {
2963 int MAX__RELATION = PROJECTED_AGGREGATE_EXPRESSION__RELATION; 3053 int MAX__RELATION = PROJECTED_AGGREGATE_EXPRESSION__RELATION;
2964 3054
2965 /** 3055 /**
3056 * The feature id for the '<em><b>Parameter Substitution</b></em>' containment reference list.
3057 * <!-- begin-user-doc -->
3058 * <!-- end-user-doc -->
3059 * @generated
3060 * @ordered
3061 */
3062 int MAX__PARAMETER_SUBSTITUTION = PROJECTED_AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION;
3063
3064 /**
3065 * The feature id for the '<em><b>Result Variable</b></em>' reference.
3066 * <!-- begin-user-doc -->
3067 * <!-- end-user-doc -->
3068 * @generated
3069 * @ordered
3070 */
3071 int MAX__RESULT_VARIABLE = PROJECTED_AGGREGATE_EXPRESSION__RESULT_VARIABLE;
3072
3073 /**
2966 * The feature id for the '<em><b>Projection Index</b></em>' attribute. 3074 * The feature id for the '<em><b>Projection Index</b></em>' attribute.
2967 * <!-- begin-user-doc --> 3075 * <!-- begin-user-doc -->
2968 * <!-- end-user-doc --> 3076 * <!-- end-user-doc -->
@@ -2991,6 +3099,44 @@ public interface LogiclanguagePackage extends EPackage {
2991 3099
2992 3100
2993 /** 3101 /**
3102 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregatedParameterSubstitutionImpl <em>Aggregated Parameter Substitution</em>}' class.
3103 * <!-- begin-user-doc -->
3104 * <!-- end-user-doc -->
3105 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregatedParameterSubstitutionImpl
3106 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.LogiclanguagePackageImpl#getAggregatedParameterSubstitution()
3107 * @generated
3108 */
3109 int AGGREGATED_PARAMETER_SUBSTITUTION = 65;
3110
3111 /**
3112 * The feature id for the '<em><b>Variable</b></em>' reference.
3113 * <!-- begin-user-doc -->
3114 * <!-- end-user-doc -->
3115 * @generated
3116 * @ordered
3117 */
3118 int AGGREGATED_PARAMETER_SUBSTITUTION__VARIABLE = 0;
3119
3120 /**
3121 * The number of structural features of the '<em>Aggregated Parameter Substitution</em>' class.
3122 * <!-- begin-user-doc -->
3123 * <!-- end-user-doc -->
3124 * @generated
3125 * @ordered
3126 */
3127 int AGGREGATED_PARAMETER_SUBSTITUTION_FEATURE_COUNT = 1;
3128
3129 /**
3130 * The number of operations of the '<em>Aggregated Parameter Substitution</em>' class.
3131 * <!-- begin-user-doc -->
3132 * <!-- end-user-doc -->
3133 * @generated
3134 * @ordered
3135 */
3136 int AGGREGATED_PARAMETER_SUBSTITUTION_OPERATION_COUNT = 0;
3137
3138
3139 /**
2994 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type <em>Type</em>}'. 3140 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type <em>Type</em>}'.
2995 * <!-- begin-user-doc --> 3141 * <!-- begin-user-doc -->
2996 * <!-- end-user-doc --> 3142 * <!-- end-user-doc -->
@@ -4306,6 +4452,28 @@ public interface LogiclanguagePackage extends EPackage {
4306 EReference getAggregateExpression_Relation(); 4452 EReference getAggregateExpression_Relation();
4307 4453
4308 /** 4454 /**
4455 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getParameterSubstitution <em>Parameter Substitution</em>}'.
4456 * <!-- begin-user-doc -->
4457 * <!-- end-user-doc -->
4458 * @return the meta object for the containment reference list '<em>Parameter Substitution</em>'.
4459 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getParameterSubstitution()
4460 * @see #getAggregateExpression()
4461 * @generated
4462 */
4463 EReference getAggregateExpression_ParameterSubstitution();
4464
4465 /**
4466 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getResultVariable <em>Result Variable</em>}'.
4467 * <!-- begin-user-doc -->
4468 * <!-- end-user-doc -->
4469 * @return the meta object for the reference '<em>Result Variable</em>'.
4470 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getResultVariable()
4471 * @see #getAggregateExpression()
4472 * @generated
4473 */
4474 EReference getAggregateExpression_ResultVariable();
4475
4476 /**
4309 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Sum <em>Sum</em>}'. 4477 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Sum <em>Sum</em>}'.
4310 * <!-- begin-user-doc --> 4478 * <!-- begin-user-doc -->
4311 * <!-- end-user-doc --> 4479 * <!-- end-user-doc -->
@@ -4367,6 +4535,27 @@ public interface LogiclanguagePackage extends EPackage {
4367 EAttribute getProjectedAggregateExpression_ProjectionIndex(); 4535 EAttribute getProjectedAggregateExpression_ProjectionIndex();
4368 4536
4369 /** 4537 /**
4538 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregatedParameterSubstitution <em>Aggregated Parameter Substitution</em>}'.
4539 * <!-- begin-user-doc -->
4540 * <!-- end-user-doc -->
4541 * @return the meta object for class '<em>Aggregated Parameter Substitution</em>'.
4542 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregatedParameterSubstitution
4543 * @generated
4544 */
4545 EClass getAggregatedParameterSubstitution();
4546
4547 /**
4548 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregatedParameterSubstitution#getVariable <em>Variable</em>}'.
4549 * <!-- begin-user-doc -->
4550 * <!-- end-user-doc -->
4551 * @return the meta object for the reference '<em>Variable</em>'.
4552 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregatedParameterSubstitution#getVariable()
4553 * @see #getAggregatedParameterSubstitution()
4554 * @generated
4555 */
4556 EReference getAggregatedParameterSubstitution_Variable();
4557
4558 /**
4370 * Returns the factory that creates the instances of the model. 4559 * Returns the factory that creates the instances of the model.
4371 * <!-- begin-user-doc --> 4560 * <!-- begin-user-doc -->
4372 * <!-- end-user-doc --> 4561 * <!-- end-user-doc -->
@@ -5510,6 +5699,22 @@ public interface LogiclanguagePackage extends EPackage {
5510 EReference AGGREGATE_EXPRESSION__RELATION = eINSTANCE.getAggregateExpression_Relation(); 5699 EReference AGGREGATE_EXPRESSION__RELATION = eINSTANCE.getAggregateExpression_Relation();
5511 5700
5512 /** 5701 /**
5702 * The meta object literal for the '<em><b>Parameter Substitution</b></em>' containment reference list feature.
5703 * <!-- begin-user-doc -->
5704 * <!-- end-user-doc -->
5705 * @generated
5706 */
5707 EReference AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION = eINSTANCE.getAggregateExpression_ParameterSubstitution();
5708
5709 /**
5710 * The meta object literal for the '<em><b>Result Variable</b></em>' reference feature.
5711 * <!-- begin-user-doc -->
5712 * <!-- end-user-doc -->
5713 * @generated
5714 */
5715 EReference AGGREGATE_EXPRESSION__RESULT_VARIABLE = eINSTANCE.getAggregateExpression_ResultVariable();
5716
5717 /**
5513 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.SumImpl <em>Sum</em>}' class. 5718 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.SumImpl <em>Sum</em>}' class.
5514 * <!-- begin-user-doc --> 5719 * <!-- begin-user-doc -->
5515 * <!-- end-user-doc --> 5720 * <!-- end-user-doc -->
@@ -5567,6 +5772,24 @@ public interface LogiclanguagePackage extends EPackage {
5567 */ 5772 */
5568 EAttribute PROJECTED_AGGREGATE_EXPRESSION__PROJECTION_INDEX = eINSTANCE.getProjectedAggregateExpression_ProjectionIndex(); 5773 EAttribute PROJECTED_AGGREGATE_EXPRESSION__PROJECTION_INDEX = eINSTANCE.getProjectedAggregateExpression_ProjectionIndex();
5569 5774
5775 /**
5776 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregatedParameterSubstitutionImpl <em>Aggregated Parameter Substitution</em>}' class.
5777 * <!-- begin-user-doc -->
5778 * <!-- end-user-doc -->
5779 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregatedParameterSubstitutionImpl
5780 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.LogiclanguagePackageImpl#getAggregatedParameterSubstitution()
5781 * @generated
5782 */
5783 EClass AGGREGATED_PARAMETER_SUBSTITUTION = eINSTANCE.getAggregatedParameterSubstitution();
5784
5785 /**
5786 * The meta object literal for the '<em><b>Variable</b></em>' reference feature.
5787 * <!-- begin-user-doc -->
5788 * <!-- end-user-doc -->
5789 * @generated
5790 */
5791 EReference AGGREGATED_PARAMETER_SUBSTITUTION__VARIABLE = eINSTANCE.getAggregatedParameterSubstitution_Variable();
5792
5570 } 5793 }
5571 5794
5572} //LogiclanguagePackage 5795} //LogiclanguagePackage
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregateExpressionImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregateExpressionImpl.java
index fc1420b0..31155b84 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregateExpressionImpl.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregateExpressionImpl.java
@@ -3,15 +3,22 @@
3package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl; 3package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl;
4 4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression; 5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression;
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregatedParameterSubstitution;
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage; 7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage;
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation; 8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation;
8 9
10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable;
11import java.util.Collection;
9import org.eclipse.emf.common.notify.Notification; 12import org.eclipse.emf.common.notify.Notification;
10 13
14import org.eclipse.emf.common.notify.NotificationChain;
15import org.eclipse.emf.common.util.EList;
11import org.eclipse.emf.ecore.EClass; 16import org.eclipse.emf.ecore.EClass;
12import org.eclipse.emf.ecore.InternalEObject; 17import org.eclipse.emf.ecore.InternalEObject;
13 18
14import org.eclipse.emf.ecore.impl.ENotificationImpl; 19import org.eclipse.emf.ecore.impl.ENotificationImpl;
20import org.eclipse.emf.ecore.util.EObjectContainmentEList;
21import org.eclipse.emf.ecore.util.InternalEList;
15 22
16/** 23/**
17 * <!-- begin-user-doc --> 24 * <!-- begin-user-doc -->
@@ -22,6 +29,8 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
22 * </p> 29 * </p>
23 * <ul> 30 * <ul>
24 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregateExpressionImpl#getRelation <em>Relation</em>}</li> 31 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregateExpressionImpl#getRelation <em>Relation</em>}</li>
32 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregateExpressionImpl#getParameterSubstitution <em>Parameter Substitution</em>}</li>
33 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregateExpressionImpl#getResultVariable <em>Result Variable</em>}</li>
25 * </ul> 34 * </ul>
26 * 35 *
27 * @generated 36 * @generated
@@ -38,6 +47,26 @@ public abstract class AggregateExpressionImpl extends TermImpl implements Aggreg
38 protected Relation relation; 47 protected Relation relation;
39 48
40 /** 49 /**
50 * The cached value of the '{@link #getParameterSubstitution() <em>Parameter Substitution</em>}' containment reference list.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @see #getParameterSubstitution()
54 * @generated
55 * @ordered
56 */
57 protected EList<AggregatedParameterSubstitution> parameterSubstitution;
58
59 /**
60 * The cached value of the '{@link #getResultVariable() <em>Result Variable</em>}' reference.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @see #getResultVariable()
64 * @generated
65 * @ordered
66 */
67 protected Variable resultVariable;
68
69 /**
41 * <!-- begin-user-doc --> 70 * <!-- begin-user-doc -->
42 * <!-- end-user-doc --> 71 * <!-- end-user-doc -->
43 * @generated 72 * @generated
@@ -102,11 +131,83 @@ public abstract class AggregateExpressionImpl extends TermImpl implements Aggreg
102 * @generated 131 * @generated
103 */ 132 */
104 @Override 133 @Override
134 public EList<AggregatedParameterSubstitution> getParameterSubstitution() {
135 if (parameterSubstitution == null) {
136 parameterSubstitution = new EObjectContainmentEList<AggregatedParameterSubstitution>(AggregatedParameterSubstitution.class, this, LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION);
137 }
138 return parameterSubstitution;
139 }
140
141 /**
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @generated
145 */
146 @Override
147 public Variable getResultVariable() {
148 if (resultVariable != null && resultVariable.eIsProxy()) {
149 InternalEObject oldResultVariable = (InternalEObject)resultVariable;
150 resultVariable = (Variable)eResolveProxy(oldResultVariable);
151 if (resultVariable != oldResultVariable) {
152 if (eNotificationRequired())
153 eNotify(new ENotificationImpl(this, Notification.RESOLVE, LogiclanguagePackage.AGGREGATE_EXPRESSION__RESULT_VARIABLE, oldResultVariable, resultVariable));
154 }
155 }
156 return resultVariable;
157 }
158
159 /**
160 * <!-- begin-user-doc -->
161 * <!-- end-user-doc -->
162 * @generated
163 */
164 public Variable basicGetResultVariable() {
165 return resultVariable;
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 @Override
174 public void setResultVariable(Variable newResultVariable) {
175 Variable oldResultVariable = resultVariable;
176 resultVariable = newResultVariable;
177 if (eNotificationRequired())
178 eNotify(new ENotificationImpl(this, Notification.SET, LogiclanguagePackage.AGGREGATE_EXPRESSION__RESULT_VARIABLE, oldResultVariable, resultVariable));
179 }
180
181 /**
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @generated
185 */
186 @Override
187 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
188 switch (featureID) {
189 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION:
190 return ((InternalEList<?>)getParameterSubstitution()).basicRemove(otherEnd, msgs);
191 }
192 return super.eInverseRemove(otherEnd, featureID, msgs);
193 }
194
195 /**
196 * <!-- begin-user-doc -->
197 * <!-- end-user-doc -->
198 * @generated
199 */
200 @Override
105 public Object eGet(int featureID, boolean resolve, boolean coreType) { 201 public Object eGet(int featureID, boolean resolve, boolean coreType) {
106 switch (featureID) { 202 switch (featureID) {
107 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RELATION: 203 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RELATION:
108 if (resolve) return getRelation(); 204 if (resolve) return getRelation();
109 return basicGetRelation(); 205 return basicGetRelation();
206 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION:
207 return getParameterSubstitution();
208 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RESULT_VARIABLE:
209 if (resolve) return getResultVariable();
210 return basicGetResultVariable();
110 } 211 }
111 return super.eGet(featureID, resolve, coreType); 212 return super.eGet(featureID, resolve, coreType);
112 } 213 }
@@ -116,12 +217,20 @@ public abstract class AggregateExpressionImpl extends TermImpl implements Aggreg
116 * <!-- end-user-doc --> 217 * <!-- end-user-doc -->
117 * @generated 218 * @generated
118 */ 219 */
220 @SuppressWarnings("unchecked")
119 @Override 221 @Override
120 public void eSet(int featureID, Object newValue) { 222 public void eSet(int featureID, Object newValue) {
121 switch (featureID) { 223 switch (featureID) {
122 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RELATION: 224 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RELATION:
123 setRelation((Relation)newValue); 225 setRelation((Relation)newValue);
124 return; 226 return;
227 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION:
228 getParameterSubstitution().clear();
229 getParameterSubstitution().addAll((Collection<? extends AggregatedParameterSubstitution>)newValue);
230 return;
231 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RESULT_VARIABLE:
232 setResultVariable((Variable)newValue);
233 return;
125 } 234 }
126 super.eSet(featureID, newValue); 235 super.eSet(featureID, newValue);
127 } 236 }
@@ -137,6 +246,12 @@ public abstract class AggregateExpressionImpl extends TermImpl implements Aggreg
137 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RELATION: 246 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RELATION:
138 setRelation((Relation)null); 247 setRelation((Relation)null);
139 return; 248 return;
249 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION:
250 getParameterSubstitution().clear();
251 return;
252 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RESULT_VARIABLE:
253 setResultVariable((Variable)null);
254 return;
140 } 255 }
141 super.eUnset(featureID); 256 super.eUnset(featureID);
142 } 257 }
@@ -151,6 +266,10 @@ public abstract class AggregateExpressionImpl extends TermImpl implements Aggreg
151 switch (featureID) { 266 switch (featureID) {
152 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RELATION: 267 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RELATION:
153 return relation != null; 268 return relation != null;
269 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION:
270 return parameterSubstitution != null && !parameterSubstitution.isEmpty();
271 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RESULT_VARIABLE:
272 return resultVariable != null;
154 } 273 }
155 return super.eIsSet(featureID); 274 return super.eIsSet(featureID);
156 } 275 }
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregatedParameterSubstitutionImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregatedParameterSubstitutionImpl.java
new file mode 100644
index 00000000..15af0f21
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregatedParameterSubstitutionImpl.java
@@ -0,0 +1,159 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregatedParameterSubstitution;
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage;
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable;
8
9import org.eclipse.emf.common.notify.Notification;
10
11import org.eclipse.emf.ecore.EClass;
12import org.eclipse.emf.ecore.InternalEObject;
13
14import org.eclipse.emf.ecore.impl.ENotificationImpl;
15import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
16
17/**
18 * <!-- begin-user-doc -->
19 * An implementation of the model object '<em><b>Aggregated Parameter Substitution</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.logic.model.logiclanguage.impl.AggregatedParameterSubstitutionImpl#getVariable <em>Variable</em>}</li>
26 * </ul>
27 *
28 * @generated
29 */
30public class AggregatedParameterSubstitutionImpl extends MinimalEObjectImpl.Container implements AggregatedParameterSubstitution {
31 /**
32 * The cached value of the '{@link #getVariable() <em>Variable</em>}' reference.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #getVariable()
36 * @generated
37 * @ordered
38 */
39 protected Variable variable;
40
41 /**
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @generated
45 */
46 protected AggregatedParameterSubstitutionImpl() {
47 super();
48 }
49
50 /**
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @generated
54 */
55 @Override
56 protected EClass eStaticClass() {
57 return LogiclanguagePackage.Literals.AGGREGATED_PARAMETER_SUBSTITUTION;
58 }
59
60 /**
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @generated
64 */
65 @Override
66 public Variable getVariable() {
67 if (variable != null && variable.eIsProxy()) {
68 InternalEObject oldVariable = (InternalEObject)variable;
69 variable = (Variable)eResolveProxy(oldVariable);
70 if (variable != oldVariable) {
71 if (eNotificationRequired())
72 eNotify(new ENotificationImpl(this, Notification.RESOLVE, LogiclanguagePackage.AGGREGATED_PARAMETER_SUBSTITUTION__VARIABLE, oldVariable, variable));
73 }
74 }
75 return variable;
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 public Variable basicGetVariable() {
84 return variable;
85 }
86
87 /**
88 * <!-- begin-user-doc -->
89 * <!-- end-user-doc -->
90 * @generated
91 */
92 @Override
93 public void setVariable(Variable newVariable) {
94 Variable oldVariable = variable;
95 variable = newVariable;
96 if (eNotificationRequired())
97 eNotify(new ENotificationImpl(this, Notification.SET, LogiclanguagePackage.AGGREGATED_PARAMETER_SUBSTITUTION__VARIABLE, oldVariable, variable));
98 }
99
100 /**
101 * <!-- begin-user-doc -->
102 * <!-- end-user-doc -->
103 * @generated
104 */
105 @Override
106 public Object eGet(int featureID, boolean resolve, boolean coreType) {
107 switch (featureID) {
108 case LogiclanguagePackage.AGGREGATED_PARAMETER_SUBSTITUTION__VARIABLE:
109 if (resolve) return getVariable();
110 return basicGetVariable();
111 }
112 return super.eGet(featureID, resolve, coreType);
113 }
114
115 /**
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @generated
119 */
120 @Override
121 public void eSet(int featureID, Object newValue) {
122 switch (featureID) {
123 case LogiclanguagePackage.AGGREGATED_PARAMETER_SUBSTITUTION__VARIABLE:
124 setVariable((Variable)newValue);
125 return;
126 }
127 super.eSet(featureID, newValue);
128 }
129
130 /**
131 * <!-- begin-user-doc -->
132 * <!-- end-user-doc -->
133 * @generated
134 */
135 @Override
136 public void eUnset(int featureID) {
137 switch (featureID) {
138 case LogiclanguagePackage.AGGREGATED_PARAMETER_SUBSTITUTION__VARIABLE:
139 setVariable((Variable)null);
140 return;
141 }
142 super.eUnset(featureID);
143 }
144
145 /**
146 * <!-- begin-user-doc -->
147 * <!-- end-user-doc -->
148 * @generated
149 */
150 @Override
151 public boolean eIsSet(int featureID) {
152 switch (featureID) {
153 case LogiclanguagePackage.AGGREGATED_PARAMETER_SUBSTITUTION__VARIABLE:
154 return variable != null;
155 }
156 return super.eIsSet(featureID);
157 }
158
159} //AggregatedParameterSubstitutionImpl
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguageFactoryImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguageFactoryImpl.java
index b890b6e0..b8d87d99 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguageFactoryImpl.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguageFactoryImpl.java
@@ -104,6 +104,7 @@ public class LogiclanguageFactoryImpl extends EFactoryImpl implements Logiclangu
104 case LogiclanguagePackage.COUNT: return createCount(); 104 case LogiclanguagePackage.COUNT: return createCount();
105 case LogiclanguagePackage.MIN: return createMin(); 105 case LogiclanguagePackage.MIN: return createMin();
106 case LogiclanguagePackage.MAX: return createMax(); 106 case LogiclanguagePackage.MAX: return createMax();
107 case LogiclanguagePackage.AGGREGATED_PARAMETER_SUBSTITUTION: return createAggregatedParameterSubstitution();
107 default: 108 default:
108 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); 109 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
109 } 110 }
@@ -643,6 +644,17 @@ public class LogiclanguageFactoryImpl extends EFactoryImpl implements Logiclangu
643 * @generated 644 * @generated
644 */ 645 */
645 @Override 646 @Override
647 public AggregatedParameterSubstitution createAggregatedParameterSubstitution() {
648 AggregatedParameterSubstitutionImpl aggregatedParameterSubstitution = new AggregatedParameterSubstitutionImpl();
649 return aggregatedParameterSubstitution;
650 }
651
652 /**
653 * <!-- begin-user-doc -->
654 * <!-- end-user-doc -->
655 * @generated
656 */
657 @Override
646 public LogiclanguagePackage getLogiclanguagePackage() { 658 public LogiclanguagePackage getLogiclanguagePackage() {
647 return (LogiclanguagePackage)getEPackage(); 659 return (LogiclanguagePackage)getEPackage();
648 } 660 }
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java
index 6d370c0f..03a679e4 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java
@@ -3,6 +3,7 @@
3package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl; 3package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl;
4 4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression; 5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression;
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregatedParameterSubstitution;
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.And; 7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.And;
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Assertion; 8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Assertion;
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AtomicTerm; 9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AtomicTerm;
@@ -548,6 +549,13 @@ public class LogiclanguagePackageImpl extends EPackageImpl implements Logiclangu
548 private EClass projectedAggregateExpressionEClass = null; 549 private EClass projectedAggregateExpressionEClass = null;
549 550
550 /** 551 /**
552 * <!-- begin-user-doc -->
553 * <!-- end-user-doc -->
554 * @generated
555 */
556 private EClass aggregatedParameterSubstitutionEClass = null;
557
558 /**
551 * Creates an instance of the model <b>Package</b>, registered with 559 * Creates an instance of the model <b>Package</b>, registered with
552 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package 560 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
553 * package URI value. 561 * package URI value.
@@ -1874,6 +1882,26 @@ public class LogiclanguagePackageImpl extends EPackageImpl implements Logiclangu
1874 * @generated 1882 * @generated
1875 */ 1883 */
1876 @Override 1884 @Override
1885 public EReference getAggregateExpression_ParameterSubstitution() {
1886 return (EReference)aggregateExpressionEClass.getEStructuralFeatures().get(1);
1887 }
1888
1889 /**
1890 * <!-- begin-user-doc -->
1891 * <!-- end-user-doc -->
1892 * @generated
1893 */
1894 @Override
1895 public EReference getAggregateExpression_ResultVariable() {
1896 return (EReference)aggregateExpressionEClass.getEStructuralFeatures().get(2);
1897 }
1898
1899 /**
1900 * <!-- begin-user-doc -->
1901 * <!-- end-user-doc -->
1902 * @generated
1903 */
1904 @Override
1877 public EClass getSum() { 1905 public EClass getSum() {
1878 return sumEClass; 1906 return sumEClass;
1879 } 1907 }
@@ -1934,6 +1962,26 @@ public class LogiclanguagePackageImpl extends EPackageImpl implements Logiclangu
1934 * @generated 1962 * @generated
1935 */ 1963 */
1936 @Override 1964 @Override
1965 public EClass getAggregatedParameterSubstitution() {
1966 return aggregatedParameterSubstitutionEClass;
1967 }
1968
1969 /**
1970 * <!-- begin-user-doc -->
1971 * <!-- end-user-doc -->
1972 * @generated
1973 */
1974 @Override
1975 public EReference getAggregatedParameterSubstitution_Variable() {
1976 return (EReference)aggregatedParameterSubstitutionEClass.getEStructuralFeatures().get(0);
1977 }
1978
1979 /**
1980 * <!-- begin-user-doc -->
1981 * <!-- end-user-doc -->
1982 * @generated
1983 */
1984 @Override
1937 public LogiclanguageFactory getLogiclanguageFactory() { 1985 public LogiclanguageFactory getLogiclanguageFactory() {
1938 return (LogiclanguageFactory)getEFactoryInstance(); 1986 return (LogiclanguageFactory)getEFactoryInstance();
1939 } 1987 }
@@ -2141,6 +2189,8 @@ public class LogiclanguagePackageImpl extends EPackageImpl implements Logiclangu
2141 2189
2142 aggregateExpressionEClass = createEClass(AGGREGATE_EXPRESSION); 2190 aggregateExpressionEClass = createEClass(AGGREGATE_EXPRESSION);
2143 createEReference(aggregateExpressionEClass, AGGREGATE_EXPRESSION__RELATION); 2191 createEReference(aggregateExpressionEClass, AGGREGATE_EXPRESSION__RELATION);
2192 createEReference(aggregateExpressionEClass, AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION);
2193 createEReference(aggregateExpressionEClass, AGGREGATE_EXPRESSION__RESULT_VARIABLE);
2144 2194
2145 sumEClass = createEClass(SUM); 2195 sumEClass = createEClass(SUM);
2146 2196
@@ -2152,6 +2202,9 @@ public class LogiclanguagePackageImpl extends EPackageImpl implements Logiclangu
2152 2202
2153 projectedAggregateExpressionEClass = createEClass(PROJECTED_AGGREGATE_EXPRESSION); 2203 projectedAggregateExpressionEClass = createEClass(PROJECTED_AGGREGATE_EXPRESSION);
2154 createEAttribute(projectedAggregateExpressionEClass, PROJECTED_AGGREGATE_EXPRESSION__PROJECTION_INDEX); 2204 createEAttribute(projectedAggregateExpressionEClass, PROJECTED_AGGREGATE_EXPRESSION__PROJECTION_INDEX);
2205
2206 aggregatedParameterSubstitutionEClass = createEClass(AGGREGATED_PARAMETER_SUBSTITUTION);
2207 createEReference(aggregatedParameterSubstitutionEClass, AGGREGATED_PARAMETER_SUBSTITUTION__VARIABLE);
2155 } 2208 }
2156 2209
2157 /** 2210 /**
@@ -2433,6 +2486,8 @@ public class LogiclanguagePackageImpl extends EPackageImpl implements Logiclangu
2433 2486
2434 initEClass(aggregateExpressionEClass, AggregateExpression.class, "AggregateExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); 2487 initEClass(aggregateExpressionEClass, AggregateExpression.class, "AggregateExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
2435 initEReference(getAggregateExpression_Relation(), this.getRelation(), null, "relation", null, 0, 1, AggregateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 2488 initEReference(getAggregateExpression_Relation(), this.getRelation(), null, "relation", null, 0, 1, AggregateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
2489 initEReference(getAggregateExpression_ParameterSubstitution(), this.getAggregatedParameterSubstitution(), null, "parameterSubstitution", null, 0, -1, AggregateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
2490 initEReference(getAggregateExpression_ResultVariable(), this.getVariable(), null, "resultVariable", null, 0, 1, AggregateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
2436 2491
2437 initEClass(sumEClass, Sum.class, "Sum", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); 2492 initEClass(sumEClass, Sum.class, "Sum", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
2438 2493
@@ -2445,6 +2500,9 @@ public class LogiclanguagePackageImpl extends EPackageImpl implements Logiclangu
2445 initEClass(projectedAggregateExpressionEClass, ProjectedAggregateExpression.class, "ProjectedAggregateExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); 2500 initEClass(projectedAggregateExpressionEClass, ProjectedAggregateExpression.class, "ProjectedAggregateExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
2446 initEAttribute(getProjectedAggregateExpression_ProjectionIndex(), ecorePackage.getEInt(), "projectionIndex", "-1", 1, 1, ProjectedAggregateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 2501 initEAttribute(getProjectedAggregateExpression_ProjectionIndex(), ecorePackage.getEInt(), "projectionIndex", "-1", 1, 1, ProjectedAggregateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
2447 2502
2503 initEClass(aggregatedParameterSubstitutionEClass, AggregatedParameterSubstitution.class, "AggregatedParameterSubstitution", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
2504 initEReference(getAggregatedParameterSubstitution_Variable(), this.getVariable(), null, "variable", null, 0, 1, AggregatedParameterSubstitution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
2505
2448 // Create resource 2506 // Create resource
2449 createResource(eNS_URI); 2507 createResource(eNS_URI);
2450 } 2508 }
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/util/LogiclanguageAdapterFactory.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/util/LogiclanguageAdapterFactory.java
index 25edee70..3fc7c298 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/util/LogiclanguageAdapterFactory.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/util/LogiclanguageAdapterFactory.java
@@ -328,6 +328,10 @@ public class LogiclanguageAdapterFactory extends AdapterFactoryImpl {
328 return createProjectedAggregateExpressionAdapter(); 328 return createProjectedAggregateExpressionAdapter();
329 } 329 }
330 @Override 330 @Override
331 public Adapter caseAggregatedParameterSubstitution(AggregatedParameterSubstitution object) {
332 return createAggregatedParameterSubstitutionAdapter();
333 }
334 @Override
331 public Adapter defaultCase(EObject object) { 335 public Adapter defaultCase(EObject object) {
332 return createEObjectAdapter(); 336 return createEObjectAdapter();
333 } 337 }
@@ -1258,6 +1262,20 @@ public class LogiclanguageAdapterFactory extends AdapterFactoryImpl {
1258 } 1262 }
1259 1263
1260 /** 1264 /**
1265 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregatedParameterSubstitution <em>Aggregated Parameter Substitution</em>}'.
1266 * <!-- begin-user-doc -->
1267 * This default implementation returns null so that we can easily ignore cases;
1268 * it's useful to ignore a case when inheritance will catch all the cases anyway.
1269 * <!-- end-user-doc -->
1270 * @return the new adapter.
1271 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregatedParameterSubstitution
1272 * @generated
1273 */
1274 public Adapter createAggregatedParameterSubstitutionAdapter() {
1275 return null;
1276 }
1277
1278 /**
1261 * Creates a new adapter for the default case. 1279 * Creates a new adapter for the default case.
1262 * <!-- begin-user-doc --> 1280 * <!-- begin-user-doc -->
1263 * This default implementation returns null. 1281 * This default implementation returns null.
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/util/LogiclanguageSwitch.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/util/LogiclanguageSwitch.java
index fc443484..ac821567 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/util/LogiclanguageSwitch.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/util/LogiclanguageSwitch.java
@@ -617,6 +617,12 @@ public class LogiclanguageSwitch<T> extends Switch<T> {
617 if (result == null) result = defaultCase(theEObject); 617 if (result == null) result = defaultCase(theEObject);
618 return result; 618 return result;
619 } 619 }
620 case LogiclanguagePackage.AGGREGATED_PARAMETER_SUBSTITUTION: {
621 AggregatedParameterSubstitution aggregatedParameterSubstitution = (AggregatedParameterSubstitution)theEObject;
622 T result = caseAggregatedParameterSubstitution(aggregatedParameterSubstitution);
623 if (result == null) result = defaultCase(theEObject);
624 return result;
625 }
620 default: return defaultCase(theEObject); 626 default: return defaultCase(theEObject);
621 } 627 }
622 } 628 }
@@ -1597,6 +1603,21 @@ public class LogiclanguageSwitch<T> extends Switch<T> {
1597 } 1603 }
1598 1604
1599 /** 1605 /**
1606 * Returns the result of interpreting the object as an instance of '<em>Aggregated Parameter Substitution</em>'.
1607 * <!-- begin-user-doc -->
1608 * This implementation returns null;
1609 * returning a non-null result will terminate the switch.
1610 * <!-- end-user-doc -->
1611 * @param object the target of the switch.
1612 * @return the result of interpreting the object as an instance of '<em>Aggregated Parameter Substitution</em>'.
1613 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1614 * @generated
1615 */
1616 public T caseAggregatedParameterSubstitution(AggregatedParameterSubstitution object) {
1617 return null;
1618 }
1619
1620 /**
1600 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. 1621 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
1601 * <!-- begin-user-doc --> 1622 * <!-- begin-user-doc -->
1602 * This implementation returns null; 1623 * This implementation returns null;
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.aird b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.aird
index 5673d66a..e96b4586 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.aird
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.aird
@@ -7805,7 +7805,7 @@
7805 <styles xmi:type="notation:FilteringStyle" xmi:id="_rsImpm6WEemSyfDlsGAqLA"/> 7805 <styles xmi:type="notation:FilteringStyle" xmi:id="_rsImpm6WEemSyfDlsGAqLA"/>
7806 </children> 7806 </children>
7807 <styles xmi:type="notation:ShapeStyle" xmi:id="_rsImoW6WEemSyfDlsGAqLA" fontName="Segoe UI" fontHeight="8"/> 7807 <styles xmi:type="notation:ShapeStyle" xmi:id="_rsImoW6WEemSyfDlsGAqLA" fontName="Segoe UI" fontHeight="8"/>
7808 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rsImom6WEemSyfDlsGAqLA" x="2085" y="363" width="135" height="40"/> 7808 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rsImom6WEemSyfDlsGAqLA" x="2280" y="365" width="135" height="40"/>
7809 </children> 7809 </children>
7810 <children xmi:type="notation:Node" xmi:id="_31nEcG6XEemSyfDlsGAqLA" type="2003" element="_309kMG6XEemSyfDlsGAqLA"> 7810 <children xmi:type="notation:Node" xmi:id="_31nEcG6XEemSyfDlsGAqLA" type="2003" element="_309kMG6XEemSyfDlsGAqLA">
7811 <children xmi:type="notation:Node" xmi:id="_31nrgG6XEemSyfDlsGAqLA" type="5007"/> 7811 <children xmi:type="notation:Node" xmi:id="_31nrgG6XEemSyfDlsGAqLA" type="5007"/>
@@ -7814,7 +7814,7 @@
7814 <styles xmi:type="notation:FilteringStyle" xmi:id="_31nrg26XEemSyfDlsGAqLA"/> 7814 <styles xmi:type="notation:FilteringStyle" xmi:id="_31nrg26XEemSyfDlsGAqLA"/>
7815 </children> 7815 </children>
7816 <styles xmi:type="notation:ShapeStyle" xmi:id="_31nEcW6XEemSyfDlsGAqLA" fontName="Segoe UI" fontHeight="8"/> 7816 <styles xmi:type="notation:ShapeStyle" xmi:id="_31nEcW6XEemSyfDlsGAqLA" fontName="Segoe UI" fontHeight="8"/>
7817 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_31nEcm6XEemSyfDlsGAqLA" x="2196" y="564" width="60" height="41"/> 7817 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_31nEcm6XEemSyfDlsGAqLA" x="2391" y="566" width="60" height="41"/>
7818 </children> 7818 </children>
7819 <children xmi:type="notation:Node" xmi:id="_53F0AG6XEemSyfDlsGAqLA" type="2003" element="_52k2oG6XEemSyfDlsGAqLA"> 7819 <children xmi:type="notation:Node" xmi:id="_53F0AG6XEemSyfDlsGAqLA" type="2003" element="_52k2oG6XEemSyfDlsGAqLA">
7820 <children xmi:type="notation:Node" xmi:id="_53F0A26XEemSyfDlsGAqLA" type="5007"/> 7820 <children xmi:type="notation:Node" xmi:id="_53F0A26XEemSyfDlsGAqLA" type="5007"/>
@@ -7823,7 +7823,7 @@
7823 <styles xmi:type="notation:FilteringStyle" xmi:id="_53F0Bm6XEemSyfDlsGAqLA"/> 7823 <styles xmi:type="notation:FilteringStyle" xmi:id="_53F0Bm6XEemSyfDlsGAqLA"/>
7824 </children> 7824 </children>
7825 <styles xmi:type="notation:ShapeStyle" xmi:id="_53F0AW6XEemSyfDlsGAqLA" fontName="Segoe UI" fontHeight="8"/> 7825 <styles xmi:type="notation:ShapeStyle" xmi:id="_53F0AW6XEemSyfDlsGAqLA" fontName="Segoe UI" fontHeight="8"/>
7826 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_53F0Am6XEemSyfDlsGAqLA" x="2115" y="466" width="75" height="28"/> 7826 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_53F0Am6XEemSyfDlsGAqLA" x="2310" y="468" width="75" height="28"/>
7827 </children> 7827 </children>
7828 <children xmi:type="notation:Node" xmi:id="_8nYKUG6XEemSyfDlsGAqLA" type="2003" element="_8mxtYG6XEemSyfDlsGAqLA"> 7828 <children xmi:type="notation:Node" xmi:id="_8nYKUG6XEemSyfDlsGAqLA" type="2003" element="_8mxtYG6XEemSyfDlsGAqLA">
7829 <children xmi:type="notation:Node" xmi:id="_8nYxYG6XEemSyfDlsGAqLA" type="5007"/> 7829 <children xmi:type="notation:Node" xmi:id="_8nYxYG6XEemSyfDlsGAqLA" type="5007"/>
@@ -7832,7 +7832,7 @@
7832 <styles xmi:type="notation:FilteringStyle" xmi:id="_8nYxY26XEemSyfDlsGAqLA"/> 7832 <styles xmi:type="notation:FilteringStyle" xmi:id="_8nYxY26XEemSyfDlsGAqLA"/>
7833 </children> 7833 </children>
7834 <styles xmi:type="notation:ShapeStyle" xmi:id="_8nYKUW6XEemSyfDlsGAqLA" fontName="Segoe UI" fontHeight="8"/> 7834 <styles xmi:type="notation:ShapeStyle" xmi:id="_8nYKUW6XEemSyfDlsGAqLA" fontName="Segoe UI" fontHeight="8"/>
7835 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8nYKUm6XEemSyfDlsGAqLA" x="2268" y="564" width="63" height="16"/> 7835 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8nYKUm6XEemSyfDlsGAqLA" x="2463" y="566" width="63" height="16"/>
7836 </children> 7836 </children>
7837 <children xmi:type="notation:Node" xmi:id="_-vo3UG6XEemSyfDlsGAqLA" type="2003" element="_-vAlMG6XEemSyfDlsGAqLA"> 7837 <children xmi:type="notation:Node" xmi:id="_-vo3UG6XEemSyfDlsGAqLA" type="2003" element="_-vAlMG6XEemSyfDlsGAqLA">
7838 <children xmi:type="notation:Node" xmi:id="_-vpeYG6XEemSyfDlsGAqLA" type="5007"/> 7838 <children xmi:type="notation:Node" xmi:id="_-vpeYG6XEemSyfDlsGAqLA" type="5007"/>
@@ -7841,7 +7841,7 @@
7841 <styles xmi:type="notation:FilteringStyle" xmi:id="_-vpeY26XEemSyfDlsGAqLA"/> 7841 <styles xmi:type="notation:FilteringStyle" xmi:id="_-vpeY26XEemSyfDlsGAqLA"/>
7842 </children> 7842 </children>
7843 <styles xmi:type="notation:ShapeStyle" xmi:id="_-vo3UW6XEemSyfDlsGAqLA" fontName="Segoe UI" fontHeight="8"/> 7843 <styles xmi:type="notation:ShapeStyle" xmi:id="_-vo3UW6XEemSyfDlsGAqLA" fontName="Segoe UI" fontHeight="8"/>
7844 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-vo3Um6XEemSyfDlsGAqLA" x="2340" y="564" width="60" height="16"/> 7844 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-vo3Um6XEemSyfDlsGAqLA" x="2535" y="566" width="60" height="16"/>
7845 </children> 7845 </children>
7846 <children xmi:type="notation:Node" xmi:id="_9KcB0G6cEemSyfDlsGAqLA" type="2003" element="_9J4BIG6cEemSyfDlsGAqLA"> 7846 <children xmi:type="notation:Node" xmi:id="_9KcB0G6cEemSyfDlsGAqLA" type="2003" element="_9J4BIG6cEemSyfDlsGAqLA">
7847 <children xmi:type="notation:Node" xmi:id="_9KcB026cEemSyfDlsGAqLA" type="5007"/> 7847 <children xmi:type="notation:Node" xmi:id="_9KcB026cEemSyfDlsGAqLA" type="5007"/>
@@ -7854,7 +7854,16 @@
7854 <styles xmi:type="notation:FilteringStyle" xmi:id="_9KcB1m6cEemSyfDlsGAqLA"/> 7854 <styles xmi:type="notation:FilteringStyle" xmi:id="_9KcB1m6cEemSyfDlsGAqLA"/>
7855 </children> 7855 </children>
7856 <styles xmi:type="notation:ShapeStyle" xmi:id="_9KcB0W6cEemSyfDlsGAqLA" fontName="Segoe UI" fontHeight="8"/> 7856 <styles xmi:type="notation:ShapeStyle" xmi:id="_9KcB0W6cEemSyfDlsGAqLA" fontName="Segoe UI" fontHeight="8"/>
7857 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9KcB0m6cEemSyfDlsGAqLA" x="2196" y="466" width="183" height="53"/> 7857 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9KcB0m6cEemSyfDlsGAqLA" x="2391" y="468" width="183" height="53"/>
7858 </children>
7859 <children xmi:type="notation:Node" xmi:id="_qmVssKJeEemXzuA5M0BZIw" type="2003" element="_qkRQIKJeEemXzuA5M0BZIw">
7860 <children xmi:type="notation:Node" xmi:id="_qmh58KJeEemXzuA5M0BZIw" type="5007"/>
7861 <children xmi:type="notation:Node" xmi:id="_qmihAKJeEemXzuA5M0BZIw" type="7004">
7862 <styles xmi:type="notation:SortingStyle" xmi:id="_qmihAaJeEemXzuA5M0BZIw"/>
7863 <styles xmi:type="notation:FilteringStyle" xmi:id="_qmihAqJeEemXzuA5M0BZIw"/>
7864 </children>
7865 <styles xmi:type="notation:ShapeStyle" xmi:id="_qmVssaJeEemXzuA5M0BZIw" fontName="Segoe UI" fontHeight="8"/>
7866 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qmVssqJeEemXzuA5M0BZIw" x="2028" y="367" width="219" height="41"/>
7858 </children> 7867 </children>
7859 <styles xmi:type="notation:DiagramStyle" xmi:id="_l6X5OrdnEeau1vMV3Bsx4w"/> 7868 <styles xmi:type="notation:DiagramStyle" xmi:id="_l6X5OrdnEeau1vMV3Bsx4w"/>
7860 <edges xmi:type="notation:Edge" xmi:id="_l6X5a7dnEeau1vMV3Bsx4w" type="4001" element="_l6Zt6bdnEeau1vMV3Bsx4w" source="_l6XR7LdnEeau1vMV3Bsx4w" target="_l6XR27dnEeau1vMV3Bsx4w"> 7869 <edges xmi:type="notation:Edge" xmi:id="_l6X5a7dnEeau1vMV3Bsx4w" type="4001" element="_l6Zt6bdnEeau1vMV3Bsx4w" source="_l6XR7LdnEeau1vMV3Bsx4w" target="_l6XR27dnEeau1vMV3Bsx4w">
@@ -9011,17 +9020,17 @@
9011 </edges> 9020 </edges>
9012 <edges xmi:type="notation:Edge" xmi:id="_hKdI4G6cEemSyfDlsGAqLA" type="4001" element="_hJ8ymW6cEemSyfDlsGAqLA" source="_rsImoG6WEemSyfDlsGAqLA" target="_hTMLdIKhEeeAppuRs-roLg"> 9021 <edges xmi:type="notation:Edge" xmi:id="_hKdI4G6cEemSyfDlsGAqLA" type="4001" element="_hJ8ymW6cEemSyfDlsGAqLA" source="_rsImoG6WEemSyfDlsGAqLA" target="_hTMLdIKhEeeAppuRs-roLg">
9013 <children xmi:type="notation:Node" xmi:id="_hKdv8G6cEemSyfDlsGAqLA" type="6001"> 9022 <children xmi:type="notation:Node" xmi:id="_hKdv8G6cEemSyfDlsGAqLA" type="6001">
9014 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hKdv8W6cEemSyfDlsGAqLA" x="143" y="-10"/> 9023 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hKdv8W6cEemSyfDlsGAqLA" x="239" y="-10"/>
9015 </children> 9024 </children>
9016 <children xmi:type="notation:Node" xmi:id="_hKdv8m6cEemSyfDlsGAqLA" type="6002"> 9025 <children xmi:type="notation:Node" xmi:id="_hKdv8m6cEemSyfDlsGAqLA" type="6002">
9017 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hKdv826cEemSyfDlsGAqLA" x="27"/> 9026 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hKdv826cEemSyfDlsGAqLA" x="-4"/>
9018 </children> 9027 </children>
9019 <children xmi:type="notation:Node" xmi:id="_hKdv9G6cEemSyfDlsGAqLA" type="6003"> 9028 <children xmi:type="notation:Node" xmi:id="_hKdv9G6cEemSyfDlsGAqLA" type="6003">
9020 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hKdv9W6cEemSyfDlsGAqLA" x="136" y="5"/> 9029 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hKdv9W6cEemSyfDlsGAqLA" x="165" y="5"/>
9021 </children> 9030 </children>
9022 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hKdI4W6cEemSyfDlsGAqLA" routing="Rectilinear"/> 9031 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hKdI4W6cEemSyfDlsGAqLA" routing="Rectilinear"/>
9023 <styles xmi:type="notation:FontStyle" xmi:id="_hKdI4m6cEemSyfDlsGAqLA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> 9032 <styles xmi:type="notation:FontStyle" xmi:id="_hKdI4m6cEemSyfDlsGAqLA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
9024 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hKdI426cEemSyfDlsGAqLA" points="[15, 30, 720, -126]$[15, 228, 720, 72]$[-765, 228, -60, 72]$[-765, 204, -60, 48]"/> 9033 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hKdI426cEemSyfDlsGAqLA" points="[15, 30, 915, -124]$[15, 226, 915, 72]$[-960, 226, -60, 72]$[-960, 202, -60, 48]"/>
9025 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hKdv9m6cEemSyfDlsGAqLA" id="(0.0,0.23076923076923078)"/> 9034 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hKdv9m6cEemSyfDlsGAqLA" id="(0.0,0.23076923076923078)"/>
9026 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hKdv926cEemSyfDlsGAqLA" id="(0.6990291262135923,0.0)"/> 9035 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hKdv926cEemSyfDlsGAqLA" id="(0.6990291262135923,0.0)"/>
9027 </edges> 9036 </edges>
@@ -9105,6 +9114,54 @@
9105 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PSa65G6dEemSyfDlsGAqLA" id="(1.0172413793103448,0.0)"/> 9114 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PSa65G6dEemSyfDlsGAqLA" id="(1.0172413793103448,0.0)"/>
9106 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PSa65W6dEemSyfDlsGAqLA" id="(0.5,0.38235294117647056)"/> 9115 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PSa65W6dEemSyfDlsGAqLA" id="(0.5,0.38235294117647056)"/>
9107 </edges> 9116 </edges>
9117 <edges xmi:type="notation:Edge" xmi:id="_uJz-AKJfEemXzuA5M0BZIw" type="4001" element="_uI5YDKJfEemXzuA5M0BZIw" source="_rsImoG6WEemSyfDlsGAqLA" target="_qmVssKJeEemXzuA5M0BZIw">
9118 <children xmi:type="notation:Node" xmi:id="_uJ1zMKJfEemXzuA5M0BZIw" type="6001">
9119 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uJ1zMaJfEemXzuA5M0BZIw" x="4" y="32"/>
9120 </children>
9121 <children xmi:type="notation:Node" xmi:id="_uJ3BUKJfEemXzuA5M0BZIw" type="6002">
9122 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uJ3BUaJfEemXzuA5M0BZIw" x="7"/>
9123 </children>
9124 <children xmi:type="notation:Node" xmi:id="_uJ3oYKJfEemXzuA5M0BZIw" type="6003">
9125 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uJ3oYaJfEemXzuA5M0BZIw" x="-2"/>
9126 </children>
9127 <styles xmi:type="notation:ConnectorStyle" xmi:id="_uJz-AaJfEemXzuA5M0BZIw" routing="Rectilinear"/>
9128 <styles xmi:type="notation:FontStyle" xmi:id="_uJz-AqJfEemXzuA5M0BZIw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
9129 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uJz-A6JfEemXzuA5M0BZIw" points="[-133, 2, 252, -3]$[-168, 2, 217, -3]"/>
9130 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uJ6rsKJfEemXzuA5M0BZIw" id="(1.0,0.48717948717948717)"/>
9131 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uJ6rsaJfEemXzuA5M0BZIw" id="(0.0,0.5641025641025641)"/>
9132 </edges>
9133 <edges xmi:type="notation:Edge" xmi:id="__oNHgKJfEemXzuA5M0BZIw" type="4001" element="__nLz2aJfEemXzuA5M0BZIw" source="_qmVssKJeEemXzuA5M0BZIw" target="_l6XSGLdnEeau1vMV3Bsx4w">
9134 <children xmi:type="notation:Node" xmi:id="__oNukKJfEemXzuA5M0BZIw" type="6001">
9135 <layoutConstraint xmi:type="notation:Bounds" xmi:id="__oNukaJfEemXzuA5M0BZIw" y="-10"/>
9136 </children>
9137 <children xmi:type="notation:Node" xmi:id="__oNukqJfEemXzuA5M0BZIw" type="6002">
9138 <layoutConstraint xmi:type="notation:Bounds" xmi:id="__oNuk6JfEemXzuA5M0BZIw" y="10"/>
9139 </children>
9140 <children xmi:type="notation:Node" xmi:id="__oNulKJfEemXzuA5M0BZIw" type="6003">
9141 <layoutConstraint xmi:type="notation:Bounds" xmi:id="__oNulaJfEemXzuA5M0BZIw" y="10"/>
9142 </children>
9143 <styles xmi:type="notation:ConnectorStyle" xmi:id="__oNHgaJfEemXzuA5M0BZIw" routing="Rectilinear"/>
9144 <styles xmi:type="notation:FontStyle" xmi:id="__oNHgqJfEemXzuA5M0BZIw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
9145 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__oNHg6JfEemXzuA5M0BZIw" points="[0, 0, 86, -62]$[0, 62, 86, 0]$[-86, 62, 0, 0]"/>
9146 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__oOVoKJfEemXzuA5M0BZIw" id="(0.6082949308755761,1.0)"/>
9147 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__oOVoaJfEemXzuA5M0BZIw" id="(1.0,0.3076923076923077)"/>
9148 </edges>
9149 <edges xmi:type="notation:Edge" xmi:id="_QZPVkKJ9EemXzuA5M0BZIw" type="4001" element="_QYZBAKJ9EemXzuA5M0BZIw" source="_rsImoG6WEemSyfDlsGAqLA" target="_l6XSGLdnEeau1vMV3Bsx4w">
9150 <children xmi:type="notation:Node" xmi:id="_QZP8oKJ9EemXzuA5M0BZIw" type="6001">
9151 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QZP8oaJ9EemXzuA5M0BZIw" x="-12" y="-10"/>
9152 </children>
9153 <children xmi:type="notation:Node" xmi:id="_QZP8oqJ9EemXzuA5M0BZIw" type="6002">
9154 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QZP8o6J9EemXzuA5M0BZIw" x="4" y="10"/>
9155 </children>
9156 <children xmi:type="notation:Node" xmi:id="_QZQjsKJ9EemXzuA5M0BZIw" type="6003">
9157 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QZQjsaJ9EemXzuA5M0BZIw" x="-4" y="10"/>
9158 </children>
9159 <styles xmi:type="notation:ConnectorStyle" xmi:id="_QZPVkaJ9EemXzuA5M0BZIw" routing="Rectilinear"/>
9160 <styles xmi:type="notation:FontStyle" xmi:id="_QZPVkqJ9EemXzuA5M0BZIw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
9161 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QZPVk6J9EemXzuA5M0BZIw" points="[-36, 0, 206, -76]$[-36, 89, 206, 13]$[-242, 89, 0, 13]"/>
9162 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QZQjsqJ9EemXzuA5M0BZIw" id="(0.2706766917293233,1.0)"/>
9163 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QZQjs6J9EemXzuA5M0BZIw" id="(1.0,0.6153846153846154)"/>
9164 </edges>
9108 </data> 9165 </data>
9109 </ownedAnnotationEntries> 9166 </ownedAnnotationEntries>
9110 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_l6ZIGbdnEeau1vMV3Bsx4w" name="Term" tooltipText="" outgoingEdges="_l6ZufbdnEeau1vMV3Bsx4w" incomingEdges="_l6Zt6bdnEeau1vMV3Bsx4w _l6Zt9bdnEeau1vMV3Bsx4w _l6Zt-bdnEeau1vMV3Bsx4w _l6Zt_bdnEeau1vMV3Bsx4w _l6ZuAbdnEeau1vMV3Bsx4w _l6ZuBbdnEeau1vMV3Bsx4w _l6ZuCbdnEeau1vMV3Bsx4w _l6ZuDbdnEeau1vMV3Bsx4w _l6ZuEbdnEeau1vMV3Bsx4w _l6ZuFbdnEeau1vMV3Bsx4w _l6ZuGbdnEeau1vMV3Bsx4w _l6ZuHbdnEeau1vMV3Bsx4w _l6ZuIbdnEeau1vMV3Bsx4w _l6ZuJbdnEeau1vMV3Bsx4w _l6ZuKbdnEeau1vMV3Bsx4w _l6ZuLbdnEeau1vMV3Bsx4w _l6ZuMbdnEeau1vMV3Bsx4w _l6ZuNbdnEeau1vMV3Bsx4w _l6ZuObdnEeau1vMV3Bsx4w _l6ZuPbdnEeau1vMV3Bsx4w _l6ZuQbdnEeau1vMV3Bsx4w _l6ZuRbdnEeau1vMV3Bsx4w _l6ZuhbdnEeau1vMV3Bsx4w _l6ZuibdnEeau1vMV3Bsx4w _l6ZunbdnEeau1vMV3Bsx4w _l6ZuqbdnEeau1vMV3Bsx4w _l6ZuwbdnEeau1vMV3Bsx4w _l6Zu3bdnEeau1vMV3Bsx4w _l6ZvHbdnEeau1vMV3Bsx4w _l6ZvIbdnEeau1vMV3Bsx4w _l6ZvJbdnEeau1vMV3Bsx4w _l6ZvKbdnEeau1vMV3Bsx4w _l6ZvZ7dnEeau1vMV3Bsx4w _kQZhsLd1Eeau1vMV3Bsx4w _BoaVwLqxEeau1vMV3Bsx4w _Vi5psIKgEeeAppuRs-roLg _YRIxkIKgEeeAppuRs-roLg _sGSk0IKlEeeAppuRs-roLg _za0wsm6WEemSyfDlsGAqLA" width="12" height="10"> 9167 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_l6ZIGbdnEeau1vMV3Bsx4w" name="Term" tooltipText="" outgoingEdges="_l6ZufbdnEeau1vMV3Bsx4w" incomingEdges="_l6Zt6bdnEeau1vMV3Bsx4w _l6Zt9bdnEeau1vMV3Bsx4w _l6Zt-bdnEeau1vMV3Bsx4w _l6Zt_bdnEeau1vMV3Bsx4w _l6ZuAbdnEeau1vMV3Bsx4w _l6ZuBbdnEeau1vMV3Bsx4w _l6ZuCbdnEeau1vMV3Bsx4w _l6ZuDbdnEeau1vMV3Bsx4w _l6ZuEbdnEeau1vMV3Bsx4w _l6ZuFbdnEeau1vMV3Bsx4w _l6ZuGbdnEeau1vMV3Bsx4w _l6ZuHbdnEeau1vMV3Bsx4w _l6ZuIbdnEeau1vMV3Bsx4w _l6ZuJbdnEeau1vMV3Bsx4w _l6ZuKbdnEeau1vMV3Bsx4w _l6ZuLbdnEeau1vMV3Bsx4w _l6ZuMbdnEeau1vMV3Bsx4w _l6ZuNbdnEeau1vMV3Bsx4w _l6ZuObdnEeau1vMV3Bsx4w _l6ZuPbdnEeau1vMV3Bsx4w _l6ZuQbdnEeau1vMV3Bsx4w _l6ZuRbdnEeau1vMV3Bsx4w _l6ZuhbdnEeau1vMV3Bsx4w _l6ZuibdnEeau1vMV3Bsx4w _l6ZunbdnEeau1vMV3Bsx4w _l6ZuqbdnEeau1vMV3Bsx4w _l6ZuwbdnEeau1vMV3Bsx4w _l6Zu3bdnEeau1vMV3Bsx4w _l6ZvHbdnEeau1vMV3Bsx4w _l6ZvIbdnEeau1vMV3Bsx4w _l6ZvJbdnEeau1vMV3Bsx4w _l6ZvKbdnEeau1vMV3Bsx4w _l6ZvZ7dnEeau1vMV3Bsx4w _kQZhsLd1Eeau1vMV3Bsx4w _BoaVwLqxEeau1vMV3Bsx4w _Vi5psIKgEeeAppuRs-roLg _YRIxkIKgEeeAppuRs-roLg _sGSk0IKlEeeAppuRs-roLg _za0wsm6WEemSyfDlsGAqLA" width="12" height="10">
@@ -9199,7 +9256,7 @@
9199 <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']"/> 9256 <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']"/>
9200 </ownedElements> 9257 </ownedElements>
9201 </ownedDiagramElements> 9258 </ownedDiagramElements>
9202 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_l6ZIL7dnEeau1vMV3Bsx4w" name="Variable" tooltipText="" outgoingEdges="_JfkfULd8Eeau1vMV3Bsx4w _e1jg0IKgEeeAppuRs-roLg" incomingEdges="_l6Zt8bdnEeau1vMV3Bsx4w" width="12" height="10"> 9259 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_l6ZIL7dnEeau1vMV3Bsx4w" name="Variable" tooltipText="" outgoingEdges="_JfkfULd8Eeau1vMV3Bsx4w _e1jg0IKgEeeAppuRs-roLg" incomingEdges="_l6Zt8bdnEeau1vMV3Bsx4w __nLz2aJfEemXzuA5M0BZIw _QYZBAKJ9EemXzuA5M0BZIw" width="12" height="10">
9203 <target xmi:type="ecore:EClass" href="logiclanguage.ecore#//Variable"/> 9260 <target xmi:type="ecore:EClass" href="logiclanguage.ecore#//Variable"/>
9204 <semanticElements xmi:type="ecore:EClass" href="logiclanguage.ecore#//Variable"/> 9261 <semanticElements xmi:type="ecore:EClass" href="logiclanguage.ecore#//Variable"/>
9205 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 9262 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -10473,7 +10530,7 @@
10473 </ownedStyle> 10530 </ownedStyle>
10474 <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']"/> 10531 <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']"/>
10475 </ownedDiagramElements> 10532 </ownedDiagramElements>
10476 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rrY_wG6WEemSyfDlsGAqLA" name="AggregateExpression" tooltipText="" outgoingEdges="_za0wsm6WEemSyfDlsGAqLA _hJ8ymW6cEemSyfDlsGAqLA" incomingEdges="_wovb6G6cEemSyfDlsGAqLA _OKfpkm6dEemSyfDlsGAqLA" width="12" height="10"> 10533 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rrY_wG6WEemSyfDlsGAqLA" name="AggregateExpression" tooltipText="" outgoingEdges="_za0wsm6WEemSyfDlsGAqLA _hJ8ymW6cEemSyfDlsGAqLA _uI5YDKJfEemXzuA5M0BZIw _QYZBAKJ9EemXzuA5M0BZIw" incomingEdges="_wovb6G6cEemSyfDlsGAqLA _OKfpkm6dEemSyfDlsGAqLA" width="12" height="10">
10477 <target xmi:type="ecore:EClass" href="logiclanguage.ecore#//AggregateExpression"/> 10534 <target xmi:type="ecore:EClass" href="logiclanguage.ecore#//AggregateExpression"/>
10478 <semanticElements xmi:type="ecore:EClass" href="logiclanguage.ecore#//AggregateExpression"/> 10535 <semanticElements xmi:type="ecore:EClass" href="logiclanguage.ecore#//AggregateExpression"/>
10479 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 10536 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -10635,6 +10692,58 @@
10635 </ownedStyle> 10692 </ownedStyle>
10636 <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']"/> 10693 <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']"/>
10637 </ownedDiagramElements> 10694 </ownedDiagramElements>
10695 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_qkRQIKJeEemXzuA5M0BZIw" name="AggregatedParameterSubstitution" tooltipText="" outgoingEdges="__nLz2aJfEemXzuA5M0BZIw" incomingEdges="_uI5YDKJfEemXzuA5M0BZIw" width="12" height="10">
10696 <target xmi:type="ecore:EClass" href="logiclanguage.ecore#//AggregatedParameterSubstitution"/>
10697 <semanticElements xmi:type="ecore:EClass" href="logiclanguage.ecore#//AggregatedParameterSubstitution"/>
10698 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
10699 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
10700 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
10701 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_qkTFUKJeEemXzuA5M0BZIw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
10702 <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"/>
10703 </ownedStyle>
10704 <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']"/>
10705 </ownedDiagramElements>
10706 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_uI5YDKJfEemXzuA5M0BZIw" name="[0..*] parameterSubstitution" sourceNode="_rrY_wG6WEemSyfDlsGAqLA" targetNode="_qkRQIKJeEemXzuA5M0BZIw">
10707 <target xmi:type="ecore:EReference" href="logiclanguage.ecore#//AggregateExpression/parameterSubstitution"/>
10708 <semanticElements xmi:type="ecore:EReference" href="logiclanguage.ecore#//AggregateExpression/parameterSubstitution"/>
10709 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_uI6mIKJfEemXzuA5M0BZIw" description="_l6XRhLdnEeau1vMV3Bsx4w" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
10710 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_uI6mIqJfEemXzuA5M0BZIw" showIcon="false">
10711 <customFeatures>labelSize</customFeatures>
10712 </centerLabelStyle>
10713 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_uI6mIaJfEemXzuA5M0BZIw" showIcon="false" labelColor="39,76,114">
10714 <customFeatures>labelSize</customFeatures>
10715 </endLabelStyle>
10716 </ownedStyle>
10717 <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']"/>
10718 </ownedDiagramElements>
10719 <ownedDiagramElements xmi:type="diagram:DEdge" uid="__nLz2aJfEemXzuA5M0BZIw" name="[0..1] variable" sourceNode="_qkRQIKJeEemXzuA5M0BZIw" targetNode="_l6ZIL7dnEeau1vMV3Bsx4w">
10720 <target xmi:type="ecore:EReference" href="logiclanguage.ecore#//AggregatedParameterSubstitution/variable"/>
10721 <semanticElements xmi:type="ecore:EReference" href="logiclanguage.ecore#//AggregatedParameterSubstitution/variable"/>
10722 <ownedStyle xmi:type="diagram:EdgeStyle" uid="__nNB8KJfEemXzuA5M0BZIw" routingStyle="manhattan" strokeColor="0,0,0">
10723 <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"/>
10724 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="__nNB8qJfEemXzuA5M0BZIw" showIcon="false">
10725 <customFeatures>labelSize</customFeatures>
10726 </centerLabelStyle>
10727 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="__nNB8aJfEemXzuA5M0BZIw" showIcon="false" labelColor="39,76,114">
10728 <customFeatures>labelSize</customFeatures>
10729 </endLabelStyle>
10730 </ownedStyle>
10731 <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']"/>
10732 </ownedDiagramElements>
10733 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_QYZBAKJ9EemXzuA5M0BZIw" name="[0..1] resultVariable" sourceNode="_rrY_wG6WEemSyfDlsGAqLA" targetNode="_l6ZIL7dnEeau1vMV3Bsx4w">
10734 <target xmi:type="ecore:EReference" href="logiclanguage.ecore#//AggregateExpression/resultVariable"/>
10735 <semanticElements xmi:type="ecore:EReference" href="logiclanguage.ecore#//AggregateExpression/resultVariable"/>
10736 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_QYZBAaJ9EemXzuA5M0BZIw" routingStyle="manhattan" strokeColor="0,0,0">
10737 <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"/>
10738 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_QYZBA6J9EemXzuA5M0BZIw" showIcon="false">
10739 <customFeatures>labelSize</customFeatures>
10740 </centerLabelStyle>
10741 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_QYZBAqJ9EemXzuA5M0BZIw" showIcon="false" labelColor="39,76,114">
10742 <customFeatures>labelSize</customFeatures>
10743 </endLabelStyle>
10744 </ownedStyle>
10745 <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']"/>
10746 </ownedDiagramElements>
10638 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 10747 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
10639 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_l6Zva7dnEeau1vMV3Bsx4w"/> 10748 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_l6Zva7dnEeau1vMV3Bsx4w"/>
10640 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> 10749 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore
index fdbc1c27..a91d4407 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore
@@ -215,6 +215,9 @@
215 <eClassifiers xsi:type="ecore:EClass" name="AggregateExpression" abstract="true" 215 <eClassifiers xsi:type="ecore:EClass" name="AggregateExpression" abstract="true"
216 eSuperTypes="#//Term"> 216 eSuperTypes="#//Term">
217 <eStructuralFeatures xsi:type="ecore:EReference" name="relation" eType="#//Relation"/> 217 <eStructuralFeatures xsi:type="ecore:EReference" name="relation" eType="#//Relation"/>
218 <eStructuralFeatures xsi:type="ecore:EReference" name="parameterSubstitution"
219 upperBound="-1" eType="#//AggregatedParameterSubstitution" containment="true"/>
220 <eStructuralFeatures xsi:type="ecore:EReference" name="resultVariable" eType="#//Variable"/>
218 </eClassifiers> 221 </eClassifiers>
219 <eClassifiers xsi:type="ecore:EClass" name="Sum" eSuperTypes="#//ProjectedAggregateExpression"/> 222 <eClassifiers xsi:type="ecore:EClass" name="Sum" eSuperTypes="#//ProjectedAggregateExpression"/>
220 <eClassifiers xsi:type="ecore:EClass" name="Count" eSuperTypes="#//AggregateExpression"/> 223 <eClassifiers xsi:type="ecore:EClass" name="Count" eSuperTypes="#//AggregateExpression"/>
@@ -225,4 +228,7 @@
225 <eStructuralFeatures xsi:type="ecore:EAttribute" name="projectionIndex" lowerBound="1" 228 <eStructuralFeatures xsi:type="ecore:EAttribute" name="projectionIndex" lowerBound="1"
226 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="-1"/> 229 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="-1"/>
227 </eClassifiers> 230 </eClassifiers>
231 <eClassifiers xsi:type="ecore:EClass" name="AggregatedParameterSubstitution">
232 <eStructuralFeatures xsi:type="ecore:EReference" name="variable" eType="#//Variable"/>
233 </eClassifiers>
228</ecore:EPackage> 234</ecore:EPackage>
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.genmodel b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.genmodel
index 303080e7..0f35db7c 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.genmodel
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.genmodel
@@ -168,6 +168,8 @@
168 <genClasses ecoreClass="logiclanguage.ecore#//Pow"/> 168 <genClasses ecoreClass="logiclanguage.ecore#//Pow"/>
169 <genClasses image="false" ecoreClass="logiclanguage.ecore#//AggregateExpression"> 169 <genClasses image="false" ecoreClass="logiclanguage.ecore#//AggregateExpression">
170 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference logiclanguage.ecore#//AggregateExpression/relation"/> 170 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference logiclanguage.ecore#//AggregateExpression/relation"/>
171 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference logiclanguage.ecore#//AggregateExpression/parameterSubstitution"/>
172 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference logiclanguage.ecore#//AggregateExpression/resultVariable"/>
171 </genClasses> 173 </genClasses>
172 <genClasses ecoreClass="logiclanguage.ecore#//Sum"/> 174 <genClasses ecoreClass="logiclanguage.ecore#//Sum"/>
173 <genClasses ecoreClass="logiclanguage.ecore#//Count"/> 175 <genClasses ecoreClass="logiclanguage.ecore#//Count"/>
@@ -176,6 +178,9 @@
176 <genClasses image="false" ecoreClass="logiclanguage.ecore#//ProjectedAggregateExpression"> 178 <genClasses image="false" ecoreClass="logiclanguage.ecore#//ProjectedAggregateExpression">
177 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute logiclanguage.ecore#//ProjectedAggregateExpression/projectionIndex"/> 179 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute logiclanguage.ecore#//ProjectedAggregateExpression/projectionIndex"/>
178 </genClasses> 180 </genClasses>
181 <genClasses ecoreClass="logiclanguage.ecore#//AggregatedParameterSubstitution">
182 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference logiclanguage.ecore#//AggregatedParameterSubstitution/variable"/>
183 </genClasses>
179 </genPackages> 184 </genPackages>
180 <genPackages prefix="Logicproblem" basePackage="hu.bme.mit.inf.dslreasoner.logic.model" 185 <genPackages prefix="Logicproblem" basePackage="hu.bme.mit.inf.dslreasoner.logic.model"
181 disposableProviderFactory="true" ecorePackage="logicproblem.ecore#/"> 186 disposableProviderFactory="true" ecorePackage="logicproblem.ecore#/">
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/plugin.xml b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/plugin.xml
index 413002e2..bad09614 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/plugin.xml
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/plugin.xml
@@ -1,27 +1,27 @@
1<?xml version="1.0" encoding="UTF-8"?><?eclipse version="3.0"?><!-- 1<?xml version="1.0" encoding="UTF-8"?><?eclipse version="3.0"?><!--
2--><plugin> 2--><plugin>
3 <extension point="org.eclipse.emf.ecore.generated_package"> 3 <extension point="org.eclipse.emf.ecore.generated_package">
4 <!-- @generated logiclanguage --> 4 <!-- @generated logiclanguage -->
5 <package class="hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage" genModel="model/logiclanguage.genmodel" uri="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"/> 5 <package class="hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage" genModel="model/logiclanguage.genmodel" uri="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"/>
6 </extension> 6 </extension>
7 <extension point="org.eclipse.emf.ecore.generated_package"> 7 <extension point="org.eclipse.emf.ecore.generated_package">
8 <!-- @generated logiclanguage --> 8 <!-- @generated logiclanguage -->
9 <package class="hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage" genModel="model/logiclanguage.genmodel" uri="http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"/> 9 <package class="hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage" genModel="model/logiclanguage.genmodel" uri="http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"/>
10 </extension> 10 </extension>
11 <extension point="org.eclipse.emf.ecore.generated_package"> 11 <extension point="org.eclipse.emf.ecore.generated_package">
12 <!-- @generated logiclanguage --> 12 <!-- @generated logiclanguage -->
13 <package class="hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicresultPackage" genModel="model/logiclanguage.genmodel" uri="http://www.bme.hu/mit/inf/dslreasoner/logic/model/result"/> 13 <package class="hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicresultPackage" genModel="model/logiclanguage.genmodel" uri="http://www.bme.hu/mit/inf/dslreasoner/logic/model/result"/>
14 </extension> 14 </extension>
15 <extension id="hu.bme.mit.inf.dslreasoner.logic.model.patterns.TypeUtil" point="org.eclipse.viatra.query.runtime.queryspecification"> 15 <extension id="hu.bme.mit.inf.dslreasoner.logic.model.patterns.TypeUtil" point="org.eclipse.viatra.query.runtime.queryspecification">
16 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.logic.model.patterns.TypeUtil" id="hu.bme.mit.inf.dslreasoner.logic.model.patterns.TypeUtil"> 16 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.logic.model.patterns.TypeUtil" id="hu.bme.mit.inf.dslreasoner.logic.model.patterns.TypeUtil">
17 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.supertypeStar"/> 17 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.supertypeStar"/>
18 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.typeDirectElements"/> 18 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.typeDirectElements"/>
19 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.possibleDynamicType"/> 19 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.possibleDynamicType"/>
20 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.mustTypeElement"/> 20 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.mustTypeElement"/>
21 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.typeSystemIsInconsistent"/> 21 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.typeSystemIsInconsistent"/>
22 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.elementNotDefinedInSupertype"/> 22 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.elementNotDefinedInSupertype"/>
23 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.elementWithNoPossibleDynamicType"/> 23 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.elementWithNoPossibleDynamicType"/>
24 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.cyclicTypeHierarchy"/> 24 <query-specification fqn="hu.bme.mit.inf.dslreasoner.logic.model.patterns.cyclicTypeHierarchy"/>
25 </group> 25 </group>
26 </extension> 26 </extension>
27</plugin> 27</plugin>
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicModelInterpretation.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicModelInterpretation.xtend
index 905859eb..cdcbb48a 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicModelInterpretation.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicModelInterpretation.xtend
@@ -3,22 +3,27 @@ package hu.bme.mit.inf.dslreasoner.logic.model.builder
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration 3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement 4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDeclaration 5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDeclaration
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration 7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TermDescription
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type 9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration 10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition 11import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition
12import java.math.BigDecimal
10import java.util.List 13import java.util.List
14import java.util.Map
15import java.util.SortedSet
16import java.util.TreeSet
11 17
12import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 18import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
13import java.util.SortedSet
14import java.math.BigDecimal
15 19
16interface LogicModelInterpretation{ 20interface LogicModelInterpretation {
17 21
18 /** 22 /**
19 * Returns the elements of a type. 23 * Returns the elements of a type.
20 */ 24 */
21 def List<DefinedElement> getElements(Type type) 25 def List<DefinedElement> getElements(Type type)
26
22 /** 27 /**
23 * Returns the interpretation of a function. The parameters and the return values are encoded to primitive java objects defined by the following table: 28 * Returns the interpretation of a function. The parameters and the return values are encoded to primitive java objects defined by the following table:
24 * <p><table> 29 * <p><table>
@@ -34,6 +39,7 @@ interface LogicModelInterpretation{
34 * @return The result of the function call encoded as defined in the table. 39 * @return The result of the function call encoded as defined in the table.
35 */ 40 */
36 def Object getInterpretation(FunctionDeclaration function, Object[] parameterSubstitution) 41 def Object getInterpretation(FunctionDeclaration function, Object[] parameterSubstitution)
42
37 /** 43 /**
38 * Returns the interpretation of a relation. The parameters are encoded to primitive java objects defined by the following table: 44 * Returns the interpretation of a relation. The parameters are encoded to primitive java objects defined by the following table:
39 * <p><table> 45 * <p><table>
@@ -49,6 +55,7 @@ interface LogicModelInterpretation{
49 * @return If the parameter tuple is in the relation. 55 * @return If the parameter tuple is in the relation.
50 */ 56 */
51 def boolean getInterpretation(RelationDeclaration relation, Object[] parameterSubstitution) 57 def boolean getInterpretation(RelationDeclaration relation, Object[] parameterSubstitution)
58
52 /** 59 /**
53 * Returns the interpretation of a constant. The value is encoded to primitive java objects defined by the following table: 60 * Returns the interpretation of a constant. The value is encoded to primitive java objects defined by the following table:
54 * <p><table> 61 * <p><table>
@@ -63,60 +70,89 @@ interface LogicModelInterpretation{
63 * @return The value of the constant encoded as specified in the table. 70 * @return The value of the constant encoded as specified in the table.
64 */ 71 */
65 def Object getInterpretation(ConstantDeclaration constant) 72 def Object getInterpretation(ConstantDeclaration constant)
66 73
67 /** 74 /**
68 * Returns all integers relevant to the logic structure. Not all integer is necessarily used. 75 * Returns all integers relevant to the logic structure. Not all integer is necessarily used.
69 */ 76 */
70 def SortedSet<Integer> getAllIntegersInStructure() 77 def SortedSet<Integer> getAllIntegersInStructure()
78
79 def Map<TermDescription, Integer> getAllIntegersWithInterpretation() {
80 allIntegersInStructure.toMap [ integer |
81 (LogiclanguageFactory.eINSTANCE.createIntLiteral => [value = integer]) as TermDescription
82 ]
83 }
84
71 /** 85 /**
72 * Returns all real numbers relevant to the logic structure. Not all integer is necessarily used. 86 * Returns all real numbers relevant to the logic structure. Not all integer is necessarily used.
73 */ 87 */
74 def SortedSet<BigDecimal> getAllRealsInStructure() 88 def SortedSet<BigDecimal> getAllRealsInStructure()
75 /** 89
90 def Map<TermDescription, BigDecimal> getAllRealsWithInterpretation() {
91 allRealsInStructure.toMap [ real |
92 (LogiclanguageFactory.eINSTANCE.createRealLiteral => [value = real]) as TermDescription
93 ]
94 }
95
96 /**
76 * Returns all string values relevant to the logic structure. Not all integer is necessarily used. 97 * Returns all string values relevant to the logic structure. Not all integer is necessarily used.
77 */ 98 */
78 def SortedSet<String> getAllStringsInStructure() 99 def SortedSet<String> getAllStringsInStructure()
100
101 def Map<TermDescription, String> getAllStringsWithInterpretation() {
102 allStringsInStructure.toMap [ string |
103 (LogiclanguageFactory.eINSTANCE.createStringLiteral => [value = string]) as TermDescription
104 ]
105 }
106
107 def SortedSet<Boolean> getAllBooleansInStructure() {
108 new TreeSet(#{true, false})
109 }
110
111 def Map<TermDescription, Boolean> getAllBooleansWithInterpretation() {
112 allBooleansInStructure.toMap [ bool |
113 (LogiclanguageFactory.eINSTANCE.createBoolLiteral => [value = bool]) as TermDescription
114 ]
115 }
79} 116}
80 117
81class Uninterpreted implements LogicModelInterpretation { 118class Uninterpreted implements LogicModelInterpretation {
82 /*private val static unknownBecauseUninterpreted = LogiclanguageFactory.eINSTANCE.createUnknownBecauseUninterpreted 119 /*private val static unknownBecauseUninterpreted = LogiclanguageFactory.eINSTANCE.createUnknownBecauseUninterpreted
83 public def static getUnknownBecauseUninterpreted() {return Uninterpreted.unknownBecauseUninterpreted}*/ 120 public def static getUnknownBecauseUninterpreted() {return Uninterpreted.unknownBecauseUninterpreted}*/
84
85 override getElements(Type type) { 121 override getElements(Type type) {
86 throw new UnsupportedOperationException("The interpteration is unknown.") 122 throw new UnsupportedOperationException("The interpteration is unknown.")
87 } 123 }
88 124
89 def getKnownElements(Type type) { 125 def getKnownElements(Type type) {
90 val allSubtypes = type.transitiveClosureStar[it.subtypes] 126 val allSubtypes = type.transitiveClosureStar[it.subtypes]
91 return allSubtypes.filter(TypeDefinition).map[elements].flatten.toList 127 return allSubtypes.filter(TypeDefinition).map[elements].flatten.toList
92 } 128 }
93 129
94 def allElementsAreInterpreted(Type type) { 130 def allElementsAreInterpreted(Type type) {
95 val allSubtypes = type.transitiveClosureStar[it.subtypes] 131 val allSubtypes = type.transitiveClosureStar[it.subtypes]
96 return allSubtypes.exists[it instanceof TypeDeclaration] 132 return allSubtypes.exists[it instanceof TypeDeclaration]
97 } 133 }
98 134
99 override getInterpretation(FunctionDeclaration function, Object[] parameterSubstitution) { 135 override getInterpretation(FunctionDeclaration function, Object[] parameterSubstitution) {
100 throw new UnsupportedOperationException("The interpteration is unknown.") 136 throw new UnsupportedOperationException("The interpteration is unknown.")
101 } 137 }
102 138
103 override getInterpretation(RelationDeclaration relation, Object[] parameterSubstitution) { 139 override getInterpretation(RelationDeclaration relation, Object[] parameterSubstitution) {
104 throw new UnsupportedOperationException("The interpteration is unknown.") 140 throw new UnsupportedOperationException("The interpteration is unknown.")
105 } 141 }
106 142
107 override getInterpretation(ConstantDeclaration constant) { 143 override getInterpretation(ConstantDeclaration constant) {
108 throw new UnsupportedOperationException("The interpteration is unknown.") 144 throw new UnsupportedOperationException("The interpteration is unknown.")
109 } 145 }
110 146
111 override getAllIntegersInStructure() { 147 override getAllIntegersInStructure() {
112 throw new UnsupportedOperationException("The interpteration is unknown.") 148 throw new UnsupportedOperationException("The interpteration is unknown.")
113 } 149 }
114 150
115 override getAllRealsInStructure() { 151 override getAllRealsInStructure() {
116 throw new UnsupportedOperationException("The interpteration is unknown.") 152 throw new UnsupportedOperationException("The interpteration is unknown.")
117 } 153 }
118 154
119 override getAllStringsInStructure() { 155 override getAllStringsInStructure() {
120 throw new UnsupportedOperationException("The interpteration is unknown.") 156 throw new UnsupportedOperationException("The interpteration is unknown.")
121 } 157 }
122} \ No newline at end of file 158}
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend
index f6bd9541..fa97cbef 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend
@@ -1,5 +1,6 @@
1package hu.bme.mit.inf.dslreasoner.logic.model.builder 1package hu.bme.mit.inf.dslreasoner.logic.model.builder
2 2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Assertion 4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Assertion
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.BoolTypeReference 5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.BoolTypeReference
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference 6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
@@ -8,6 +9,7 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Function 9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Function
9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.IntTypeReference 10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.IntTypeReference
10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory 11import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory
12import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ProjectedAggregateExpression
11import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.QuantifiedExpression 13import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.QuantifiedExpression
12import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RealTypeReference 14import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RealTypeReference
13import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation 15import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
@@ -46,16 +48,16 @@ class LogicProblemBuilderException extends Exception {
46 } 48 }
47} 49}
48 50
49public class LogicProblemBuilder{ 51class LogicProblemBuilder{
50 val protected extension LogiclanguageFactory logicFactiory = LogiclanguageFactory.eINSTANCE 52 val protected extension LogiclanguageFactory logicFactiory = LogiclanguageFactory.eINSTANCE
51 val protected extension LogicproblemFactory problemFactory = LogicproblemFactory.eINSTANCE 53 val protected extension LogicproblemFactory problemFactory = LogicproblemFactory.eINSTANCE
52 val protected advancedConstructs = new LogicProblemBuilder_AdvancedConstructs(this) 54 val protected advancedConstructs = new LogicProblemBuilder_AdvancedConstructs(this)
53 55
54 def public createProblem(){ createLogicProblem } 56 def createProblem(){ createLogicProblem }
55 57
56 // Names 58 // Names
57 def protected String canonize(CharSequence name) { 59 def protected String canonize(CharSequence name) {
58 if(name == null) return "" 60 if(name === null) return ""
59 val result = name.toString.split("\\s+"); 61 val result = name.toString.split("\\s+");
60 if(result.size == 1) { 62 if(result.size == 1) {
61 val element = result.get(0); 63 val element = result.get(0);
@@ -82,23 +84,23 @@ public class LogicProblemBuilder{
82 } 84 }
83 85
84 // Type builders 86 // Type builders
85 def public Element(CharSequence elementName) { return createDefinedElement => [x|x.name = elementName.canonize] } 87 def Element(CharSequence elementName) { return createDefinedElement => [x|x.name = elementName.canonize] }
86 def public Element() { return createDefinedElement } 88 def Element() { return createDefinedElement }
87 def public TypeDeclaration(CharSequence name, boolean isAbstract) { TypeDeclaration => [x | x.name = name.canonize x.isAbstract = isAbstract] } 89 def TypeDeclaration(CharSequence name, boolean isAbstract) { TypeDeclaration => [x | x.name = name.canonize x.isAbstract = isAbstract] }
88 def public TypeDeclaration() { createTypeDeclaration } 90 def TypeDeclaration() { createTypeDeclaration }
89 def public TypeDefinition(CharSequence name, boolean isAbstract, DefinedElement... elements) { TypeDefinition(name, isAbstract, elements as Iterable<DefinedElement>) } 91 def TypeDefinition(CharSequence name, boolean isAbstract, DefinedElement... elements) { TypeDefinition(name, isAbstract, elements as Iterable<DefinedElement>) }
90 def public TypeDefinition(CharSequence name, boolean isAbstract, Iterable<DefinedElement> elements) { createTypeDefinition => [x | x.name = name.canonize x.isAbstract = isAbstract x.elements += elements ] } 92 def TypeDefinition(CharSequence name, boolean isAbstract, Iterable<DefinedElement> elements) { createTypeDefinition => [x | x.name = name.canonize x.isAbstract = isAbstract x.elements += elements ] }
91 93
92 def public Supertype(Type subtype, Type supertype) { 94 def Supertype(Type subtype, Type supertype) {
93 subtype.supertypes+=supertype 95 subtype.supertypes+=supertype
94 } 96 }
95 def public SetSupertype(Type subtype, Type supertype, boolean value) { 97 def SetSupertype(Type subtype, Type supertype, boolean value) {
96 if(value) subtype.supertypes+=supertype 98 if(value) subtype.supertypes+=supertype
97 else subtype.subtypes-=supertype 99 else subtype.subtypes-=supertype
98 } 100 }
99 101
100 // Type add 102 // Type add
101 def public add(LogicProblem problem, Type type) { 103 def add(LogicProblem problem, Type type) {
102 problem.nameIfAnonymType(type) 104 problem.nameIfAnonymType(type)
103 problem.types+=type 105 problem.types+=type
104 if(type instanceof TypeDefinition) { 106 if(type instanceof TypeDefinition) {
@@ -118,10 +120,10 @@ public class LogicProblemBuilder{
118 element.name = typeDefinition.elements.map[it.name].generateUniqueName[i | '''type «i.toString»'''] 120 element.name = typeDefinition.elements.map[it.name].generateUniqueName[i | '''type «i.toString»''']
119 } 121 }
120 122
121 def public LogicBool() { createBoolTypeReference } 123 def LogicBool() { createBoolTypeReference }
122 def public LogicInt() { createIntTypeReference } 124 def LogicInt() { createIntTypeReference }
123 def public LogicReal() { createRealTypeReference } 125 def LogicReal() { createRealTypeReference }
124 def public LogicString() { createStringTypeReference } 126 def LogicString() { createStringTypeReference }
125 def toTypeReference(TypeDescriptor descriptor) { 127 def toTypeReference(TypeDescriptor descriptor) {
126 if(descriptor instanceof TypeReference) { return EcoreUtil.copy(descriptor); } 128 if(descriptor instanceof TypeReference) { return EcoreUtil.copy(descriptor); }
127 else if(descriptor instanceof Type) { return createComplexTypeReference => [referred = descriptor]} 129 else if(descriptor instanceof Type) { return createComplexTypeReference => [referred = descriptor]}
@@ -129,31 +131,31 @@ public class LogicProblemBuilder{
129 } 131 }
130 132
131 // Variables 133 // Variables
132 def public createVar(CharSequence name, TypeDescriptor range) { 134 def createVar(CharSequence name, TypeDescriptor range) {
133 return createVariable => [it.name = name.canonize it.range = range.toTypeReference] 135 return createVariable => [it.name = name.canonize it.range = range.toTypeReference]
134 } 136 }
135 137
136 // Functions 138 // Functions
137 def public FunctionDescription ->(TypeDescriptor parameter, TypeDescriptor range) { return #[parameter] -> range } 139 def FunctionDescription ->(TypeDescriptor parameter, TypeDescriptor range) { return #[parameter] -> range }
138 def public FunctionDescription ->(Iterable<? extends TypeDescriptor> parameters, TypeDescriptor range) { return new FunctionDescription(parameters.map[toTypeReference], range.toTypeReference); } 140 def FunctionDescription ->(Iterable<? extends TypeDescriptor> parameters, TypeDescriptor range) { return new FunctionDescription(parameters.map[toTypeReference], range.toTypeReference); }
139 def public FunctionDeclaration(CharSequence name, FunctionDescription functionDescription) { FunctionDeclaration(name,functionDescription.range, functionDescription.parameters) } 141 def FunctionDeclaration(CharSequence name, FunctionDescription functionDescription) { FunctionDeclaration(name,functionDescription.range, functionDescription.parameters) }
140 def public FunctionDeclaration(FunctionDescription functionDescription) { FunctionDeclaration(functionDescription.range, functionDescription.parameters) } 142 def FunctionDeclaration(FunctionDescription functionDescription) { FunctionDeclaration(functionDescription.range, functionDescription.parameters) }
141 def public FunctionDeclaration(CharSequence name, TypeDescriptor range, TypeDescriptor... parameters) { FunctionDeclaration(name, range, parameters as Iterable<? extends TypeReference>) } 143 def FunctionDeclaration(CharSequence name, TypeDescriptor range, TypeDescriptor... parameters) { FunctionDeclaration(name, range, parameters as Iterable<? extends TypeReference>) }
142 def public FunctionDeclaration(TypeDescriptor range, TypeDescriptor... parameters) { FunctionDeclaration(range, parameters as Iterable<? extends TypeReference>) } 144 def FunctionDeclaration(TypeDescriptor range, TypeDescriptor... parameters) { FunctionDeclaration(range, parameters as Iterable<? extends TypeReference>) }
143 def public FunctionDeclaration(CharSequence name, TypeDescriptor range, Iterable<? extends TypeDescriptor> parameters) { return FunctionDeclaration(range,parameters) => [x|x.name = name.canonize] } 145 def FunctionDeclaration(CharSequence name, TypeDescriptor range, Iterable<? extends TypeDescriptor> parameters) { return FunctionDeclaration(range,parameters) => [x|x.name = name.canonize] }
144 def public FunctionDeclaration(TypeDescriptor range, Iterable<? extends TypeDescriptor> parameters) { 146 def FunctionDeclaration(TypeDescriptor range, Iterable<? extends TypeDescriptor> parameters) {
145 val function = createFunctionDeclaration 147 val function = createFunctionDeclaration
146 for(parameter : parameters) function.parameters+=parameter.toTypeReference 148 for(parameter : parameters) function.parameters+=parameter.toTypeReference
147 function.range = range.toTypeReference 149 function.range = range.toTypeReference
148 return function 150 return function
149 } 151 }
150 152
151 def public FunctionDefinition(CharSequence name, TypeDescriptor range, Function1<VariableContext, ? extends TermDescription> expression) { 153 def FunctionDefinition(CharSequence name, TypeDescriptor range, Function1<VariableContext, ? extends TermDescription> expression) {
152 val context = new VariableContext(this,logicFactiory) 154 val context = new VariableContext(this,logicFactiory)
153 val definition = expression.apply(context) 155 val definition = expression.apply(context)
154 return FunctionDefinition(name,range,context.variables,definition); 156 return FunctionDefinition(name,range,context.variables,definition);
155 } 157 }
156 def public FunctionDefinition(CharSequence name, TypeDescriptor range, Iterable<Variable> variables, TermDescription definition) { 158 def FunctionDefinition(CharSequence name, TypeDescriptor range, Iterable<Variable> variables, TermDescription definition) {
157 return createFunctionDefinition => [ 159 return createFunctionDefinition => [
158 it.name = name.canonize 160 it.name = name.canonize
159 it.parameters += variables.map[it.range.toTypeReference] 161 it.parameters += variables.map[it.range.toTypeReference]
@@ -162,23 +164,23 @@ public class LogicProblemBuilder{
162 it.value = definition.toTerm 164 it.value = definition.toTerm
163 ] 165 ]
164 } 166 }
165 def public FunctionDefinition(CharSequence name, TypeDescriptor range, Iterable<TypeDescriptor> parameters, Map<List<Term>,Term> parametersToValue) { 167 def FunctionDefinition(CharSequence name, TypeDescriptor range, Iterable<TypeDescriptor> parameters, Map<List<Term>,Term> parametersToValue) {
166 return FunctionDefinition(name,range,parameters,parametersToValue,null) 168 return FunctionDefinition(name,range,parameters,parametersToValue,null)
167 } 169 }
168 def public FunctionDefinition(CharSequence name, TypeDescriptor range, Iterable<TypeDescriptor> parameters, Map<List<Term>,Term> parametersToValue, Term defaultValue) { 170 def FunctionDefinition(CharSequence name, TypeDescriptor range, Iterable<TypeDescriptor> parameters, Map<List<Term>,Term> parametersToValue, Term defaultValue) {
169 val parameterList = parameters.toList; 171 val parameterList = parameters.toList;
170 val variableList = (1..parameterList.size).map[index | '''param «index»'''.createVar(parameterList.get(index-1))].toList 172 val variableList = (1..parameterList.size).map[index | '''param «index»'''.createVar(parameterList.get(index-1))].toList
171 return FunctionDefinition(name,range,variableList,advancedConstructs.FunctionDefinitionBody(variableList,parametersToValue,defaultValue)) 173 return FunctionDefinition(name,range,variableList,advancedConstructs.FunctionDefinitionBody(variableList,parametersToValue,defaultValue))
172 } 174 }
173 175
174 // Add function to a problem 176 // Add function to a problem
175 def public add(LogicProblem input, Function function) { 177 def add(LogicProblem input, Function function) {
176 input.nameIfAnonymFunction(function) 178 input.nameIfAnonymFunction(function)
177 input.checkFunction(function) 179 input.checkFunction(function)
178 input.functions += function 180 input.functions += function
179 return function 181 return function
180 } 182 }
181 def public add(LogicProblem input, FunctionDescription functionDescription) { input.add(FunctionDeclaration(functionDescription)) } 183 def add(LogicProblem input, FunctionDescription functionDescription) { input.add(FunctionDeclaration(functionDescription)) }
182 def protected nameIfAnonymFunction(LogicProblem problem, Function functionDeclaration) { 184 def protected nameIfAnonymFunction(LogicProblem problem, Function functionDeclaration) {
183 if(functionDeclaration.name.nullOrEmpty) { 185 if(functionDeclaration.name.nullOrEmpty) {
184 functionDeclaration.name = problem.functions.map[it.name].generateUniqueName[i | "function"+i] 186 functionDeclaration.name = problem.functions.map[it.name].generateUniqueName[i | "function"+i]
@@ -199,15 +201,15 @@ public class LogicProblemBuilder{
199 } 201 }
200 202
201 // Constants 203 // Constants
202 def public ConstantDeclaration(CharSequence name, TypeDescriptor type) { ConstantDeclaration(type) => [it.name = name.canonize] } 204 def ConstantDeclaration(CharSequence name, TypeDescriptor type) { ConstantDeclaration(type) => [it.name = name.canonize] }
203 def public ConstantDeclaration(TypeDescriptor type) { createConstantDeclaration => [it.type = type.toTypeReference] } 205 def ConstantDeclaration(TypeDescriptor type) { createConstantDeclaration => [it.type = type.toTypeReference] }
204 206
205 def public ConstantDefinition(CharSequence name, TypeDescriptor type, TermDescription value) { 207 def ConstantDefinition(CharSequence name, TypeDescriptor type, TermDescription value) {
206 createConstantDefinition => [it.name = name.canonize it.type = type.toTypeReference it.value = value.toTerm] 208 createConstantDefinition => [it.name = name.canonize it.type = type.toTypeReference it.value = value.toTerm]
207 } 209 }
208 210
209 // Add constant to a problem 211 // Add constant to a problem
210 def public add(LogicProblem problem, Constant constant) { 212 def add(LogicProblem problem, Constant constant) {
211 problem.nameIfAnonymConstant(constant); 213 problem.nameIfAnonymConstant(constant);
212 problem.checkConstant(constant) 214 problem.checkConstant(constant)
213 problem.constants += constant 215 problem.constants += constant
@@ -226,10 +228,10 @@ public class LogicProblemBuilder{
226 } 228 }
227 229
228 // Relations 230 // Relations
229 def public RelationDeclaration(CharSequence name, TypeDescriptor... parameters) { return RelationDeclaration(name, parameters as Iterable<? extends TypeReference>) } 231 def RelationDeclaration(CharSequence name, TypeDescriptor... parameters) { return RelationDeclaration(name, parameters as Iterable<? extends TypeReference>) }
230 def public RelationDeclaration(CharSequence name, Iterable<? extends TypeDescriptor> parameters) { return RelationDeclaration(parameters) => [x|x.name = name.canonize] } 232 def RelationDeclaration(CharSequence name, Iterable<? extends TypeDescriptor> parameters) { return RelationDeclaration(parameters) => [x|x.name = name.canonize] }
231 def public RelationDeclaration(TypeDescriptor... parameters) { RelationDeclaration( parameters as Iterable<? extends TypeReference>) } 233 def RelationDeclaration(TypeDescriptor... parameters) { RelationDeclaration( parameters as Iterable<? extends TypeReference>) }
232 def public RelationDeclaration(Iterable<? extends TypeDescriptor> parameters) { 234 def RelationDeclaration(Iterable<? extends TypeDescriptor> parameters) {
233 val relation = createRelationDeclaration 235 val relation = createRelationDeclaration
234 for(parameter : parameters) { 236 for(parameter : parameters) {
235 relation.parameters+=parameter.toTypeReference 237 relation.parameters+=parameter.toTypeReference
@@ -237,12 +239,12 @@ public class LogicProblemBuilder{
237 return relation 239 return relation
238 } 240 }
239 241
240 def public RelationDefinition(CharSequence name, Function1<VariableContext, ? extends TermDescription> expression) { 242 def RelationDefinition(CharSequence name, Function1<VariableContext, ? extends TermDescription> expression) {
241 val context = new VariableContext(this,logicFactiory); 243 val context = new VariableContext(this,logicFactiory);
242 val definition = expression.apply(context); 244 val definition = expression.apply(context);
243 return RelationDefinition(name,context.variables,definition) 245 return RelationDefinition(name,context.variables,definition)
244 } 246 }
245 def public RelationDefinition(CharSequence name, Iterable<Variable> variables, TermDescription definition) { 247 def RelationDefinition(CharSequence name, Iterable<Variable> variables, TermDescription definition) {
246 return createRelationDefinition => [ 248 return createRelationDefinition => [
247 it.name = name.canonize 249 it.name = name.canonize
248 it.parameters += variables.map[it.range.toTypeReference] 250 it.parameters += variables.map[it.range.toTypeReference]
@@ -250,7 +252,7 @@ public class LogicProblemBuilder{
250 it.value = definition?.toTerm 252 it.value = definition?.toTerm
251 ] 253 ]
252 } 254 }
253 def public RelationDefinition(CharSequence name, Iterable<? extends TypeDescriptor> parameters, Iterable<? extends List<? extends TermDescription>> possibleValues) { 255 def RelationDefinition(CharSequence name, Iterable<? extends TypeDescriptor> parameters, Iterable<? extends List<? extends TermDescription>> possibleValues) {
254 val res = createRelationDefinition => [it.name = name.canonize] 256 val res = createRelationDefinition => [it.name = name.canonize]
255 val variableMap = new ArrayList(parameters.size) 257 val variableMap = new ArrayList(parameters.size)
256 var index = 0 258 var index = 0
@@ -267,7 +269,7 @@ public class LogicProblemBuilder{
267 } 269 }
268 270
269 // Add Relation to a problem 271 // Add Relation to a problem
270 def public add(LogicProblem input, Relation relation) { 272 def add(LogicProblem input, Relation relation) {
271 input.nameIfAnonymRelation(relation) 273 input.nameIfAnonymRelation(relation)
272 input.checkRelation(relation) 274 input.checkRelation(relation)
273 input.relations+=relation 275 input.relations+=relation
@@ -293,17 +295,17 @@ public class LogicProblemBuilder{
293 } 295 }
294 296
295 // Assertion 297 // Assertion
296 def public Assertion(TermDescription term) { 298 def Assertion(TermDescription term) {
297 val result = term.toTerm 299 val result = term.toTerm
298 result.nameAnonymVariables(Collections.EMPTY_LIST) 300 result.nameAnonymVariables(Collections.EMPTY_LIST)
299 createAssertion => [it.value = result] 301 createAssertion => [it.value = result]
300 } 302 }
301 def public Assertion(CharSequence name, TermDescription term) { 303 def Assertion(CharSequence name, TermDescription term) {
302 val result = term.toTerm 304 val result = term.toTerm
303 result.nameAnonymVariables(Collections.EMPTY_LIST) 305 result.nameAnonymVariables(Collections.EMPTY_LIST)
304 createAssertion => [it.value = result it.name=name.canonize] 306 createAssertion => [it.value = result it.name=name.canonize]
305 } 307 }
306 def public add(LogicProblem problem, Assertion assertion) { 308 def add(LogicProblem problem, Assertion assertion) {
307 if(assertion.name.nullOrEmpty) { 309 if(assertion.name.nullOrEmpty) {
308 val name = problem.assertions.map[name].generateUniqueName["assertion"+it] 310 val name = problem.assertions.map[name].generateUniqueName["assertion"+it]
309 assertion.name=name 311 assertion.name=name
@@ -313,7 +315,7 @@ public class LogicProblemBuilder{
313 return assertion 315 return assertion
314 } 316 }
315 317
316 def public add(LogicProblem problem, TermDescription term) { 318 def add(LogicProblem problem, TermDescription term) {
317 problem.add(Assertion(term)) 319 problem.add(Assertion(term))
318 } 320 }
319 321
@@ -329,7 +331,7 @@ public class LogicProblemBuilder{
329 } 331 }
330 } 332 }
331 333
332 def public checkDefinition(EObject definition) { 334 def checkDefinition(EObject definition) {
333 /*for(value : definition.eAllContents.filter(SymbolicValue).toIterable) { 335 /*for(value : definition.eAllContents.filter(SymbolicValue).toIterable) {
334 var referred = value.symbolicReference 336 var referred = value.symbolicReference
335 if(referred instanceof Variable) { 337 if(referred instanceof Variable) {
@@ -341,7 +343,7 @@ public class LogicProblemBuilder{
341 } 343 }
342 344
343 // Containment 345 // Containment
344 def public ContainmentHierarchy( 346 def ContainmentHierarchy(
345 Iterable<? extends Type> typesInHierarchy, 347 Iterable<? extends Type> typesInHierarchy,
346 Iterable<? extends Function> containmentFunctions, 348 Iterable<? extends Function> containmentFunctions,
347 Iterable<? extends Relation> containmentRelations, 349 Iterable<? extends Relation> containmentRelations,
@@ -355,7 +357,7 @@ public class LogicProblemBuilder{
355 ] 357 ]
356 return result 358 return result
357 } 359 }
358 def public add(LogicProblem problem, ContainmentHierarchy hierarchy) { 360 def add(LogicProblem problem, ContainmentHierarchy hierarchy) {
359 problem.containmentHierarchies+=hierarchy 361 problem.containmentHierarchies+=hierarchy
360 return hierarchy 362 return hierarchy
361 } 363 }
@@ -413,7 +415,7 @@ public class LogicProblemBuilder{
413 return result; 415 return result;
414 } 416 }
415 417
416 def public Term toTerm(TermDescription term) { 418 def Term toTerm(TermDescription term) {
417 if(term instanceof Term) return term 419 if(term instanceof Term) return term
418 else if (term instanceof Variable) return createSymbolicValue => [symbolicReference = term] 420 else if (term instanceof Variable) return createSymbolicValue => [symbolicReference = term]
419 else if (term instanceof Constant) return term.call() 421 else if (term instanceof Constant) return term.call()
@@ -421,115 +423,166 @@ public class LogicProblemBuilder{
421 else throw new UnsupportedOperationException("Can not create reference for symbolic declaration " + term.class.name) 423 else throw new UnsupportedOperationException("Can not create reference for symbolic declaration " + term.class.name)
422 } 424 }
423 425
424 def public !(TermDescription term) { Not(term) } 426 def !(TermDescription term) { Not(term) }
425 def public Not(TermDescription term) { createNot => [operand = term.toTerm] } 427 def Not(TermDescription term) { createNot => [operand = term.toTerm] }
426 428
427 def public &&(TermDescription a, TermDescription b) { And(a,b) } 429 def &&(TermDescription a, TermDescription b) { And(a,b) }
428 def public And(TermDescription... terms) { return And(terms as Iterable<? extends TermDescription>) } 430 def And(TermDescription... terms) { return And(terms as Iterable<? extends TermDescription>) }
429 def public And(Iterable<? extends TermDescription> terms) { createAnd => [operands += terms.map[toTerm]] } 431 def And(Iterable<? extends TermDescription> terms) { createAnd => [operands += terms.map[toTerm]] }
430 432
431 def public ||(TermDescription a, TermDescription b) { Or(a,b) } 433 def ||(TermDescription a, TermDescription b) { Or(a,b) }
432 def public Or(TermDescription... terms) { Or(terms as Iterable<? extends TermDescription>) } 434 def Or(TermDescription... terms) { Or(terms as Iterable<? extends TermDescription>) }
433 def public Or(Iterable<? extends TermDescription> terms) { createOr => [operands += terms.map[toTerm]] } 435 def Or(Iterable<? extends TermDescription> terms) { createOr => [operands += terms.map[toTerm]] }
434 436
435 def public =>(TermDescription a, TermDescription b) { Impl(a,b) } 437 def =>(TermDescription a, TermDescription b) { Impl(a,b) }
436 def public Impl(TermDescription a, TermDescription b) { createImpl => [leftOperand = a.toTerm rightOperand = b.toTerm] } 438 def Impl(TermDescription a, TermDescription b) { createImpl => [leftOperand = a.toTerm rightOperand = b.toTerm] }
437 439
438 def public <=>(TermDescription a, TermDescription b) { Iff(a,b)} 440 def <=>(TermDescription a, TermDescription b) { Iff(a,b)}
439 def public Iff(TermDescription a, TermDescription b) { createIff =>[leftOperand=a.toTerm rightOperand=b.toTerm] } 441 def Iff(TermDescription a, TermDescription b) { createIff =>[leftOperand=a.toTerm rightOperand=b.toTerm] }
440 442
441 def public ITE(TermDescription condition, TermDescription ifTrue, TermDescription ifFalse) { 443 def ITE(TermDescription condition, TermDescription ifTrue, TermDescription ifFalse) {
442 createIfThenElse => [it.condition = condition.toTerm it.ifTrue = ifTrue.toTerm it.ifFalse = ifFalse.toTerm] 444 createIfThenElse => [it.condition = condition.toTerm it.ifTrue = ifTrue.toTerm it.ifFalse = ifFalse.toTerm]
443 } 445 }
444 446
445 def public >(TermDescription left, TermDescription right) { MoreThan(left,right)} 447 def >(TermDescription left, TermDescription right) { MoreThan(left,right)}
446 def public MoreThan(TermDescription left, TermDescription right) { createMoreThan => [leftOperand=left.toTerm rightOperand=right.toTerm] } 448 def MoreThan(TermDescription left, TermDescription right) { createMoreThan => [leftOperand=left.toTerm rightOperand=right.toTerm] }
447 449
448 def public <(TermDescription left, TermDescription right) { LessThan(left,right)} 450 def <(TermDescription left, TermDescription right) { LessThan(left,right)}
449 def public LessThan(TermDescription left, TermDescription right) { createLessThan => [leftOperand=left.toTerm rightOperand=right.toTerm] } 451 def LessThan(TermDescription left, TermDescription right) { createLessThan => [leftOperand=left.toTerm rightOperand=right.toTerm] }
450 452
451 def public <=(TermDescription left, TermDescription right) { LessOrEqual(left,right) } 453 def <=(TermDescription left, TermDescription right) { LessOrEqual(left,right) }
452 def public LessOrEqual(TermDescription left, TermDescription right) { createLessOrEqualThan => [leftOperand=left.toTerm rightOperand=right.toTerm] } 454 def LessOrEqual(TermDescription left, TermDescription right) { createLessOrEqualThan => [leftOperand=left.toTerm rightOperand=right.toTerm] }
453 455
454 def public >=(TermDescription left, TermDescription right) { MoreOrEqual(left,right) } 456 def >=(TermDescription left, TermDescription right) { MoreOrEqual(left,right) }
455 def public MoreOrEqual(TermDescription left, TermDescription right) { createMoreOrEqualThan => [leftOperand=left.toTerm rightOperand=right.toTerm] } 457 def MoreOrEqual(TermDescription left, TermDescription right) { createMoreOrEqualThan => [leftOperand=left.toTerm rightOperand=right.toTerm] }
456 458
457 def public ==(TermDescription left, TermDescription right) {Equals(left,right)} 459 def ==(TermDescription left, TermDescription right) {Equals(left,right)}
458 def public Equals(TermDescription left, TermDescription right) { createEquals => [leftOperand=left.toTerm rightOperand=right.toTerm] } 460 def Equals(TermDescription left, TermDescription right) { createEquals => [leftOperand=left.toTerm rightOperand=right.toTerm] }
459 461
460 def public !=(TermDescription left, TermDescription right) { Distinct(left,right) } 462 def !=(TermDescription left, TermDescription right) { Distinct(left,right) }
461 def public Distinct(TermDescription... terms) { return Distinct(terms as Iterable<? extends TermDescription>) } 463 def Distinct(TermDescription... terms) { return Distinct(terms as Iterable<? extends TermDescription>) }
462 def public Distinct(Iterable<? extends TermDescription> terms) { createDistinct => [operands += terms.map[toTerm]] } 464 def Distinct(Iterable<? extends TermDescription> terms) { createDistinct => [operands += terms.map[toTerm]] }
463 465
464 def public +(TermDescription left, TermDescription right) { Plus(left,right) } 466 def +(TermDescription left, TermDescription right) { Plus(left,right) }
465 def public Plus(TermDescription left, TermDescription right) { createPlus => [leftOperand=left.toTerm rightOperand=right.toTerm] } 467 def Plus(TermDescription left, TermDescription right) { createPlus => [leftOperand=left.toTerm rightOperand=right.toTerm] }
466 468
467 def public -(TermDescription left, TermDescription right) { Minus(left,right) } 469 def -(TermDescription left, TermDescription right) { Minus(left,right) }
468 def public Minus(TermDescription left, TermDescription right) { createMinus => [leftOperand=left.toTerm rightOperand=right.toTerm] } 470 def Minus(TermDescription left, TermDescription right) { createMinus => [leftOperand=left.toTerm rightOperand=right.toTerm] }
469 471
470 def public *(TermDescription left, TermDescription right) { Multiply(left,right) } 472 def *(TermDescription left, TermDescription right) { Multiply(left,right) }
471 def public Multiply(TermDescription left, TermDescription right) { createMultiply => [leftOperand=left.toTerm rightOperand=right.toTerm] } 473 def Multiply(TermDescription left, TermDescription right) { createMultiply => [leftOperand=left.toTerm rightOperand=right.toTerm] }
472 474
473 def public /(TermDescription left, TermDescription right) { Divide(left,right) } 475 def /(TermDescription left, TermDescription right) { Divide(left,right) }
474 def public Divide(TermDescription left, TermDescription right) { createDivison => [leftOperand = left.toTerm rightOperand = right.toTerm]} 476 def Divide(TermDescription left, TermDescription right) { createDivison => [leftOperand = left.toTerm rightOperand = right.toTerm]}
475 477
476 def public %(TermDescription left, TermDescription right) { Modulo(left,right) } 478 def %(TermDescription left, TermDescription right) { Modulo(left,right) }
477 def public Modulo(TermDescription left, TermDescription right) { createMod => [leftOperand = left.toTerm rightOperand = right.toTerm]} 479 def Modulo(TermDescription left, TermDescription right) { createMod => [leftOperand = left.toTerm rightOperand = right.toTerm]}
478 480
479 def public asTerm(boolean value) { createBoolLiteral => [x|x.value = value] } 481 def Pow(TermDescription left, TermDescription right) {createPow => [leftOperand = left.toTerm rightOperand = right.toTerm]}
480 def public asTerm(int value) { createIntLiteral => [x|x.value = value] } 482 def asTerm(boolean value) { createBoolLiteral => [x|x.value = value] }
481 def public asTerm(double value) { BigDecimal.valueOf(value).asTerm } 483 def asTerm(int value) { createIntLiteral => [x|x.value = value] }
482 def public asTerm(float value) { BigDecimal.valueOf(value).asTerm } 484 def asTerm(double value) { BigDecimal.valueOf(value).asTerm }
483 def public asTerm(BigDecimal value) { createRealLiteral => [x|x.value = value] } 485 def asTerm(float value) { BigDecimal.valueOf(value).asTerm }
484 def public asTerm(String value) { createStringLiteral => [x|x.value = value]} 486 def asTerm(BigDecimal value) { createRealLiteral => [x|x.value = value] }
485 def public InstanceOf(TermDescription term, TypeDescriptor type) { 487 def asTerm(String value) { createStringLiteral => [x|x.value = value]}
488 def InstanceOf(TermDescription term, TypeDescriptor type) {
486 createInstanceOf => [ 489 createInstanceOf => [
487 it.value = term.toTerm 490 it.value = term.toTerm
488 it.range = type.toTypeReference 491 it.range = type.toTypeReference
489 ] 492 ]
490 } 493 }
491 def public transitiveClosure(Relation relation, TermDescription source, TermDescription target) { 494 def transitiveClosure(Relation relation, TermDescription source, TermDescription target) {
492 createTransitiveClosure => [ 495 createTransitiveClosure => [
493 it.relation = relation 496 it.relation = relation
494 it.leftOperand = leftOperand 497 it.leftOperand = source.toTerm
495 it.rightOperand = rightOperand 498 it.rightOperand = target.toTerm
496 ] 499 ]
497 } 500 }
498 501
499 // QuantifiedExpressions 502 // QuantifiedExpressions
500 503
501 def public Forall(Function1<VariableContext, ? extends TermDescription> expression) { 504 def Forall(Function1<VariableContext, ? extends TermDescription> expression) {
502 val context = new VariableContext(this,logicFactiory) 505 val context = new VariableContext(this,logicFactiory)
503 val term = expression.apply(context) 506 val term = expression.apply(context)
504 return createForall => [x| x.quantifiedVariables+=context.variables x.expression = term.toTerm] 507 return createForall => [x| x.quantifiedVariables+=context.variables x.expression = term.toTerm]
505 } 508 }
506 def public Forall(TermDescription expression, Variable... variables) { 509 def Forall(TermDescription expression, Variable... variables) {
507 Forall(variables,expression) } 510 Forall(variables,expression) }
508 def public Forall(Iterable<? extends Variable> variables,TermDescription expression) { 511 def Forall(Iterable<? extends Variable> variables,TermDescription expression) {
509 val forallExpression = createForall 512 val forallExpression = createForall
510 for(variable : variables) forallExpression.quantifiedVariables += variable 513 for(variable : variables) forallExpression.quantifiedVariables += variable
511 forallExpression.expression = expression.toTerm 514 forallExpression.expression = expression.toTerm
512 return forallExpression 515 return forallExpression
513 } 516 }
514 517
515 def public Exists(Function1<VariableContext, ? extends TermDescription> expression) { 518 def Exists(Function1<VariableContext, ? extends TermDescription> expression) {
516 val context = new VariableContext(this,logicFactiory) 519 val context = new VariableContext(this,logicFactiory)
517 val term = expression.apply(context) 520 val term = expression.apply(context)
518 return createExists => [x| x.quantifiedVariables+=context.variables x.expression = term.toTerm] 521 return createExists => [x| x.quantifiedVariables+=context.variables x.expression = term.toTerm]
519 } 522 }
520 def public Exists(TermDescription expression, Variable... variables) { 523 def Exists(TermDescription expression, Variable... variables) {
521 Exists(variables,expression) } 524 Exists(variables,expression) }
522 def public Exists(Iterable<? extends Variable> variables, TermDescription expression) { 525 def Exists(Iterable<? extends Variable> variables, TermDescription expression) {
523 val existsExpression = createExists 526 val existsExpression = createExists
524 for(variable : variables) existsExpression.quantifiedVariables += variable 527 for(variable : variables) existsExpression.quantifiedVariables += variable
525 existsExpression.expression = expression.toTerm 528 existsExpression.expression = expression.toTerm
526 return existsExpression 529 return existsExpression
527 } 530 }
528 531
532 // AggregatedExpression
533
534 private def <T extends AggregateExpression> configureAggregateExpression(T expression, Relation referred, List<Variable> terms, Variable target) {
535 if(terms.size != referred.parameters.size) {
536 throw new LogicProblemBuilderException(
537 '''The function called has «referred.parameters.size» parameters but it is called with «terms.size»!''')
538 } else {
539 expression.relation = referred
540 expression.resultVariable = target
541 for(var i=0; i<referred.parameters.size;i++) {
542 val targetRelation = terms.get(i)
543 val substitution = createAggregatedParameterSubstitution => [it.variable = targetRelation]
544 expression.parameterSubstitution += substitution
545 }
546 return expression
547 }
548 }
549 private def <T extends ProjectedAggregateExpression> configureProjectedAggregateExpression(T expression, Relation referred, List<Variable> terms, Variable target, int projection) {
550 if(projection < 0 || projection >= referred.parameters.size) {
551 throw new LogicProblemBuilderException(
552 '''The function called has «referred.parameters.size» parameters but it is called with «terms.size»!''')
553 } else {
554 val res = expression.configureAggregateExpression(referred, terms,target)
555 if(res.parameterSubstitution.get(projection).variable !== null) {
556 throw new LogicProblemBuilderException(
557 '''Projection over set variable!''')
558 }
559 val projectionType = referred.parameters.get(projection)
560 if(!(projectionType instanceof IntTypeReference || projectionType instanceof RealTypeReference)) {
561 throw new LogicProblemBuilderException('''Projection over nunnumeric parameter!'''
562 )
563 }
564 res.projectionIndex = projection
565 return res
566 }
567
568 }
569 def Count(Relation referred, List<Variable> terms, Variable result) {
570 createCount.configureAggregateExpression(referred,terms,result)
571 }
572 def Sum(Relation referred, List<Variable> terms, int projection, Variable result) {
573 createSum.configureProjectedAggregateExpression(referred,terms,result,projection)
574 }
575 def Min(Relation referred, List<Variable> terms, int projection, Variable result) {
576 createMin.configureProjectedAggregateExpression(referred,terms,result,projection)
577 }
578 def Max(Relation referred, List<Variable> terms, int projection, Variable result) {
579 createMax.configureProjectedAggregateExpression(referred,terms,result,projection)
580 }
581
529 // Function calls 582 // Function calls
530 def public call(Function function, TermDescription... substitutions) { 583 def call(Function function, TermDescription... substitutions) {
531 call(function, substitutions as Iterable<? extends TermDescription>) } 584 call(function, substitutions as Iterable<? extends TermDescription>) }
532 def public call(Function function, Iterable<? extends TermDescription> substitutions) { 585 def call(Function function, Iterable<? extends TermDescription> substitutions) {
533 val functionReference = createSymbolicValue 586 val functionReference = createSymbolicValue
534 functionReference.symbolicReference=function 587 functionReference.symbolicReference=function
535 val List<TermDescription> l= new LinkedList() 588 val List<TermDescription> l= new LinkedList()
@@ -546,20 +599,22 @@ public class LogicProblemBuilder{
546 } 599 }
547 600
548 // Relation calls 601 // Relation calls
549 def public call(Relation relation, TermDescription... substitution) { relation.call(substitution as Iterable<? extends TermDescription>)} 602 def call(Relation relation, TermDescription... substitution) { relation.call(substitution as Iterable<? extends TermDescription>)}
550 def public call(Relation relation, Iterable<? extends TermDescription> substitution) { 603 def call(Relation relation, Iterable<? extends TermDescription> substitution) {
551 val relationReference = createSymbolicValue 604 val relationReference = createSymbolicValue
605 if(relation === null) {
606 throw new LogicProblemBuilderException('''Call is referring to null!''')
607 }
552 relationReference.symbolicReference = relation 608 relationReference.symbolicReference = relation
553 //println('''«relation.name»(«substitution.size»->«relation.parameters»)''')
554 for(value : substitution) 609 for(value : substitution)
555 relationReference.parameterSubstitutions += value.toTerm 610 relationReference.parameterSubstitutions += value.toTerm
556 relationReference.checkRelationCall(relation) 611 relationReference.checkRelationCall(relation)
557 return relationReference 612 return relationReference
558 } 613 }
559 def private checkRelationCall(SymbolicValue value, Relation referredRelation) { 614 def private checkRelationCall(SymbolicValue value, Relation referredRelation) {
560// if(value === null || referredRelation === null) { 615 if(value === null || referredRelation === null) {
561// println("gebasz") 616 throw new LogicProblemBuilderException('''Call is referring to null!''')
562// } 617 }
563 if(value.parameterSubstitutions.size != referredRelation.parameters.size) { 618 if(value.parameterSubstitutions.size != referredRelation.parameters.size) {
564 throw new LogicProblemBuilderException( 619 throw new LogicProblemBuilderException(
565 '''The relation "«referredRelation.name»" called has «referredRelation.parameters.size» parameters but it is called with «value.parameterSubstitutions.size»!''') 620 '''The relation "«referredRelation.name»" called has «referredRelation.parameters.size» parameters but it is called with «value.parameterSubstitutions.size»!''')
@@ -567,11 +622,9 @@ public class LogicProblemBuilder{
567 } 622 }
568 623
569 // constant evaluation 624 // constant evaluation
570 def public call(Constant constant) { 625 def call(Constant constant) {
571 val constantReference = createSymbolicValue 626 val constantReference = createSymbolicValue
572 constantReference.symbolicReference = constant 627 constantReference.symbolicReference = constant
573 return constantReference 628 return constantReference
574 } 629 }
575
576
577} 630}
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend
index b4d9a8fa..3e0c86c4 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend
@@ -34,7 +34,7 @@ public class LogicReasonerException extends Exception {
34 } 34 }
35} 35}
36 36
37abstract class LogicSolverConfiguration { 37abstract class SolverConfiguration {
38 public static val Unlimited = -1; 38 public static val Unlimited = -1;
39 public static val String UndefinedPath = null 39 public static val String UndefinedPath = null
40 40
@@ -42,7 +42,7 @@ abstract class LogicSolverConfiguration {
42 public String solverPath = UndefinedPath 42 public String solverPath = UndefinedPath
43 /** Max runtime limit in seconds. */ 43 /** Max runtime limit in seconds. */
44 public int runtimeLimit = Unlimited 44 public int runtimeLimit = Unlimited
45 /** Max runtime limit in seconds. */ 45 /** Max memory limit in megabytes. */
46 public int memoryLimit = Unlimited 46 public int memoryLimit = Unlimited
47 /** Documentation level of the solver. */ 47 /** Documentation level of the solver. */
48 public DocumentationLevel documentationLevel = DocumentationLevel::NONE 48 public DocumentationLevel documentationLevel = DocumentationLevel::NONE
@@ -52,7 +52,9 @@ abstract class LogicSolverConfiguration {
52 * or via a listener registered by {@link progressMonitor.addCancelListener}</li> 52 * or via a listener registered by {@link progressMonitor.addCancelListener}</li>
53 */ 53 */
54 public SolverProgressMonitor progressMonitor = new NullSolverProgressMonitor 54 public SolverProgressMonitor progressMonitor = new NullSolverProgressMonitor
55}
55 56
57abstract class LogicSolverConfiguration extends SolverConfiguration {
56 public var TypeScopes typeScopes = new TypeScopes; 58 public var TypeScopes typeScopes = new TypeScopes;
57 public var SolutionScope solutionScope = new SolutionScope 59 public var SolutionScope solutionScope = new SolutionScope
58} 60}
@@ -157,7 +159,7 @@ public class TypeScopes {
157 */ 159 */
158public class SolutionScope { 160public class SolutionScope {
159 public static val All = Integer.MAX_VALUE; 161 public static val All = Integer.MAX_VALUE;
160 public var numberOfRequiredSolution = 1 162 public var numberOfRequiredSolutions = 1
161} 163}
162/** Progress monitor class for a solver to 164/** Progress monitor class for a solver to
163 * <li>(optionally) report progress via {@link worked}</li> 165 * <li>(optionally) report progress via {@link worked}</li>
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/statistics/StatisticSections2CSV.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/statistics/StatisticSections2CSV.xtend
index d673cb17..a78ceb19 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/statistics/StatisticSections2CSV.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/statistics/StatisticSections2CSV.xtend
@@ -17,7 +17,7 @@ class StatisticsData {
17} 17}
18 18
19class StatisticSections2CSV { 19class StatisticSections2CSV {
20 static val separator = ';' 20 static val separator = ','
21 static val empty = "" 21 static val empty = ""
22 22
23 private def getValue(Map<String, String> map,String key) { 23 private def getValue(Map<String, String> map,String key) {
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/statistics/StatisticSections2Print.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/statistics/StatisticSections2Print.xtend
index 39370d75..c5e81f94 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/statistics/StatisticSections2Print.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/statistics/StatisticSections2Print.xtend
@@ -12,7 +12,7 @@ class StatisticSections2Print {
12 { 12 {
13 var result = ""; 13 var result = "";
14 for(statistic : statistics) { 14 for(statistic : statistics) {
15 result+= '''«statistic.readValue»;''' 15 result+= '''«statistic.readValue»,'''
16 } 16 }
17 return result 17 return result
18 } 18 }
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend
index 92deeae6..8d6b565a 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend
@@ -3,23 +3,24 @@ package hu.bme.mit.inf.dslreasoner.logic2ecore
3import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic 3import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
4import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace 4import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace
5import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation 5import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation
6import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
6import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder 7import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TermDescription
9import java.math.BigDecimal
7import java.util.Collection 10import java.util.Collection
8import java.util.HashMap 11import java.util.HashMap
9import java.util.HashSet 12import java.util.HashSet
10import java.util.List 13import java.util.List
14import java.util.Map
11import java.util.Set 15import java.util.Set
12import org.eclipse.emf.ecore.EClass 16import org.eclipse.emf.ecore.EClass
17import org.eclipse.emf.ecore.EDataType
18import org.eclipse.emf.ecore.EEnum
13import org.eclipse.emf.ecore.EObject 19import org.eclipse.emf.ecore.EObject
14import org.eclipse.emf.ecore.EStructuralFeature 20import org.eclipse.emf.ecore.EStructuralFeature
21import org.eclipse.emf.ecore.EcorePackage
15 22
16import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 23import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
17import org.eclipse.emf.ecore.EEnum
18import org.eclipse.emf.ecore.EDataType
19import org.eclipse.emf.ecore.EcorePackage
20import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TermDescription
21import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
22import java.util.Map
23 24
24class Logic2Ecore { 25class Logic2Ecore {
25 val extension LogicStructureBuilder structureBuilder = new LogicStructureBuilder 26 val extension LogicStructureBuilder structureBuilder = new LogicStructureBuilder
@@ -84,15 +85,15 @@ class Logic2Ecore {
84 if(attributeType.EContainingClass.isSuperTypeOf(sourceObject.eClass)) { 85 if(attributeType.EContainingClass.isSuperTypeOf(sourceObject.eClass)) {
85 val allElementsOfTargetDatatype = getAllElementsOfDatatype(attributeType.EAttributeType,forwardTrace,interpretation) 86 val allElementsOfTargetDatatype = getAllElementsOfDatatype(attributeType.EAttributeType,forwardTrace,interpretation)
86 for(l : allElementsOfTargetDatatype.entrySet) { 87 for(l : allElementsOfTargetDatatype.entrySet) {
87 val expression = ecore2Logic.IsAttributeValue(forwardTrace,sourceElement,l.value,attributeType) 88 val expression = ecore2Logic.IsAttributeValue(forwardTrace,sourceElement,l.key,attributeType)
88 val linkExist = interpretation.evalAsBool(expression) 89 val linkExist = interpretation.evalAsBool(expression)
89 if(linkExist) { 90 if(linkExist) {
90 if(attributeType.isMany) { 91 if(attributeType.isMany) {
91 val list = sourceObject.eGet(attributeType) as List<? super Object> 92 val list = sourceObject.eGet(attributeType) as List<? super Object>
92 list += l.key 93 list += l.value
93 } else { 94 } else {
94 try { 95 try {
95 sourceObject.eSet(attributeType,l.key) 96 sourceObject.eSet(attributeType,translateType(attributeType.EAttributeType,l.value))
96 } catch(Exception e) { 97 } catch(Exception e) {
97 e.printStackTrace 98 e.printStackTrace
98 } 99 }
@@ -107,34 +108,30 @@ class Logic2Ecore {
107 return element2Object.values.root 108 return element2Object.values.root
108 } 109 }
109 110
111 def translateType(EDataType type, Object value) {
112 if(type == EcorePackage.eINSTANCE.EFloat) {
113 val bd = value as BigDecimal
114 return bd.floatValue
115 } else if( type == EcorePackage.eINSTANCE.EDouble ) {
116 val bd = value as BigDecimal
117 return bd.doubleValue
118 } else return value
119 }
110 120
111// if(attributeType.EAttributeType.isSuperTypeOf(targetObject.eClass)) { 121 protected dispatch def Map<? extends TermDescription, ? extends Object> getAllElementsOfDatatype(EEnum type, Ecore2Logic_Trace forwardTrace, LogicModelInterpretation interpretation) {
112// val expression = ecore2Logic.IsAttributeValue(forwardTrace,sourceElement,targetElement,attributeType) 122 ecore2Logic.allLiteralsInScope(forwardTrace).toMap[ecore2Logic.Literal(forwardTrace,it)]
113// val linkExist = interpretation.evalAsBool(expression)
114// if(linkExist) {
115// if(attributeType.isMany) {
116// val list = sourceObject.eGet(attributeType) as List<? super EObject>
117// list+= targetObject
118// } else {
119// sourceObject.eSet(referenceType,targetObject)
120// }
121// }
122// }
123
124 protected dispatch def Map<? extends Object, ? extends TermDescription> getAllElementsOfDatatype(EEnum type, Ecore2Logic_Trace forwardTrace, LogicModelInterpretation interpretation) {
125 ecore2Logic.allLiteralsInScope(forwardTrace).toInvertedMap[ecore2Logic.Literal(forwardTrace,it)]
126 } 123 }
127 124
128 protected dispatch def Map<? extends Object, ? extends TermDescription> getAllElementsOfDatatype(EDataType primitive, Ecore2Logic_Trace forwardTrace, LogicModelInterpretation interpretation) { 125 protected dispatch def Map<? extends TermDescription, ? extends Object> getAllElementsOfDatatype(EDataType primitive, Ecore2Logic_Trace forwardTrace, LogicModelInterpretation interpretation) {
129 val extension LogicProblemBuilder b = new LogicProblemBuilder 126 val extension LogicProblemBuilder b = new LogicProblemBuilder
130 if(primitive === EcorePackage.eINSTANCE.EInt || primitive === EcorePackage.eINSTANCE.EShort || primitive === EcorePackage.eINSTANCE.ELong) { 127 if(primitive === EcorePackage.eINSTANCE.EInt || primitive === EcorePackage.eINSTANCE.EShort || primitive === EcorePackage.eINSTANCE.ELong) {
131 interpretation.allIntegersInStructure.toInvertedMap[it.asTerm] 128 interpretation.allIntegersWithInterpretation
132 } else if(primitive === EcorePackage.eINSTANCE.EDouble || primitive === EcorePackage.eINSTANCE.EFloat) { 129 } else if(primitive === EcorePackage.eINSTANCE.EDouble || primitive === EcorePackage.eINSTANCE.EFloat) {
133 interpretation.allRealsInStructure.toInvertedMap[it.asTerm] 130 interpretation.allRealsWithInterpretation
134 } else if(primitive === EcorePackage.eINSTANCE.EString) { 131 } else if(primitive === EcorePackage.eINSTANCE.EString) {
135 interpretation.allStringsInStructure.toInvertedMap[it.asTerm] 132 interpretation.allStringsWithInterpretation
136 } else if(primitive === EcorePackage.eINSTANCE.EBoolean) { 133 } else if(primitive === EcorePackage.eINSTANCE.EBoolean) {
137 return #[false,true].toInvertedMap[it.asTerm] 134 interpretation.allBooleansWithInterpretation
138 } 135 }
139 } 136 }
140 137
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.classpath b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.classpath
index 75ccaa90..849e2a7b 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.classpath
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.classpath
@@ -1,9 +1,14 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<classpath> 2<classpath>
3 <classpathentry kind="src" path="ecore-gen"/> 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"/> 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"/> 5 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
6 <classpathentry kind="src" path="src"/> 6 <classpathentry kind="src" path="src"/>
7 <classpathentry kind="src" path="xtend-gen"/> 7 <classpathentry kind="src" path="xtend-gen"/>
8 <classpathentry kind="output" path="bin"/> 8 <classpathentry kind="lib" path="lib/com.microsoft.z3.jar">
9</classpath> 9 <attributes>
10 <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="hu.bme.mit.inf.dslreasoner.viatra2logic/lib"/>
11 </attributes>
12 </classpathentry>
13 <classpathentry kind="output" path="bin"/>
14</classpath>
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.gitignore b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.gitignore
index 8ae4e44d..40206e28 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.gitignore
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/.gitignore
@@ -2,3 +2,4 @@
2/src-gen/ 2/src-gen/
3/vql-gen/ 3/vql-gen/
4/xtend-gen/ 4/xtend-gen/
5/lib/*
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/META-INF/MANIFEST.MF b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/META-INF/MANIFEST.MF
index 8fa4517d..c7242106 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/META-INF/MANIFEST.MF
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/META-INF/MANIFEST.MF
@@ -18,7 +18,9 @@ Require-Bundle: com.google.guava,
18 hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0";visibility:=reexport, 18 hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0";visibility:=reexport,
19 org.eclipse.viatra.query.runtime.base.itc;bundle-version="1.5.0", 19 org.eclipse.viatra.query.runtime.base.itc;bundle-version="1.5.0",
20 org.eclipse.viatra.query.patternlanguage.emf;bundle-version="2.0.0", 20 org.eclipse.viatra.query.patternlanguage.emf;bundle-version="2.0.0",
21 org.eclipse.xtext 21 org.eclipse.xtext,
22 org.eclipse.xtext.xbase;bundle-version="2.18.0",
23 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;bundle-version="1.0.0"
22Bundle-ActivationPolicy: lazy 24Bundle-ActivationPolicy: lazy
23Export-Package: hu.bme.mit.inf.dslreasoner.viatra2logic, 25Export-Package: hu.bme.mit.inf.dslreasoner.viatra2logic,
24 hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations, 26 hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations,
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/TransfomedViatraQuery.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/TransfomedViatraQuery.java
index 717b0436..a4654103 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/TransfomedViatraQuery.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/TransfomedViatraQuery.java
@@ -3,6 +3,7 @@
3package hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations; 3package hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations;
4 4
5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.RelationAnnotation; 5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.RelationAnnotation;
6import org.eclipse.emf.common.util.EList;
6 7
7/** 8/**
8 * <!-- begin-user-doc --> 9 * <!-- begin-user-doc -->
@@ -15,6 +16,8 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.RelationAnnotation;
15 * <ul> 16 * <ul>
16 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getPatternFullyQualifiedName <em>Pattern Fully Qualified Name</em>}</li> 17 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getPatternFullyQualifiedName <em>Pattern Fully Qualified Name</em>}</li>
17 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getPatternPQuery <em>Pattern PQuery</em>}</li> 18 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getPatternPQuery <em>Pattern PQuery</em>}</li>
19 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getVariableTrace <em>Variable Trace</em>}</li>
20 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getOptimizedDisjunction <em>Optimized Disjunction</em>}</li>
18 * </ul> 21 * </ul>
19 * 22 *
20 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage#getTransfomedViatraQuery() 23 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage#getTransfomedViatraQuery()
@@ -74,4 +77,38 @@ public interface TransfomedViatraQuery extends RelationAnnotation {
74 * @generated 77 * @generated
75 */ 78 */
76 void setPatternPQuery(Object value); 79 void setPatternPQuery(Object value);
80
81 /**
82 * Returns the value of the '<em><b>Variable Trace</b></em>' containment reference list.
83 * The list contents are of type {@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping}.
84 * <!-- begin-user-doc -->
85 * <!-- end-user-doc -->
86 * @return the value of the '<em>Variable Trace</em>' containment reference list.
87 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage#getTransfomedViatraQuery_VariableTrace()
88 * @model containment="true"
89 * @generated
90 */
91 EList<VariableMapping> getVariableTrace();
92
93 /**
94 * Returns the value of the '<em><b>Optimized Disjunction</b></em>' attribute.
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @return the value of the '<em>Optimized Disjunction</em>' attribute.
98 * @see #setOptimizedDisjunction(Object)
99 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage#getTransfomedViatraQuery_OptimizedDisjunction()
100 * @model required="true" transient="true"
101 * @generated
102 */
103 Object getOptimizedDisjunction();
104
105 /**
106 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getOptimizedDisjunction <em>Optimized Disjunction</em>}' attribute.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @param value the new value of the '<em>Optimized Disjunction</em>' attribute.
110 * @see #getOptimizedDisjunction()
111 * @generated
112 */
113 void setOptimizedDisjunction(Object value);
77} // TransfomedViatraQuery 114} // TransfomedViatraQuery
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/VariableMapping.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/VariableMapping.java
new file mode 100644
index 00000000..f2b88394
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/VariableMapping.java
@@ -0,0 +1,71 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Variable Mapping</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.viatra2logic.viatra2logicannotations.VariableMapping#getSourcePVariable <em>Source PVariable</em>}</li>
19 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping#getTargetLogicVariable <em>Target Logic Variable</em>}</li>
20 * </ul>
21 *
22 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage#getVariableMapping()
23 * @model
24 * @generated
25 */
26public interface VariableMapping extends EObject {
27 /**
28 * Returns the value of the '<em><b>Source PVariable</b></em>' attribute.
29 * <!-- begin-user-doc -->
30 * <!-- end-user-doc -->
31 * @return the value of the '<em>Source PVariable</em>' attribute.
32 * @see #setSourcePVariable(Object)
33 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage#getVariableMapping_SourcePVariable()
34 * @model required="true" transient="true"
35 * @generated
36 */
37 Object getSourcePVariable();
38
39 /**
40 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping#getSourcePVariable <em>Source PVariable</em>}' attribute.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @param value the new value of the '<em>Source PVariable</em>' attribute.
44 * @see #getSourcePVariable()
45 * @generated
46 */
47 void setSourcePVariable(Object value);
48
49 /**
50 * Returns the value of the '<em><b>Target Logic Variable</b></em>' reference.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @return the value of the '<em>Target Logic Variable</em>' reference.
54 * @see #setTargetLogicVariable(Variable)
55 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage#getVariableMapping_TargetLogicVariable()
56 * @model required="true"
57 * @generated
58 */
59 Variable getTargetLogicVariable();
60
61 /**
62 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping#getTargetLogicVariable <em>Target Logic Variable</em>}' reference.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @param value the new value of the '<em>Target Logic Variable</em>' reference.
66 * @see #getTargetLogicVariable()
67 * @generated
68 */
69 void setTargetLogicVariable(Variable value);
70
71} // VariableMapping
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsFactory.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsFactory.java
index 1343bee3..f9ad485a 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsFactory.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsFactory.java
@@ -49,6 +49,15 @@ public interface Viatra2LogicAnnotationsFactory extends EFactory {
49 DefinedByDerivedFeature createDefinedByDerivedFeature(); 49 DefinedByDerivedFeature createDefinedByDerivedFeature();
50 50
51 /** 51 /**
52 * Returns a new object of class '<em>Variable Mapping</em>'.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @return a new object of class '<em>Variable Mapping</em>'.
56 * @generated
57 */
58 VariableMapping createVariableMapping();
59
60 /**
52 * Returns the package supported by this factory. 61 * Returns the package supported by this factory.
53 * <!-- begin-user-doc --> 62 * <!-- begin-user-doc -->
54 * <!-- end-user-doc --> 63 * <!-- end-user-doc -->
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsPackage.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsPackage.java
index 97df7608..a5dcda78 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsPackage.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsPackage.java
@@ -96,13 +96,31 @@ public interface Viatra2LogicAnnotationsPackage extends EPackage {
96 int TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY = LogicproblemPackage.RELATION_ANNOTATION_FEATURE_COUNT + 1; 96 int TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY = LogicproblemPackage.RELATION_ANNOTATION_FEATURE_COUNT + 1;
97 97
98 /** 98 /**
99 * The feature id for the '<em><b>Variable Trace</b></em>' containment reference list.
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 * @ordered
104 */
105 int TRANSFOMED_VIATRA_QUERY__VARIABLE_TRACE = LogicproblemPackage.RELATION_ANNOTATION_FEATURE_COUNT + 2;
106
107 /**
108 * The feature id for the '<em><b>Optimized Disjunction</b></em>' attribute.
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @generated
112 * @ordered
113 */
114 int TRANSFOMED_VIATRA_QUERY__OPTIMIZED_DISJUNCTION = LogicproblemPackage.RELATION_ANNOTATION_FEATURE_COUNT + 3;
115
116 /**
99 * The number of structural features of the '<em>Transfomed Viatra Query</em>' class. 117 * The number of structural features of the '<em>Transfomed Viatra Query</em>' class.
100 * <!-- begin-user-doc --> 118 * <!-- begin-user-doc -->
101 * <!-- end-user-doc --> 119 * <!-- end-user-doc -->
102 * @generated 120 * @generated
103 * @ordered 121 * @ordered
104 */ 122 */
105 int TRANSFOMED_VIATRA_QUERY_FEATURE_COUNT = LogicproblemPackage.RELATION_ANNOTATION_FEATURE_COUNT + 2; 123 int TRANSFOMED_VIATRA_QUERY_FEATURE_COUNT = LogicproblemPackage.RELATION_ANNOTATION_FEATURE_COUNT + 4;
106 124
107 /** 125 /**
108 * The number of operations of the '<em>Transfomed Viatra Query</em>' class. 126 * The number of operations of the '<em>Transfomed Viatra Query</em>' class.
@@ -208,6 +226,53 @@ public interface Viatra2LogicAnnotationsPackage extends EPackage {
208 226
209 227
210 /** 228 /**
229 * The meta object id for the '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.VariableMappingImpl <em>Variable Mapping</em>}' class.
230 * <!-- begin-user-doc -->
231 * <!-- end-user-doc -->
232 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.VariableMappingImpl
233 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.Viatra2LogicAnnotationsPackageImpl#getVariableMapping()
234 * @generated
235 */
236 int VARIABLE_MAPPING = 3;
237
238 /**
239 * The feature id for the '<em><b>Source PVariable</b></em>' attribute.
240 * <!-- begin-user-doc -->
241 * <!-- end-user-doc -->
242 * @generated
243 * @ordered
244 */
245 int VARIABLE_MAPPING__SOURCE_PVARIABLE = 0;
246
247 /**
248 * The feature id for the '<em><b>Target Logic Variable</b></em>' reference.
249 * <!-- begin-user-doc -->
250 * <!-- end-user-doc -->
251 * @generated
252 * @ordered
253 */
254 int VARIABLE_MAPPING__TARGET_LOGIC_VARIABLE = 1;
255
256 /**
257 * The number of structural features of the '<em>Variable Mapping</em>' class.
258 * <!-- begin-user-doc -->
259 * <!-- end-user-doc -->
260 * @generated
261 * @ordered
262 */
263 int VARIABLE_MAPPING_FEATURE_COUNT = 2;
264
265 /**
266 * The number of operations of the '<em>Variable Mapping</em>' class.
267 * <!-- begin-user-doc -->
268 * <!-- end-user-doc -->
269 * @generated
270 * @ordered
271 */
272 int VARIABLE_MAPPING_OPERATION_COUNT = 0;
273
274
275 /**
211 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery <em>Transfomed Viatra Query</em>}'. 276 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery <em>Transfomed Viatra Query</em>}'.
212 * <!-- begin-user-doc --> 277 * <!-- begin-user-doc -->
213 * <!-- end-user-doc --> 278 * <!-- end-user-doc -->
@@ -240,6 +305,28 @@ public interface Viatra2LogicAnnotationsPackage extends EPackage {
240 EAttribute getTransfomedViatraQuery_PatternPQuery(); 305 EAttribute getTransfomedViatraQuery_PatternPQuery();
241 306
242 /** 307 /**
308 * Returns the meta object for the containment reference list '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getVariableTrace <em>Variable Trace</em>}'.
309 * <!-- begin-user-doc -->
310 * <!-- end-user-doc -->
311 * @return the meta object for the containment reference list '<em>Variable Trace</em>'.
312 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getVariableTrace()
313 * @see #getTransfomedViatraQuery()
314 * @generated
315 */
316 EReference getTransfomedViatraQuery_VariableTrace();
317
318 /**
319 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getOptimizedDisjunction <em>Optimized Disjunction</em>}'.
320 * <!-- begin-user-doc -->
321 * <!-- end-user-doc -->
322 * @return the meta object for the attribute '<em>Optimized Disjunction</em>'.
323 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getOptimizedDisjunction()
324 * @see #getTransfomedViatraQuery()
325 * @generated
326 */
327 EAttribute getTransfomedViatraQuery_OptimizedDisjunction();
328
329 /**
243 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransformedViatraWellformednessConstraint <em>Transformed Viatra Wellformedness Constraint</em>}'. 330 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransformedViatraWellformednessConstraint <em>Transformed Viatra Wellformedness Constraint</em>}'.
244 * <!-- begin-user-doc --> 331 * <!-- begin-user-doc -->
245 * <!-- end-user-doc --> 332 * <!-- end-user-doc -->
@@ -282,6 +369,38 @@ public interface Viatra2LogicAnnotationsPackage extends EPackage {
282 EReference getDefinedByDerivedFeature_Query(); 369 EReference getDefinedByDerivedFeature_Query();
283 370
284 /** 371 /**
372 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping <em>Variable Mapping</em>}'.
373 * <!-- begin-user-doc -->
374 * <!-- end-user-doc -->
375 * @return the meta object for class '<em>Variable Mapping</em>'.
376 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping
377 * @generated
378 */
379 EClass getVariableMapping();
380
381 /**
382 * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping#getSourcePVariable <em>Source PVariable</em>}'.
383 * <!-- begin-user-doc -->
384 * <!-- end-user-doc -->
385 * @return the meta object for the attribute '<em>Source PVariable</em>'.
386 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping#getSourcePVariable()
387 * @see #getVariableMapping()
388 * @generated
389 */
390 EAttribute getVariableMapping_SourcePVariable();
391
392 /**
393 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping#getTargetLogicVariable <em>Target Logic Variable</em>}'.
394 * <!-- begin-user-doc -->
395 * <!-- end-user-doc -->
396 * @return the meta object for the reference '<em>Target Logic Variable</em>'.
397 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping#getTargetLogicVariable()
398 * @see #getVariableMapping()
399 * @generated
400 */
401 EReference getVariableMapping_TargetLogicVariable();
402
403 /**
285 * Returns the factory that creates the instances of the model. 404 * Returns the factory that creates the instances of the model.
286 * <!-- begin-user-doc --> 405 * <!-- begin-user-doc -->
287 * <!-- end-user-doc --> 406 * <!-- end-user-doc -->
@@ -331,6 +450,22 @@ public interface Viatra2LogicAnnotationsPackage extends EPackage {
331 EAttribute TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY = eINSTANCE.getTransfomedViatraQuery_PatternPQuery(); 450 EAttribute TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY = eINSTANCE.getTransfomedViatraQuery_PatternPQuery();
332 451
333 /** 452 /**
453 * The meta object literal for the '<em><b>Variable Trace</b></em>' containment reference list feature.
454 * <!-- begin-user-doc -->
455 * <!-- end-user-doc -->
456 * @generated
457 */
458 EReference TRANSFOMED_VIATRA_QUERY__VARIABLE_TRACE = eINSTANCE.getTransfomedViatraQuery_VariableTrace();
459
460 /**
461 * The meta object literal for the '<em><b>Optimized Disjunction</b></em>' attribute feature.
462 * <!-- begin-user-doc -->
463 * <!-- end-user-doc -->
464 * @generated
465 */
466 EAttribute TRANSFOMED_VIATRA_QUERY__OPTIMIZED_DISJUNCTION = eINSTANCE.getTransfomedViatraQuery_OptimizedDisjunction();
467
468 /**
334 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.TransformedViatraWellformednessConstraintImpl <em>Transformed Viatra Wellformedness Constraint</em>}' class. 469 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.TransformedViatraWellformednessConstraintImpl <em>Transformed Viatra Wellformedness Constraint</em>}' class.
335 * <!-- begin-user-doc --> 470 * <!-- begin-user-doc -->
336 * <!-- end-user-doc --> 471 * <!-- end-user-doc -->
@@ -366,6 +501,32 @@ public interface Viatra2LogicAnnotationsPackage extends EPackage {
366 */ 501 */
367 EReference DEFINED_BY_DERIVED_FEATURE__QUERY = eINSTANCE.getDefinedByDerivedFeature_Query(); 502 EReference DEFINED_BY_DERIVED_FEATURE__QUERY = eINSTANCE.getDefinedByDerivedFeature_Query();
368 503
504 /**
505 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.VariableMappingImpl <em>Variable Mapping</em>}' class.
506 * <!-- begin-user-doc -->
507 * <!-- end-user-doc -->
508 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.VariableMappingImpl
509 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.Viatra2LogicAnnotationsPackageImpl#getVariableMapping()
510 * @generated
511 */
512 EClass VARIABLE_MAPPING = eINSTANCE.getVariableMapping();
513
514 /**
515 * The meta object literal for the '<em><b>Source PVariable</b></em>' attribute feature.
516 * <!-- begin-user-doc -->
517 * <!-- end-user-doc -->
518 * @generated
519 */
520 EAttribute VARIABLE_MAPPING__SOURCE_PVARIABLE = eINSTANCE.getVariableMapping_SourcePVariable();
521
522 /**
523 * The meta object literal for the '<em><b>Target Logic Variable</b></em>' reference feature.
524 * <!-- begin-user-doc -->
525 * <!-- end-user-doc -->
526 * @generated
527 */
528 EReference VARIABLE_MAPPING__TARGET_LOGIC_VARIABLE = eINSTANCE.getVariableMapping_TargetLogicVariable();
529
369 } 530 }
370 531
371} //Viatra2LogicAnnotationsPackage 532} //Viatra2LogicAnnotationsPackage
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/DefinedByDerivedFeatureImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/DefinedByDerivedFeatureImpl.java
index c2098ed0..a489c673 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/DefinedByDerivedFeatureImpl.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/DefinedByDerivedFeatureImpl.java
@@ -63,6 +63,7 @@ public class DefinedByDerivedFeatureImpl extends RelationAnnotationImpl implemen
63 * <!-- end-user-doc --> 63 * <!-- end-user-doc -->
64 * @generated 64 * @generated
65 */ 65 */
66 @Override
66 public TransfomedViatraQuery getQuery() { 67 public TransfomedViatraQuery getQuery() {
67 if (query != null && query.eIsProxy()) { 68 if (query != null && query.eIsProxy()) {
68 InternalEObject oldQuery = (InternalEObject)query; 69 InternalEObject oldQuery = (InternalEObject)query;
@@ -89,6 +90,7 @@ public class DefinedByDerivedFeatureImpl extends RelationAnnotationImpl implemen
89 * <!-- end-user-doc --> 90 * <!-- end-user-doc -->
90 * @generated 91 * @generated
91 */ 92 */
93 @Override
92 public void setQuery(TransfomedViatraQuery newQuery) { 94 public void setQuery(TransfomedViatraQuery newQuery) {
93 TransfomedViatraQuery oldQuery = query; 95 TransfomedViatraQuery oldQuery = query;
94 query = newQuery; 96 query = newQuery;
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransfomedViatraQueryImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransfomedViatraQueryImpl.java
index d7f9ff68..d0233450 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransfomedViatraQueryImpl.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransfomedViatraQueryImpl.java
@@ -5,11 +5,18 @@ package hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl;
5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.impl.RelationAnnotationImpl; 5import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.impl.RelationAnnotationImpl;
6 6
7import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery; 7import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery;
8import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping;
8import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage; 9import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage;
9 10
11import java.util.Collection;
10import org.eclipse.emf.common.notify.Notification; 12import org.eclipse.emf.common.notify.Notification;
13import org.eclipse.emf.common.notify.NotificationChain;
14import org.eclipse.emf.common.util.EList;
11import org.eclipse.emf.ecore.EClass; 15import org.eclipse.emf.ecore.EClass;
16import org.eclipse.emf.ecore.InternalEObject;
12import org.eclipse.emf.ecore.impl.ENotificationImpl; 17import org.eclipse.emf.ecore.impl.ENotificationImpl;
18import org.eclipse.emf.ecore.util.EObjectContainmentEList;
19import org.eclipse.emf.ecore.util.InternalEList;
13 20
14/** 21/**
15 * <!-- begin-user-doc --> 22 * <!-- begin-user-doc -->
@@ -21,6 +28,8 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
21 * <ul> 28 * <ul>
22 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.TransfomedViatraQueryImpl#getPatternFullyQualifiedName <em>Pattern Fully Qualified Name</em>}</li> 29 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.TransfomedViatraQueryImpl#getPatternFullyQualifiedName <em>Pattern Fully Qualified Name</em>}</li>
23 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.TransfomedViatraQueryImpl#getPatternPQuery <em>Pattern PQuery</em>}</li> 30 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.TransfomedViatraQueryImpl#getPatternPQuery <em>Pattern PQuery</em>}</li>
31 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.TransfomedViatraQueryImpl#getVariableTrace <em>Variable Trace</em>}</li>
32 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.TransfomedViatraQueryImpl#getOptimizedDisjunction <em>Optimized Disjunction</em>}</li>
24 * </ul> 33 * </ul>
25 * 34 *
26 * @generated 35 * @generated
@@ -64,6 +73,33 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements
64 */ 73 */
65 protected Object patternPQuery = PATTERN_PQUERY_EDEFAULT; 74 protected Object patternPQuery = PATTERN_PQUERY_EDEFAULT;
66 /** 75 /**
76 * The cached value of the '{@link #getVariableTrace() <em>Variable Trace</em>}' containment reference list.
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @see #getVariableTrace()
80 * @generated
81 * @ordered
82 */
83 protected EList<VariableMapping> variableTrace;
84 /**
85 * The default value of the '{@link #getOptimizedDisjunction() <em>Optimized Disjunction</em>}' attribute.
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @see #getOptimizedDisjunction()
89 * @generated
90 * @ordered
91 */
92 protected static final Object OPTIMIZED_DISJUNCTION_EDEFAULT = null;
93 /**
94 * The cached value of the '{@link #getOptimizedDisjunction() <em>Optimized Disjunction</em>}' attribute.
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @see #getOptimizedDisjunction()
98 * @generated
99 * @ordered
100 */
101 protected Object optimizedDisjunction = OPTIMIZED_DISJUNCTION_EDEFAULT;
102 /**
67 * <!-- begin-user-doc --> 103 * <!-- begin-user-doc -->
68 * <!-- end-user-doc --> 104 * <!-- end-user-doc -->
69 * @generated 105 * @generated
@@ -87,6 +123,7 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements
87 * <!-- end-user-doc --> 123 * <!-- end-user-doc -->
88 * @generated 124 * @generated
89 */ 125 */
126 @Override
90 public String getPatternFullyQualifiedName() { 127 public String getPatternFullyQualifiedName() {
91 return patternFullyQualifiedName; 128 return patternFullyQualifiedName;
92 } 129 }
@@ -96,6 +133,7 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements
96 * <!-- end-user-doc --> 133 * <!-- end-user-doc -->
97 * @generated 134 * @generated
98 */ 135 */
136 @Override
99 public void setPatternFullyQualifiedName(String newPatternFullyQualifiedName) { 137 public void setPatternFullyQualifiedName(String newPatternFullyQualifiedName) {
100 String oldPatternFullyQualifiedName = patternFullyQualifiedName; 138 String oldPatternFullyQualifiedName = patternFullyQualifiedName;
101 patternFullyQualifiedName = newPatternFullyQualifiedName; 139 patternFullyQualifiedName = newPatternFullyQualifiedName;
@@ -108,6 +146,7 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements
108 * <!-- end-user-doc --> 146 * <!-- end-user-doc -->
109 * @generated 147 * @generated
110 */ 148 */
149 @Override
111 public Object getPatternPQuery() { 150 public Object getPatternPQuery() {
112 return patternPQuery; 151 return patternPQuery;
113 } 152 }
@@ -117,6 +156,7 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements
117 * <!-- end-user-doc --> 156 * <!-- end-user-doc -->
118 * @generated 157 * @generated
119 */ 158 */
159 @Override
120 public void setPatternPQuery(Object newPatternPQuery) { 160 public void setPatternPQuery(Object newPatternPQuery) {
121 Object oldPatternPQuery = patternPQuery; 161 Object oldPatternPQuery = patternPQuery;
122 patternPQuery = newPatternPQuery; 162 patternPQuery = newPatternPQuery;
@@ -130,12 +170,66 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements
130 * @generated 170 * @generated
131 */ 171 */
132 @Override 172 @Override
173 public EList<VariableMapping> getVariableTrace() {
174 if (variableTrace == null) {
175 variableTrace = new EObjectContainmentEList<VariableMapping>(VariableMapping.class, this, Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__VARIABLE_TRACE);
176 }
177 return variableTrace;
178 }
179
180 /**
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 */
185 @Override
186 public Object getOptimizedDisjunction() {
187 return optimizedDisjunction;
188 }
189
190 /**
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @generated
194 */
195 @Override
196 public void setOptimizedDisjunction(Object newOptimizedDisjunction) {
197 Object oldOptimizedDisjunction = optimizedDisjunction;
198 optimizedDisjunction = newOptimizedDisjunction;
199 if (eNotificationRequired())
200 eNotify(new ENotificationImpl(this, Notification.SET, Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__OPTIMIZED_DISJUNCTION, oldOptimizedDisjunction, optimizedDisjunction));
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 @Override
209 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
210 switch (featureID) {
211 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__VARIABLE_TRACE:
212 return ((InternalEList<?>)getVariableTrace()).basicRemove(otherEnd, msgs);
213 }
214 return super.eInverseRemove(otherEnd, featureID, msgs);
215 }
216
217 /**
218 * <!-- begin-user-doc -->
219 * <!-- end-user-doc -->
220 * @generated
221 */
222 @Override
133 public Object eGet(int featureID, boolean resolve, boolean coreType) { 223 public Object eGet(int featureID, boolean resolve, boolean coreType) {
134 switch (featureID) { 224 switch (featureID) {
135 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_FULLY_QUALIFIED_NAME: 225 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_FULLY_QUALIFIED_NAME:
136 return getPatternFullyQualifiedName(); 226 return getPatternFullyQualifiedName();
137 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY: 227 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY:
138 return getPatternPQuery(); 228 return getPatternPQuery();
229 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__VARIABLE_TRACE:
230 return getVariableTrace();
231 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__OPTIMIZED_DISJUNCTION:
232 return getOptimizedDisjunction();
139 } 233 }
140 return super.eGet(featureID, resolve, coreType); 234 return super.eGet(featureID, resolve, coreType);
141 } 235 }
@@ -145,6 +239,7 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements
145 * <!-- end-user-doc --> 239 * <!-- end-user-doc -->
146 * @generated 240 * @generated
147 */ 241 */
242 @SuppressWarnings("unchecked")
148 @Override 243 @Override
149 public void eSet(int featureID, Object newValue) { 244 public void eSet(int featureID, Object newValue) {
150 switch (featureID) { 245 switch (featureID) {
@@ -154,6 +249,13 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements
154 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY: 249 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY:
155 setPatternPQuery(newValue); 250 setPatternPQuery(newValue);
156 return; 251 return;
252 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__VARIABLE_TRACE:
253 getVariableTrace().clear();
254 getVariableTrace().addAll((Collection<? extends VariableMapping>)newValue);
255 return;
256 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__OPTIMIZED_DISJUNCTION:
257 setOptimizedDisjunction(newValue);
258 return;
157 } 259 }
158 super.eSet(featureID, newValue); 260 super.eSet(featureID, newValue);
159 } 261 }
@@ -172,6 +274,12 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements
172 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY: 274 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY:
173 setPatternPQuery(PATTERN_PQUERY_EDEFAULT); 275 setPatternPQuery(PATTERN_PQUERY_EDEFAULT);
174 return; 276 return;
277 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__VARIABLE_TRACE:
278 getVariableTrace().clear();
279 return;
280 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__OPTIMIZED_DISJUNCTION:
281 setOptimizedDisjunction(OPTIMIZED_DISJUNCTION_EDEFAULT);
282 return;
175 } 283 }
176 super.eUnset(featureID); 284 super.eUnset(featureID);
177 } 285 }
@@ -188,6 +296,10 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements
188 return PATTERN_FULLY_QUALIFIED_NAME_EDEFAULT == null ? patternFullyQualifiedName != null : !PATTERN_FULLY_QUALIFIED_NAME_EDEFAULT.equals(patternFullyQualifiedName); 296 return PATTERN_FULLY_QUALIFIED_NAME_EDEFAULT == null ? patternFullyQualifiedName != null : !PATTERN_FULLY_QUALIFIED_NAME_EDEFAULT.equals(patternFullyQualifiedName);
189 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY: 297 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY:
190 return PATTERN_PQUERY_EDEFAULT == null ? patternPQuery != null : !PATTERN_PQUERY_EDEFAULT.equals(patternPQuery); 298 return PATTERN_PQUERY_EDEFAULT == null ? patternPQuery != null : !PATTERN_PQUERY_EDEFAULT.equals(patternPQuery);
299 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__VARIABLE_TRACE:
300 return variableTrace != null && !variableTrace.isEmpty();
301 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__OPTIMIZED_DISJUNCTION:
302 return OPTIMIZED_DISJUNCTION_EDEFAULT == null ? optimizedDisjunction != null : !OPTIMIZED_DISJUNCTION_EDEFAULT.equals(optimizedDisjunction);
191 } 303 }
192 return super.eIsSet(featureID); 304 return super.eIsSet(featureID);
193 } 305 }
@@ -201,11 +313,13 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements
201 public String toString() { 313 public String toString() {
202 if (eIsProxy()) return super.toString(); 314 if (eIsProxy()) return super.toString();
203 315
204 StringBuffer result = new StringBuffer(super.toString()); 316 StringBuilder result = new StringBuilder(super.toString());
205 result.append(" (patternFullyQualifiedName: "); 317 result.append(" (patternFullyQualifiedName: ");
206 result.append(patternFullyQualifiedName); 318 result.append(patternFullyQualifiedName);
207 result.append(", patternPQuery: "); 319 result.append(", patternPQuery: ");
208 result.append(patternPQuery); 320 result.append(patternPQuery);
321 result.append(", optimizedDisjunction: ");
322 result.append(optimizedDisjunction);
209 result.append(')'); 323 result.append(')');
210 return result.toString(); 324 return result.toString();
211 } 325 }
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransformedViatraWellformednessConstraintImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransformedViatraWellformednessConstraintImpl.java
index be0c3078..3e41c3fd 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransformedViatraWellformednessConstraintImpl.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransformedViatraWellformednessConstraintImpl.java
@@ -63,6 +63,7 @@ public class TransformedViatraWellformednessConstraintImpl extends AssertionAnno
63 * <!-- end-user-doc --> 63 * <!-- end-user-doc -->
64 * @generated 64 * @generated
65 */ 65 */
66 @Override
66 public TransfomedViatraQuery getQuery() { 67 public TransfomedViatraQuery getQuery() {
67 if (query != null && query.eIsProxy()) { 68 if (query != null && query.eIsProxy()) {
68 InternalEObject oldQuery = (InternalEObject)query; 69 InternalEObject oldQuery = (InternalEObject)query;
@@ -89,6 +90,7 @@ public class TransformedViatraWellformednessConstraintImpl extends AssertionAnno
89 * <!-- end-user-doc --> 90 * <!-- end-user-doc -->
90 * @generated 91 * @generated
91 */ 92 */
93 @Override
92 public void setQuery(TransfomedViatraQuery newQuery) { 94 public void setQuery(TransfomedViatraQuery newQuery) {
93 TransfomedViatraQuery oldQuery = query; 95 TransfomedViatraQuery oldQuery = query;
94 query = newQuery; 96 query = newQuery;
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/VariableMappingImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/VariableMappingImpl.java
new file mode 100644
index 00000000..020c71c7
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/VariableMappingImpl.java
@@ -0,0 +1,230 @@
1/**
2 */
3package hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl;
4
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable;
6
7import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping;
8import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage;
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>Variable Mapping</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.viatra2logic.viatra2logicannotations.impl.VariableMappingImpl#getSourcePVariable <em>Source PVariable</em>}</li>
27 * <li>{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.VariableMappingImpl#getTargetLogicVariable <em>Target Logic Variable</em>}</li>
28 * </ul>
29 *
30 * @generated
31 */
32public class VariableMappingImpl extends MinimalEObjectImpl.Container implements VariableMapping {
33 /**
34 * The default value of the '{@link #getSourcePVariable() <em>Source PVariable</em>}' attribute.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @see #getSourcePVariable()
38 * @generated
39 * @ordered
40 */
41 protected static final Object SOURCE_PVARIABLE_EDEFAULT = null;
42
43 /**
44 * The cached value of the '{@link #getSourcePVariable() <em>Source PVariable</em>}' attribute.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @see #getSourcePVariable()
48 * @generated
49 * @ordered
50 */
51 protected Object sourcePVariable = SOURCE_PVARIABLE_EDEFAULT;
52
53 /**
54 * The cached value of the '{@link #getTargetLogicVariable() <em>Target Logic Variable</em>}' reference.
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @see #getTargetLogicVariable()
58 * @generated
59 * @ordered
60 */
61 protected Variable targetLogicVariable;
62
63 /**
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @generated
67 */
68 protected VariableMappingImpl() {
69 super();
70 }
71
72 /**
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @generated
76 */
77 @Override
78 protected EClass eStaticClass() {
79 return Viatra2LogicAnnotationsPackage.Literals.VARIABLE_MAPPING;
80 }
81
82 /**
83 * <!-- begin-user-doc -->
84 * <!-- end-user-doc -->
85 * @generated
86 */
87 @Override
88 public Object getSourcePVariable() {
89 return sourcePVariable;
90 }
91
92 /**
93 * <!-- begin-user-doc -->
94 * <!-- end-user-doc -->
95 * @generated
96 */
97 @Override
98 public void setSourcePVariable(Object newSourcePVariable) {
99 Object oldSourcePVariable = sourcePVariable;
100 sourcePVariable = newSourcePVariable;
101 if (eNotificationRequired())
102 eNotify(new ENotificationImpl(this, Notification.SET, Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING__SOURCE_PVARIABLE, oldSourcePVariable, sourcePVariable));
103 }
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 @Override
111 public Variable getTargetLogicVariable() {
112 if (targetLogicVariable != null && targetLogicVariable.eIsProxy()) {
113 InternalEObject oldTargetLogicVariable = (InternalEObject)targetLogicVariable;
114 targetLogicVariable = (Variable)eResolveProxy(oldTargetLogicVariable);
115 if (targetLogicVariable != oldTargetLogicVariable) {
116 if (eNotificationRequired())
117 eNotify(new ENotificationImpl(this, Notification.RESOLVE, Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING__TARGET_LOGIC_VARIABLE, oldTargetLogicVariable, targetLogicVariable));
118 }
119 }
120 return targetLogicVariable;
121 }
122
123 /**
124 * <!-- begin-user-doc -->
125 * <!-- end-user-doc -->
126 * @generated
127 */
128 public Variable basicGetTargetLogicVariable() {
129 return targetLogicVariable;
130 }
131
132 /**
133 * <!-- begin-user-doc -->
134 * <!-- end-user-doc -->
135 * @generated
136 */
137 @Override
138 public void setTargetLogicVariable(Variable newTargetLogicVariable) {
139 Variable oldTargetLogicVariable = targetLogicVariable;
140 targetLogicVariable = newTargetLogicVariable;
141 if (eNotificationRequired())
142 eNotify(new ENotificationImpl(this, Notification.SET, Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING__TARGET_LOGIC_VARIABLE, oldTargetLogicVariable, targetLogicVariable));
143 }
144
145 /**
146 * <!-- begin-user-doc -->
147 * <!-- end-user-doc -->
148 * @generated
149 */
150 @Override
151 public Object eGet(int featureID, boolean resolve, boolean coreType) {
152 switch (featureID) {
153 case Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING__SOURCE_PVARIABLE:
154 return getSourcePVariable();
155 case Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING__TARGET_LOGIC_VARIABLE:
156 if (resolve) return getTargetLogicVariable();
157 return basicGetTargetLogicVariable();
158 }
159 return super.eGet(featureID, resolve, coreType);
160 }
161
162 /**
163 * <!-- begin-user-doc -->
164 * <!-- end-user-doc -->
165 * @generated
166 */
167 @Override
168 public void eSet(int featureID, Object newValue) {
169 switch (featureID) {
170 case Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING__SOURCE_PVARIABLE:
171 setSourcePVariable(newValue);
172 return;
173 case Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING__TARGET_LOGIC_VARIABLE:
174 setTargetLogicVariable((Variable)newValue);
175 return;
176 }
177 super.eSet(featureID, newValue);
178 }
179
180 /**
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 */
185 @Override
186 public void eUnset(int featureID) {
187 switch (featureID) {
188 case Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING__SOURCE_PVARIABLE:
189 setSourcePVariable(SOURCE_PVARIABLE_EDEFAULT);
190 return;
191 case Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING__TARGET_LOGIC_VARIABLE:
192 setTargetLogicVariable((Variable)null);
193 return;
194 }
195 super.eUnset(featureID);
196 }
197
198 /**
199 * <!-- begin-user-doc -->
200 * <!-- end-user-doc -->
201 * @generated
202 */
203 @Override
204 public boolean eIsSet(int featureID) {
205 switch (featureID) {
206 case Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING__SOURCE_PVARIABLE:
207 return SOURCE_PVARIABLE_EDEFAULT == null ? sourcePVariable != null : !SOURCE_PVARIABLE_EDEFAULT.equals(sourcePVariable);
208 case Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING__TARGET_LOGIC_VARIABLE:
209 return targetLogicVariable != null;
210 }
211 return super.eIsSet(featureID);
212 }
213
214 /**
215 * <!-- begin-user-doc -->
216 * <!-- end-user-doc -->
217 * @generated
218 */
219 @Override
220 public String toString() {
221 if (eIsProxy()) return super.toString();
222
223 StringBuilder result = new StringBuilder(super.toString());
224 result.append(" (sourcePVariable: ");
225 result.append(sourcePVariable);
226 result.append(')');
227 return result.toString();
228 }
229
230} //VariableMappingImpl
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsFactoryImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsFactoryImpl.java
index fc8f23c7..33b726c2 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsFactoryImpl.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsFactoryImpl.java
@@ -59,6 +59,7 @@ public class Viatra2LogicAnnotationsFactoryImpl extends EFactoryImpl implements
59 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY: return createTransfomedViatraQuery(); 59 case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY: return createTransfomedViatraQuery();
60 case Viatra2LogicAnnotationsPackage.TRANSFORMED_VIATRA_WELLFORMEDNESS_CONSTRAINT: return createTransformedViatraWellformednessConstraint(); 60 case Viatra2LogicAnnotationsPackage.TRANSFORMED_VIATRA_WELLFORMEDNESS_CONSTRAINT: return createTransformedViatraWellformednessConstraint();
61 case Viatra2LogicAnnotationsPackage.DEFINED_BY_DERIVED_FEATURE: return createDefinedByDerivedFeature(); 61 case Viatra2LogicAnnotationsPackage.DEFINED_BY_DERIVED_FEATURE: return createDefinedByDerivedFeature();
62 case Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING: return createVariableMapping();
62 default: 63 default:
63 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); 64 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
64 } 65 }
@@ -69,6 +70,7 @@ public class Viatra2LogicAnnotationsFactoryImpl extends EFactoryImpl implements
69 * <!-- end-user-doc --> 70 * <!-- end-user-doc -->
70 * @generated 71 * @generated
71 */ 72 */
73 @Override
72 public TransfomedViatraQuery createTransfomedViatraQuery() { 74 public TransfomedViatraQuery createTransfomedViatraQuery() {
73 TransfomedViatraQueryImpl transfomedViatraQuery = new TransfomedViatraQueryImpl(); 75 TransfomedViatraQueryImpl transfomedViatraQuery = new TransfomedViatraQueryImpl();
74 return transfomedViatraQuery; 76 return transfomedViatraQuery;
@@ -79,6 +81,7 @@ public class Viatra2LogicAnnotationsFactoryImpl extends EFactoryImpl implements
79 * <!-- end-user-doc --> 81 * <!-- end-user-doc -->
80 * @generated 82 * @generated
81 */ 83 */
84 @Override
82 public TransformedViatraWellformednessConstraint createTransformedViatraWellformednessConstraint() { 85 public TransformedViatraWellformednessConstraint createTransformedViatraWellformednessConstraint() {
83 TransformedViatraWellformednessConstraintImpl transformedViatraWellformednessConstraint = new TransformedViatraWellformednessConstraintImpl(); 86 TransformedViatraWellformednessConstraintImpl transformedViatraWellformednessConstraint = new TransformedViatraWellformednessConstraintImpl();
84 return transformedViatraWellformednessConstraint; 87 return transformedViatraWellformednessConstraint;
@@ -89,6 +92,7 @@ public class Viatra2LogicAnnotationsFactoryImpl extends EFactoryImpl implements
89 * <!-- end-user-doc --> 92 * <!-- end-user-doc -->
90 * @generated 93 * @generated
91 */ 94 */
95 @Override
92 public DefinedByDerivedFeature createDefinedByDerivedFeature() { 96 public DefinedByDerivedFeature createDefinedByDerivedFeature() {
93 DefinedByDerivedFeatureImpl definedByDerivedFeature = new DefinedByDerivedFeatureImpl(); 97 DefinedByDerivedFeatureImpl definedByDerivedFeature = new DefinedByDerivedFeatureImpl();
94 return definedByDerivedFeature; 98 return definedByDerivedFeature;
@@ -99,6 +103,18 @@ public class Viatra2LogicAnnotationsFactoryImpl extends EFactoryImpl implements
99 * <!-- end-user-doc --> 103 * <!-- end-user-doc -->
100 * @generated 104 * @generated
101 */ 105 */
106 @Override
107 public VariableMapping createVariableMapping() {
108 VariableMappingImpl variableMapping = new VariableMappingImpl();
109 return variableMapping;
110 }
111
112 /**
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @generated
116 */
117 @Override
102 public Viatra2LogicAnnotationsPackage getViatra2LogicAnnotationsPackage() { 118 public Viatra2LogicAnnotationsPackage getViatra2LogicAnnotationsPackage() {
103 return (Viatra2LogicAnnotationsPackage)getEPackage(); 119 return (Viatra2LogicAnnotationsPackage)getEPackage();
104 } 120 }
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsPackageImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsPackageImpl.java
index 06965e87..ae96f617 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsPackageImpl.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsPackageImpl.java
@@ -9,6 +9,7 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage;
9import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.DefinedByDerivedFeature; 9import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.DefinedByDerivedFeature;
10import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery; 10import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery;
11import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransformedViatraWellformednessConstraint; 11import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransformedViatraWellformednessConstraint;
12import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping;
12import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsFactory; 13import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsFactory;
13import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage; 14import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage;
14 15
@@ -48,6 +49,13 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
48 private EClass definedByDerivedFeatureEClass = null; 49 private EClass definedByDerivedFeatureEClass = null;
49 50
50 /** 51 /**
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @generated
55 */
56 private EClass variableMappingEClass = null;
57
58 /**
51 * Creates an instance of the model <b>Package</b>, registered with 59 * Creates an instance of the model <b>Package</b>, registered with
52 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package 60 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
53 * package URI value. 61 * package URI value.
@@ -75,7 +83,7 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
75 83
76 /** 84 /**
77 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends. 85 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
78 * 86 *
79 * <p>This method is used to initialize {@link Viatra2LogicAnnotationsPackage#eINSTANCE} when that field is accessed. 87 * <p>This method is used to initialize {@link Viatra2LogicAnnotationsPackage#eINSTANCE} when that field is accessed.
80 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. 88 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
81 * <!-- begin-user-doc --> 89 * <!-- begin-user-doc -->
@@ -89,7 +97,8 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
89 if (isInited) return (Viatra2LogicAnnotationsPackage)EPackage.Registry.INSTANCE.getEPackage(Viatra2LogicAnnotationsPackage.eNS_URI); 97 if (isInited) return (Viatra2LogicAnnotationsPackage)EPackage.Registry.INSTANCE.getEPackage(Viatra2LogicAnnotationsPackage.eNS_URI);
90 98
91 // Obtain or create and register package 99 // Obtain or create and register package
92 Viatra2LogicAnnotationsPackageImpl theViatra2LogicAnnotationsPackage = (Viatra2LogicAnnotationsPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof Viatra2LogicAnnotationsPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new Viatra2LogicAnnotationsPackageImpl()); 100 Object registeredViatra2LogicAnnotationsPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
101 Viatra2LogicAnnotationsPackageImpl theViatra2LogicAnnotationsPackage = registeredViatra2LogicAnnotationsPackage instanceof Viatra2LogicAnnotationsPackageImpl ? (Viatra2LogicAnnotationsPackageImpl)registeredViatra2LogicAnnotationsPackage : new Viatra2LogicAnnotationsPackageImpl();
93 102
94 isInited = true; 103 isInited = true;
95 104
@@ -106,7 +115,6 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
106 // Mark meta-data to indicate it can't be changed 115 // Mark meta-data to indicate it can't be changed
107 theViatra2LogicAnnotationsPackage.freeze(); 116 theViatra2LogicAnnotationsPackage.freeze();
108 117
109
110 // Update the registry and return the package 118 // Update the registry and return the package
111 EPackage.Registry.INSTANCE.put(Viatra2LogicAnnotationsPackage.eNS_URI, theViatra2LogicAnnotationsPackage); 119 EPackage.Registry.INSTANCE.put(Viatra2LogicAnnotationsPackage.eNS_URI, theViatra2LogicAnnotationsPackage);
112 return theViatra2LogicAnnotationsPackage; 120 return theViatra2LogicAnnotationsPackage;
@@ -117,6 +125,7 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
117 * <!-- end-user-doc --> 125 * <!-- end-user-doc -->
118 * @generated 126 * @generated
119 */ 127 */
128 @Override
120 public EClass getTransfomedViatraQuery() { 129 public EClass getTransfomedViatraQuery() {
121 return transfomedViatraQueryEClass; 130 return transfomedViatraQueryEClass;
122 } 131 }
@@ -126,6 +135,7 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
126 * <!-- end-user-doc --> 135 * <!-- end-user-doc -->
127 * @generated 136 * @generated
128 */ 137 */
138 @Override
129 public EAttribute getTransfomedViatraQuery_PatternFullyQualifiedName() { 139 public EAttribute getTransfomedViatraQuery_PatternFullyQualifiedName() {
130 return (EAttribute)transfomedViatraQueryEClass.getEStructuralFeatures().get(0); 140 return (EAttribute)transfomedViatraQueryEClass.getEStructuralFeatures().get(0);
131 } 141 }
@@ -135,6 +145,7 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
135 * <!-- end-user-doc --> 145 * <!-- end-user-doc -->
136 * @generated 146 * @generated
137 */ 147 */
148 @Override
138 public EAttribute getTransfomedViatraQuery_PatternPQuery() { 149 public EAttribute getTransfomedViatraQuery_PatternPQuery() {
139 return (EAttribute)transfomedViatraQueryEClass.getEStructuralFeatures().get(1); 150 return (EAttribute)transfomedViatraQueryEClass.getEStructuralFeatures().get(1);
140 } 151 }
@@ -144,6 +155,27 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
144 * <!-- end-user-doc --> 155 * <!-- end-user-doc -->
145 * @generated 156 * @generated
146 */ 157 */
158 @Override
159 public EReference getTransfomedViatraQuery_VariableTrace() {
160 return (EReference)transfomedViatraQueryEClass.getEStructuralFeatures().get(2);
161 }
162
163 /**
164 * <!-- begin-user-doc -->
165 * <!-- end-user-doc -->
166 * @generated
167 */
168 @Override
169 public EAttribute getTransfomedViatraQuery_OptimizedDisjunction() {
170 return (EAttribute)transfomedViatraQueryEClass.getEStructuralFeatures().get(3);
171 }
172
173 /**
174 * <!-- begin-user-doc -->
175 * <!-- end-user-doc -->
176 * @generated
177 */
178 @Override
147 public EClass getTransformedViatraWellformednessConstraint() { 179 public EClass getTransformedViatraWellformednessConstraint() {
148 return transformedViatraWellformednessConstraintEClass; 180 return transformedViatraWellformednessConstraintEClass;
149 } 181 }
@@ -153,6 +185,7 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
153 * <!-- end-user-doc --> 185 * <!-- end-user-doc -->
154 * @generated 186 * @generated
155 */ 187 */
188 @Override
156 public EReference getTransformedViatraWellformednessConstraint_Query() { 189 public EReference getTransformedViatraWellformednessConstraint_Query() {
157 return (EReference)transformedViatraWellformednessConstraintEClass.getEStructuralFeatures().get(0); 190 return (EReference)transformedViatraWellformednessConstraintEClass.getEStructuralFeatures().get(0);
158 } 191 }
@@ -162,6 +195,7 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
162 * <!-- end-user-doc --> 195 * <!-- end-user-doc -->
163 * @generated 196 * @generated
164 */ 197 */
198 @Override
165 public EClass getDefinedByDerivedFeature() { 199 public EClass getDefinedByDerivedFeature() {
166 return definedByDerivedFeatureEClass; 200 return definedByDerivedFeatureEClass;
167 } 201 }
@@ -171,6 +205,7 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
171 * <!-- end-user-doc --> 205 * <!-- end-user-doc -->
172 * @generated 206 * @generated
173 */ 207 */
208 @Override
174 public EReference getDefinedByDerivedFeature_Query() { 209 public EReference getDefinedByDerivedFeature_Query() {
175 return (EReference)definedByDerivedFeatureEClass.getEStructuralFeatures().get(0); 210 return (EReference)definedByDerivedFeatureEClass.getEStructuralFeatures().get(0);
176 } 211 }
@@ -180,6 +215,37 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
180 * <!-- end-user-doc --> 215 * <!-- end-user-doc -->
181 * @generated 216 * @generated
182 */ 217 */
218 @Override
219 public EClass getVariableMapping() {
220 return variableMappingEClass;
221 }
222
223 /**
224 * <!-- begin-user-doc -->
225 * <!-- end-user-doc -->
226 * @generated
227 */
228 @Override
229 public EAttribute getVariableMapping_SourcePVariable() {
230 return (EAttribute)variableMappingEClass.getEStructuralFeatures().get(0);
231 }
232
233 /**
234 * <!-- begin-user-doc -->
235 * <!-- end-user-doc -->
236 * @generated
237 */
238 @Override
239 public EReference getVariableMapping_TargetLogicVariable() {
240 return (EReference)variableMappingEClass.getEStructuralFeatures().get(1);
241 }
242
243 /**
244 * <!-- begin-user-doc -->
245 * <!-- end-user-doc -->
246 * @generated
247 */
248 @Override
183 public Viatra2LogicAnnotationsFactory getViatra2LogicAnnotationsFactory() { 249 public Viatra2LogicAnnotationsFactory getViatra2LogicAnnotationsFactory() {
184 return (Viatra2LogicAnnotationsFactory)getEFactoryInstance(); 250 return (Viatra2LogicAnnotationsFactory)getEFactoryInstance();
185 } 251 }
@@ -206,12 +272,18 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
206 transfomedViatraQueryEClass = createEClass(TRANSFOMED_VIATRA_QUERY); 272 transfomedViatraQueryEClass = createEClass(TRANSFOMED_VIATRA_QUERY);
207 createEAttribute(transfomedViatraQueryEClass, TRANSFOMED_VIATRA_QUERY__PATTERN_FULLY_QUALIFIED_NAME); 273 createEAttribute(transfomedViatraQueryEClass, TRANSFOMED_VIATRA_QUERY__PATTERN_FULLY_QUALIFIED_NAME);
208 createEAttribute(transfomedViatraQueryEClass, TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY); 274 createEAttribute(transfomedViatraQueryEClass, TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY);
275 createEReference(transfomedViatraQueryEClass, TRANSFOMED_VIATRA_QUERY__VARIABLE_TRACE);
276 createEAttribute(transfomedViatraQueryEClass, TRANSFOMED_VIATRA_QUERY__OPTIMIZED_DISJUNCTION);
209 277
210 transformedViatraWellformednessConstraintEClass = createEClass(TRANSFORMED_VIATRA_WELLFORMEDNESS_CONSTRAINT); 278 transformedViatraWellformednessConstraintEClass = createEClass(TRANSFORMED_VIATRA_WELLFORMEDNESS_CONSTRAINT);
211 createEReference(transformedViatraWellformednessConstraintEClass, TRANSFORMED_VIATRA_WELLFORMEDNESS_CONSTRAINT__QUERY); 279 createEReference(transformedViatraWellformednessConstraintEClass, TRANSFORMED_VIATRA_WELLFORMEDNESS_CONSTRAINT__QUERY);
212 280
213 definedByDerivedFeatureEClass = createEClass(DEFINED_BY_DERIVED_FEATURE); 281 definedByDerivedFeatureEClass = createEClass(DEFINED_BY_DERIVED_FEATURE);
214 createEReference(definedByDerivedFeatureEClass, DEFINED_BY_DERIVED_FEATURE__QUERY); 282 createEReference(definedByDerivedFeatureEClass, DEFINED_BY_DERIVED_FEATURE__QUERY);
283
284 variableMappingEClass = createEClass(VARIABLE_MAPPING);
285 createEAttribute(variableMappingEClass, VARIABLE_MAPPING__SOURCE_PVARIABLE);
286 createEReference(variableMappingEClass, VARIABLE_MAPPING__TARGET_LOGIC_VARIABLE);
215 } 287 }
216 288
217 /** 289 /**
@@ -239,6 +311,7 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
239 311
240 // Obtain other dependent packages 312 // Obtain other dependent packages
241 LogicproblemPackage theLogicproblemPackage = (LogicproblemPackage)EPackage.Registry.INSTANCE.getEPackage(LogicproblemPackage.eNS_URI); 313 LogicproblemPackage theLogicproblemPackage = (LogicproblemPackage)EPackage.Registry.INSTANCE.getEPackage(LogicproblemPackage.eNS_URI);
314 LogiclanguagePackage theLogiclanguagePackage = (LogiclanguagePackage)EPackage.Registry.INSTANCE.getEPackage(LogiclanguagePackage.eNS_URI);
242 315
243 // Create type parameters 316 // Create type parameters
244 317
@@ -253,6 +326,8 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
253 initEClass(transfomedViatraQueryEClass, TransfomedViatraQuery.class, "TransfomedViatraQuery", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); 326 initEClass(transfomedViatraQueryEClass, TransfomedViatraQuery.class, "TransfomedViatraQuery", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
254 initEAttribute(getTransfomedViatraQuery_PatternFullyQualifiedName(), ecorePackage.getEString(), "patternFullyQualifiedName", null, 1, 1, TransfomedViatraQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 327 initEAttribute(getTransfomedViatraQuery_PatternFullyQualifiedName(), ecorePackage.getEString(), "patternFullyQualifiedName", null, 1, 1, TransfomedViatraQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
255 initEAttribute(getTransfomedViatraQuery_PatternPQuery(), ecorePackage.getEJavaObject(), "patternPQuery", null, 1, 1, TransfomedViatraQuery.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 328 initEAttribute(getTransfomedViatraQuery_PatternPQuery(), ecorePackage.getEJavaObject(), "patternPQuery", null, 1, 1, TransfomedViatraQuery.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
329 initEReference(getTransfomedViatraQuery_VariableTrace(), this.getVariableMapping(), null, "variableTrace", null, 0, -1, TransfomedViatraQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
330 initEAttribute(getTransfomedViatraQuery_OptimizedDisjunction(), ecorePackage.getEJavaObject(), "optimizedDisjunction", null, 1, 1, TransfomedViatraQuery.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
256 331
257 initEClass(transformedViatraWellformednessConstraintEClass, TransformedViatraWellformednessConstraint.class, "TransformedViatraWellformednessConstraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); 332 initEClass(transformedViatraWellformednessConstraintEClass, TransformedViatraWellformednessConstraint.class, "TransformedViatraWellformednessConstraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
258 initEReference(getTransformedViatraWellformednessConstraint_Query(), this.getTransfomedViatraQuery(), null, "query", null, 1, 1, TransformedViatraWellformednessConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 333 initEReference(getTransformedViatraWellformednessConstraint_Query(), this.getTransfomedViatraQuery(), null, "query", null, 1, 1, TransformedViatraWellformednessConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -260,6 +335,10 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements
260 initEClass(definedByDerivedFeatureEClass, DefinedByDerivedFeature.class, "DefinedByDerivedFeature", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); 335 initEClass(definedByDerivedFeatureEClass, DefinedByDerivedFeature.class, "DefinedByDerivedFeature", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
261 initEReference(getDefinedByDerivedFeature_Query(), this.getTransfomedViatraQuery(), null, "query", null, 1, 1, DefinedByDerivedFeature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 336 initEReference(getDefinedByDerivedFeature_Query(), this.getTransfomedViatraQuery(), null, "query", null, 1, 1, DefinedByDerivedFeature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
262 337
338 initEClass(variableMappingEClass, VariableMapping.class, "VariableMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
339 initEAttribute(getVariableMapping_SourcePVariable(), ecorePackage.getEJavaObject(), "sourcePVariable", null, 1, 1, VariableMapping.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
340 initEReference(getVariableMapping_TargetLogicVariable(), theLogiclanguagePackage.getVariable(), null, "targetLogicVariable", null, 1, 1, VariableMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
341
263 // Create resource 342 // Create resource
264 createResource(eNS_URI); 343 createResource(eNS_URI);
265 } 344 }
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/util/Viatra2LogicAnnotationsAdapterFactory.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/util/Viatra2LogicAnnotationsAdapterFactory.java
index 91bbdc9f..f66f480f 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/util/Viatra2LogicAnnotationsAdapterFactory.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/util/Viatra2LogicAnnotationsAdapterFactory.java
@@ -84,6 +84,10 @@ public class Viatra2LogicAnnotationsAdapterFactory extends AdapterFactoryImpl {
84 return createDefinedByDerivedFeatureAdapter(); 84 return createDefinedByDerivedFeatureAdapter();
85 } 85 }
86 @Override 86 @Override
87 public Adapter caseVariableMapping(VariableMapping object) {
88 return createVariableMappingAdapter();
89 }
90 @Override
87 public Adapter caseAnnotation(Annotation object) { 91 public Adapter caseAnnotation(Annotation object) {
88 return createAnnotationAdapter(); 92 return createAnnotationAdapter();
89 } 93 }
@@ -158,6 +162,20 @@ public class Viatra2LogicAnnotationsAdapterFactory extends AdapterFactoryImpl {
158 } 162 }
159 163
160 /** 164 /**
165 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping <em>Variable Mapping</em>}'.
166 * <!-- begin-user-doc -->
167 * This default implementation returns null so that we can easily ignore cases;
168 * it's useful to ignore a case when inheritance will catch all the cases anyway.
169 * <!-- end-user-doc -->
170 * @return the new adapter.
171 * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.VariableMapping
172 * @generated
173 */
174 public Adapter createVariableMappingAdapter() {
175 return null;
176 }
177
178 /**
161 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.Annotation <em>Annotation</em>}'. 179 * Creates a new adapter for an object of class '{@link hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.Annotation <em>Annotation</em>}'.
162 * <!-- begin-user-doc --> 180 * <!-- begin-user-doc -->
163 * This default implementation returns null so that we can easily ignore cases; 181 * This default implementation returns null so that we can easily ignore cases;
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/util/Viatra2LogicAnnotationsSwitch.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/util/Viatra2LogicAnnotationsSwitch.java
index 09288a62..72b2fc4c 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/util/Viatra2LogicAnnotationsSwitch.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/util/Viatra2LogicAnnotationsSwitch.java
@@ -94,6 +94,12 @@ public class Viatra2LogicAnnotationsSwitch<T> extends Switch<T> {
94 if (result == null) result = defaultCase(theEObject); 94 if (result == null) result = defaultCase(theEObject);
95 return result; 95 return result;
96 } 96 }
97 case Viatra2LogicAnnotationsPackage.VARIABLE_MAPPING: {
98 VariableMapping variableMapping = (VariableMapping)theEObject;
99 T result = caseVariableMapping(variableMapping);
100 if (result == null) result = defaultCase(theEObject);
101 return result;
102 }
97 default: return defaultCase(theEObject); 103 default: return defaultCase(theEObject);
98 } 104 }
99 } 105 }
@@ -144,6 +150,21 @@ public class Viatra2LogicAnnotationsSwitch<T> extends Switch<T> {
144 } 150 }
145 151
146 /** 152 /**
153 * Returns the result of interpreting the object as an instance of '<em>Variable Mapping</em>'.
154 * <!-- begin-user-doc -->
155 * This implementation returns null;
156 * returning a non-null result will terminate the switch.
157 * <!-- end-user-doc -->
158 * @param object the target of the switch.
159 * @return the result of interpreting the object as an instance of '<em>Variable Mapping</em>'.
160 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
161 * @generated
162 */
163 public T caseVariableMapping(VariableMapping object) {
164 return null;
165 }
166
167 /**
147 * Returns the result of interpreting the object as an instance of '<em>Annotation</em>'. 168 * Returns the result of interpreting the object as an instance of '<em>Annotation</em>'.
148 * <!-- begin-user-doc --> 169 * <!-- begin-user-doc -->
149 * This implementation returns null; 170 * This implementation returns null;
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/lib/.gitignore b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/lib/.gitignore
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/lib/.gitignore
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.aird b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.aird
index 1af6ebf0..b6bc57b7 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.aird
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.aird
@@ -1,30 +1,30 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style"> 2<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
3 <viewpoint:DAnalysis xmi:id="_hKMI0LzSEeaj7tVusjQpHg" selectedViews="_hMdZsLzSEeaj7tVusjQpHg _hMvGgLzSEeaj7tVusjQpHg _hM760LzSEeaj7tVusjQpHg _hNNAkLzSEeaj7tVusjQpHg" version="11.1.0.201608251200"> 3 <viewpoint:DAnalysis uid="_hKMI0LzSEeaj7tVusjQpHg" selectedViews="_hMdZsLzSEeaj7tVusjQpHg _hMvGgLzSEeaj7tVusjQpHg _hM760LzSEeaj7tVusjQpHg _hNNAkLzSEeaj7tVusjQpHg" version="14.1.0.201810161215">
4 <semanticResources>ViatraModelAnnotations.ecore</semanticResources> 4 <semanticResources>ViatraModelAnnotations.ecore</semanticResources>
5 <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/logicproblem.ecore</semanticResources>
6 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore</semanticResources> 6 <semanticResources>platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore</semanticResources>
7 <semanticResources>http://www.eclipse.org/emf/2002/Ecore</semanticResources> 7 <semanticResources>http://www.eclipse.org/emf/2002/Ecore</semanticResources>
8 <ownedViews xmi:type="viewpoint:DView" xmi:id="_hMdZsLzSEeaj7tVusjQpHg"> 8 <ownedViews xmi:type="viewpoint:DView" uid="_hMdZsLzSEeaj7tVusjQpHg">
9 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/> 9 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
10 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" xmi:id="_HjHhMBfyEeiKzNmzswRwjA" name="viatra2logicannotations class diagram" representation="_h6EtoLzSEeaj7tVusjQpHg"> 10 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_HjHhMBfyEeiKzNmzswRwjA" name="viatra2logicannotations class diagram" repPath="#_h6EtoLzSEeaj7tVusjQpHg">
11 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 11 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
12 <target xmi:type="ecore:EPackage" href="ViatraModelAnnotations.ecore#/"/> 12 <target xmi:type="ecore:EPackage" href="ViatraModelAnnotations.ecore#/"/>
13 </ownedRepresentationDescriptors> 13 </ownedRepresentationDescriptors>
14 </ownedViews> 14 </ownedViews>
15 <ownedViews xmi:type="viewpoint:DView" xmi:id="_hMvGgLzSEeaj7tVusjQpHg"> 15 <ownedViews xmi:type="viewpoint:DView" uid="_hMvGgLzSEeaj7tVusjQpHg">
16 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/> 16 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/>
17 </ownedViews> 17 </ownedViews>
18 <ownedViews xmi:type="viewpoint:DView" xmi:id="_hM760LzSEeaj7tVusjQpHg"> 18 <ownedViews xmi:type="viewpoint:DView" uid="_hM760LzSEeaj7tVusjQpHg">
19 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/> 19 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/>
20 </ownedViews> 20 </ownedViews>
21 <ownedViews xmi:type="viewpoint:DView" xmi:id="_hNNAkLzSEeaj7tVusjQpHg"> 21 <ownedViews xmi:type="viewpoint:DView" uid="_hNNAkLzSEeaj7tVusjQpHg">
22 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/> 22 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/>
23 </ownedViews> 23 </ownedViews>
24 </viewpoint:DAnalysis> 24 </viewpoint:DAnalysis>
25 <diagram:DSemanticDiagram xmi:id="_h6EtoLzSEeaj7tVusjQpHg" name="viatra2logicannotations class diagram"> 25 <diagram:DSemanticDiagram uid="_h6EtoLzSEeaj7tVusjQpHg" name="viatra2logicannotations class diagram">
26 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_h6EtobzSEeaj7tVusjQpHg" source="DANNOTATION_CUSTOMIZATION_KEY"> 26 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_h6EtobzSEeaj7tVusjQpHg" source="DANNOTATION_CUSTOMIZATION_KEY">
27 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_h6EtorzSEeaj7tVusjQpHg"> 27 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_h6EtorzSEeaj7tVusjQpHg">
28 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_JijTsLzTEeaj7tVusjQpHg" routingStyle="manhattan"> 28 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_JijTsLzTEeaj7tVusjQpHg" routingStyle="manhattan">
29 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> 29 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
30 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_JijTsbzTEeaj7tVusjQpHg" showIcon="false" labelExpression="service:render"> 30 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_JijTsbzTEeaj7tVusjQpHg" showIcon="false" labelExpression="service:render">
@@ -47,9 +47,18 @@
47 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> 47 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
48 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/> 48 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
49 </computedStyleDescriptions> 49 </computedStyleDescriptions>
50 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_k8aWcH8uEeq2t8kgC8VWrg" sourceArrow="FillDiamond" routingStyle="manhattan">
51 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
52 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_k8aWcX8uEeq2t8kgC8VWrg" showIcon="false" labelExpression="service:render">
53 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
54 </centerLabelStyleDescription>
55 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_k8aWcn8uEeq2t8kgC8VWrg" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
56 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
57 </endLabelStyleDescription>
58 </computedStyleDescriptions>
50 </data> 59 </data>
51 </ownedAnnotationEntries> 60 </ownedAnnotationEntries>
52 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_h6IYALzSEeaj7tVusjQpHg" source="GMF_DIAGRAMS"> 61 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_h6IYALzSEeaj7tVusjQpHg" source="GMF_DIAGRAMS">
53 <data xmi:type="notation:Diagram" xmi:id="_h6IYAbzSEeaj7tVusjQpHg" type="Sirius" element="_h6EtoLzSEeaj7tVusjQpHg" measurementUnit="Pixel"> 62 <data xmi:type="notation:Diagram" xmi:id="_h6IYAbzSEeaj7tVusjQpHg" type="Sirius" element="_h6EtoLzSEeaj7tVusjQpHg" measurementUnit="Pixel">
54 <children xmi:type="notation:Node" xmi:id="_8vuhcLzSEeaj7tVusjQpHg" type="2003" element="_8vqQALzSEeaj7tVusjQpHg"> 63 <children xmi:type="notation:Node" xmi:id="_8vuhcLzSEeaj7tVusjQpHg" type="2003" element="_8vqQALzSEeaj7tVusjQpHg">
55 <children xmi:type="notation:Node" xmi:id="_8vuhc7zSEeaj7tVusjQpHg" type="5007"/> 64 <children xmi:type="notation:Node" xmi:id="_8vuhc7zSEeaj7tVusjQpHg" type="5007"/>
@@ -62,11 +71,15 @@
62 <styles xmi:type="notation:FontStyle" xmi:id="_NFBDgRfyEeiKzNmzswRwjA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/> 71 <styles xmi:type="notation:FontStyle" xmi:id="_NFBDgRfyEeiKzNmzswRwjA" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
63 <layoutConstraint xmi:type="notation:Location" xmi:id="_NFBDghfyEeiKzNmzswRwjA"/> 72 <layoutConstraint xmi:type="notation:Location" xmi:id="_NFBDghfyEeiKzNmzswRwjA"/>
64 </children> 73 </children>
74 <children xmi:type="notation:Node" xmi:id="_QQ2LII_pEeqlOMjO9MPV6g" type="3010" element="_QQIZcI_pEeqlOMjO9MPV6g">
75 <styles xmi:type="notation:FontStyle" xmi:id="_QQ2LIY_pEeqlOMjO9MPV6g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
76 <layoutConstraint xmi:type="notation:Location" xmi:id="_QQ2LIo_pEeqlOMjO9MPV6g"/>
77 </children>
65 <styles xmi:type="notation:SortingStyle" xmi:id="_8vuhdbzSEeaj7tVusjQpHg"/> 78 <styles xmi:type="notation:SortingStyle" xmi:id="_8vuhdbzSEeaj7tVusjQpHg"/>
66 <styles xmi:type="notation:FilteringStyle" xmi:id="_8vuhdrzSEeaj7tVusjQpHg"/> 79 <styles xmi:type="notation:FilteringStyle" xmi:id="_8vuhdrzSEeaj7tVusjQpHg"/>
67 </children> 80 </children>
68 <styles xmi:type="notation:ShapeStyle" xmi:id="_8vuhcbzSEeaj7tVusjQpHg" fontName="Segoe UI" fontHeight="8"/> 81 <styles xmi:type="notation:ShapeStyle" xmi:id="_8vuhcbzSEeaj7tVusjQpHg" fontName="Segoe UI" fontHeight="8"/>
69 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8vuhcrzSEeaj7tVusjQpHg" x="5" y="390" width="228" height="68"/> 82 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8vuhcrzSEeaj7tVusjQpHg" x="5" y="390" width="228" height="81"/>
70 </children> 83 </children>
71 <children xmi:type="notation:Node" xmi:id="_Ci29sLzTEeaj7tVusjQpHg" type="2003" element="_Ciz6YLzTEeaj7tVusjQpHg"> 84 <children xmi:type="notation:Node" xmi:id="_Ci29sLzTEeaj7tVusjQpHg" type="2003" element="_Ciz6YLzTEeaj7tVusjQpHg">
72 <children xmi:type="notation:Node" xmi:id="_Ci29s7zTEeaj7tVusjQpHg" type="5007"/> 85 <children xmi:type="notation:Node" xmi:id="_Ci29s7zTEeaj7tVusjQpHg" type="5007"/>
@@ -121,6 +134,32 @@
121 <styles xmi:type="notation:ShapeStyle" xmi:id="_7hZUIfObEeauOJk-5mBnBg" fontName="Segoe UI" fontHeight="8"/> 134 <styles xmi:type="notation:ShapeStyle" xmi:id="_7hZUIfObEeauOJk-5mBnBg" fontName="Segoe UI" fontHeight="8"/>
122 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7hZUIvObEeauOJk-5mBnBg" x="245" y="390" width="263" height="53"/> 135 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7hZUIvObEeauOJk-5mBnBg" x="245" y="390" width="263" height="53"/>
123 </children> 136 </children>
137 <children xmi:type="notation:Node" xmi:id="_hAwZMH8uEeq2t8kgC8VWrg" type="2003" element="_hAAyUH8uEeq2t8kgC8VWrg">
138 <children xmi:type="notation:Node" xmi:id="_hA7YUH8uEeq2t8kgC8VWrg" type="5007"/>
139 <children xmi:type="notation:Node" xmi:id="_hA7_YH8uEeq2t8kgC8VWrg" type="7004">
140 <children xmi:type="notation:Node" xmi:id="_qqHgIH8uEeq2t8kgC8VWrg" type="3010" element="_qpvFoH8uEeq2t8kgC8VWrg">
141 <styles xmi:type="notation:FontStyle" xmi:id="_qqHgIX8uEeq2t8kgC8VWrg" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
142 <layoutConstraint xmi:type="notation:Location" xmi:id="_qqHgIn8uEeq2t8kgC8VWrg"/>
143 </children>
144 <styles xmi:type="notation:SortingStyle" xmi:id="_hA7_YX8uEeq2t8kgC8VWrg"/>
145 <styles xmi:type="notation:FilteringStyle" xmi:id="_hA7_Yn8uEeq2t8kgC8VWrg"/>
146 </children>
147 <styles xmi:type="notation:ShapeStyle" xmi:id="_hAwZMX8uEeq2t8kgC8VWrg" fontName="Segoe UI" fontHeight="8"/>
148 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hAwZMn8uEeq2t8kgC8VWrg" x="-24" y="528" width="120" height="100"/>
149 </children>
150 <children xmi:type="notation:Node" xmi:id="_VjcL4H8vEeq2t8kgC8VWrg" type="2003" element="_VjIp4H8vEeq2t8kgC8VWrg">
151 <children xmi:type="notation:Node" xmi:id="_Vjcy8H8vEeq2t8kgC8VWrg" type="5007"/>
152 <children xmi:type="notation:Node" xmi:id="_Vjcy8X8vEeq2t8kgC8VWrg" type="7004">
153 <children xmi:type="notation:Node" xmi:id="_VjeBEH8vEeq2t8kgC8VWrg" type="3010" element="_VjP-oX8vEeq2t8kgC8VWrg">
154 <styles xmi:type="notation:FontStyle" xmi:id="_VjeBEX8vEeq2t8kgC8VWrg" fontName="Segoe UI" fontHeight="8" bold="true"/>
155 <layoutConstraint xmi:type="notation:Location" xmi:id="_VjeBEn8vEeq2t8kgC8VWrg"/>
156 </children>
157 <styles xmi:type="notation:SortingStyle" xmi:id="_Vjcy8n8vEeq2t8kgC8VWrg"/>
158 <styles xmi:type="notation:FilteringStyle" xmi:id="_Vjcy838vEeq2t8kgC8VWrg"/>
159 </children>
160 <styles xmi:type="notation:ShapeStyle" xmi:id="_VjcL4X8vEeq2t8kgC8VWrg" fontName="Segoe UI" fontHeight="8"/>
161 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VjcL4n8vEeq2t8kgC8VWrg" x="-24" y="672"/>
162 </children>
124 <styles xmi:type="notation:DiagramStyle" xmi:id="_h6IYArzSEeaj7tVusjQpHg"/> 163 <styles xmi:type="notation:DiagramStyle" xmi:id="_h6IYArzSEeaj7tVusjQpHg"/>
125 <edges xmi:type="notation:Edge" xmi:id="_HcowELzTEeaj7tVusjQpHg" type="4001" element="_HcjQgLzTEeaj7tVusjQpHg" source="_Ci29sLzTEeaj7tVusjQpHg" target="_8vuhcLzSEeaj7tVusjQpHg"> 164 <edges xmi:type="notation:Edge" xmi:id="_HcowELzTEeaj7tVusjQpHg" type="4001" element="_HcjQgLzTEeaj7tVusjQpHg" source="_Ci29sLzTEeaj7tVusjQpHg" target="_8vuhcLzSEeaj7tVusjQpHg">
126 <children xmi:type="notation:Node" xmi:id="_HcowFLzTEeaj7tVusjQpHg" type="6001"> 165 <children xmi:type="notation:Node" xmi:id="_HcowFLzTEeaj7tVusjQpHg" type="6001">
@@ -136,7 +175,7 @@
136 <styles xmi:type="notation:FontStyle" xmi:id="_HcowErzTEeaj7tVusjQpHg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> 175 <styles xmi:type="notation:FontStyle" xmi:id="_HcowErzTEeaj7tVusjQpHg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
137 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HcowE7zTEeaj7tVusjQpHg" points="[131, 21, 420, 26]$[131, 150, 420, 155]$[-401, 150, -112, 155]$[-401, 26, -112, 31]"/> 176 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HcowE7zTEeaj7tVusjQpHg" points="[131, 21, 420, 26]$[131, 150, 420, 155]$[-401, 150, -112, 155]$[-401, 26, -112, 31]"/>
138 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HcpXILzTEeaj7tVusjQpHg" id="(0.0,0.49019607843137253)"/> 177 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HcpXILzTEeaj7tVusjQpHg" id="(0.0,0.49019607843137253)"/>
139 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HcpXIbzTEeaj7tVusjQpHg" id="(1.0,0.30303030303030304)"/> 178 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HcpXIbzTEeaj7tVusjQpHg" id="(1.0,0.25316455696202533)"/>
140 </edges> 179 </edges>
141 <edges xmi:type="notation:Edge" xmi:id="_hotbZLzTEeaj7tVusjQpHg" type="4001" element="_hormMLzTEeaj7tVusjQpHg" source="_8vuhcLzSEeaj7tVusjQpHg" target="_hos0ULzTEeaj7tVusjQpHg"> 180 <edges xmi:type="notation:Edge" xmi:id="_hotbZLzTEeaj7tVusjQpHg" type="4001" element="_hormMLzTEeaj7tVusjQpHg" source="_8vuhcLzSEeaj7tVusjQpHg" target="_hos0ULzTEeaj7tVusjQpHg">
142 <children xmi:type="notation:Node" xmi:id="_houCcLzTEeaj7tVusjQpHg" type="6001"> 181 <children xmi:type="notation:Node" xmi:id="_houCcLzTEeaj7tVusjQpHg" type="6001">
@@ -151,7 +190,7 @@
151 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hotbZbzTEeaj7tVusjQpHg" routing="Tree"/> 190 <styles xmi:type="notation:ConnectorStyle" xmi:id="_hotbZbzTEeaj7tVusjQpHg" routing="Tree"/>
152 <styles xmi:type="notation:FontStyle" xmi:id="_hotbZrzTEeaj7tVusjQpHg" fontName="Segoe UI" fontHeight="8"/> 191 <styles xmi:type="notation:FontStyle" xmi:id="_hotbZrzTEeaj7tVusjQpHg" fontName="Segoe UI" fontHeight="8"/>
153 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hotbZ7zTEeaj7tVusjQpHg" points="[115, 240, 115, 240]$[0, 0, 0, 0]"/> 192 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hotbZ7zTEeaj7tVusjQpHg" points="[115, 240, 115, 240]$[0, 0, 0, 0]"/>
154 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_howesLzTEeaj7tVusjQpHg" id="(0.6769911504424779,0.3033826638477801)"/> 193 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_howesLzTEeaj7tVusjQpHg" id="(0.6769911504424779,0.2534589343538416)"/>
155 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_howesbzTEeaj7tVusjQpHg" id="(0.5,2.3333333333333335)"/> 194 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_howesbzTEeaj7tVusjQpHg" id="(0.5,2.3333333333333335)"/>
156 </edges> 195 </edges>
157 <edges xmi:type="notation:Edge" xmi:id="_kYdmMLzTEeaj7tVusjQpHg" type="4001" element="_kYbxALzTEeaj7tVusjQpHg" source="_hos0ULzTEeaj7tVusjQpHg" target="_kYcYELzTEeaj7tVusjQpHg"> 196 <edges xmi:type="notation:Edge" xmi:id="_kYdmMLzTEeaj7tVusjQpHg" type="4001" element="_kYbxALzTEeaj7tVusjQpHg" source="_hos0ULzTEeaj7tVusjQpHg" target="_kYcYELzTEeaj7tVusjQpHg">
@@ -232,207 +271,312 @@
232 <styles xmi:type="notation:FontStyle" xmi:id="_fhjIovOcEeauOJk-5mBnBg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/> 271 <styles xmi:type="notation:FontStyle" xmi:id="_fhjIovOcEeauOJk-5mBnBg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
233 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fhjIo_OcEeauOJk-5mBnBg" points="[131, 26, 145, 26]$[131, 80, 145, 80]$[-110, 80, -96, 80]$[-110, 26, -96, 26]"/> 272 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fhjIo_OcEeauOJk-5mBnBg" points="[131, 26, 145, 26]$[131, 80, 145, 80]$[-110, 80, -96, 80]$[-110, 26, -96, 26]"/>
234 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fhjvtvOcEeauOJk-5mBnBg" id="(0.0,0.49019607843137253)"/> 273 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fhjvtvOcEeauOJk-5mBnBg" id="(0.0,0.49019607843137253)"/>
235 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fhjvt_OcEeauOJk-5mBnBg" id="(1.0,0.3787878787878788)"/> 274 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fhjvt_OcEeauOJk-5mBnBg" id="(1.0,0.31645569620253167)"/>
275 </edges>
276 <edges xmi:type="notation:Edge" xmi:id="_k843kH8uEeq2t8kgC8VWrg" type="4001" element="_k8ZvYH8uEeq2t8kgC8VWrg" source="_8vuhcLzSEeaj7tVusjQpHg" target="_hAwZMH8uEeq2t8kgC8VWrg">
277 <children xmi:type="notation:Node" xmi:id="_k87T0H8uEeq2t8kgC8VWrg" type="6001">
278 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k87T0X8uEeq2t8kgC8VWrg" x="-6" y="61"/>
279 </children>
280 <children xmi:type="notation:Node" xmi:id="_k89JAH8uEeq2t8kgC8VWrg" type="6002">
281 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k89JAX8uEeq2t8kgC8VWrg" y="10"/>
282 </children>
283 <children xmi:type="notation:Node" xmi:id="_k89wEH8uEeq2t8kgC8VWrg" type="6003">
284 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k89wEX8uEeq2t8kgC8VWrg" y="10"/>
285 </children>
286 <styles xmi:type="notation:ConnectorStyle" xmi:id="_k843kX8uEeq2t8kgC8VWrg" routing="Rectilinear"/>
287 <styles xmi:type="notation:FontStyle" xmi:id="_k843kn8uEeq2t8kgC8VWrg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
288 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_k843k38uEeq2t8kgC8VWrg" points="[0, 0, 0, -72]$[0, 72, 0, 0]"/>
289 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k8_lQH8uEeq2t8kgC8VWrg" id="(0.13274336283185842,0.8354430379746836)"/>
290 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k8_lQX8uEeq2t8kgC8VWrg" id="(0.5,0.0)"/>
291 </edges>
292 <edges xmi:type="notation:Edge" xmi:id="_XY6fwH8vEeq2t8kgC8VWrg" type="4001" element="_XYlIkH8vEeq2t8kgC8VWrg" source="_hAwZMH8uEeq2t8kgC8VWrg" target="_VjcL4H8vEeq2t8kgC8VWrg">
293 <children xmi:type="notation:Node" xmi:id="_XY7G0H8vEeq2t8kgC8VWrg" type="6001">
294 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XY7G0X8vEeq2t8kgC8VWrg" x="5" y="38"/>
295 </children>
296 <children xmi:type="notation:Node" xmi:id="_XY7G0n8vEeq2t8kgC8VWrg" type="6002">
297 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XY7G038vEeq2t8kgC8VWrg" y="10"/>
298 </children>
299 <children xmi:type="notation:Node" xmi:id="_XY8U8H8vEeq2t8kgC8VWrg" type="6003">
300 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XY8U8X8vEeq2t8kgC8VWrg" y="10"/>
301 </children>
302 <styles xmi:type="notation:ConnectorStyle" xmi:id="_XY6fwX8vEeq2t8kgC8VWrg" routing="Rectilinear"/>
303 <styles xmi:type="notation:FontStyle" xmi:id="_XY6fwn8vEeq2t8kgC8VWrg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
304 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XY6fw38vEeq2t8kgC8VWrg" points="[0, 0, 0, -46]$[0, 46, 0, 0]"/>
305 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XY88AH8vEeq2t8kgC8VWrg" id="(0.8135593220338984,1.0)"/>
306 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XY88AX8vEeq2t8kgC8VWrg" id="(0.6530612244897959,0.0)"/>
236 </edges> 307 </edges>
237 </data> 308 </data>
238 </ownedAnnotationEntries> 309 </ownedAnnotationEntries>
239 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_8vqQALzSEeaj7tVusjQpHg" name="TransfomedViatraQuery" tooltipText="" outgoingEdges="_hormMLzTEeaj7tVusjQpHg" incomingEdges="_HcjQgLzTEeaj7tVusjQpHg _fhW7YPOcEeauOJk-5mBnBg" width="12" height="10"> 310 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_8vqQALzSEeaj7tVusjQpHg" name="TransfomedViatraQuery" tooltipText="" outgoingEdges="_hormMLzTEeaj7tVusjQpHg _k8ZvYH8uEeq2t8kgC8VWrg" incomingEdges="_HcjQgLzTEeaj7tVusjQpHg _fhW7YPOcEeauOJk-5mBnBg" width="12" height="10">
240 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery"/> 311 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery"/>
241 <semanticElements xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery"/> 312 <semanticElements xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery"/>
242 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 313 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
243 <arrangeConstraints>KEEP_SIZE</arrangeConstraints> 314 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
244 <arrangeConstraints>KEEP_RATIO</arrangeConstraints> 315 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
245 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_Sxe3EBfyEeiKzNmzswRwjA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 316 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_YFdW8Y_pEeqlOMjO9MPV6g" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
246 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> 317 <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"/>
247 </ownedStyle> 318 </ownedStyle>
248 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> 319 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
249 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_4Dt3gL2REeaj7tVusjQpHg" name="patternFullyQualifiedName : EString" tooltipText=""> 320 <ownedElements xmi:type="diagram:DNodeListElement" uid="_4Dt3gL2REeaj7tVusjQpHg" name="patternFullyQualifiedName : EString" tooltipText="">
250 <target xmi:type="ecore:EAttribute" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/patternFullyQualifiedName"/> 321 <target xmi:type="ecore:EAttribute" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/patternFullyQualifiedName"/>
251 <semanticElements xmi:type="ecore:EAttribute" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/patternFullyQualifiedName"/> 322 <semanticElements xmi:type="ecore:EAttribute" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/patternFullyQualifiedName"/>
252 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="__q-j0b2REeaj7tVusjQpHg" labelAlignment="LEFT" description="__q-j0L2REeaj7tVusjQpHg"> 323 <ownedStyle xmi:type="diagram:BundledImage" uid="__q-j0b2REeaj7tVusjQpHg" labelAlignment="LEFT" description="__q-j0L2REeaj7tVusjQpHg">
253 <labelFormat>bold</labelFormat> 324 <labelFormat>bold</labelFormat>
254 </ownedStyle> 325 </ownedStyle>
255 <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']"/> 326 <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']"/>
256 </ownedElements> 327 </ownedElements>
257 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_NEcbwBfyEeiKzNmzswRwjA" name="patternPQuery : EJavaObject" tooltipText=""> 328 <ownedElements xmi:type="diagram:DNodeListElement" uid="_NEcbwBfyEeiKzNmzswRwjA" name="patternPQuery : EJavaObject" tooltipText="">
258 <target xmi:type="ecore:EAttribute" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/patternPQuery"/> 329 <target xmi:type="ecore:EAttribute" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/patternPQuery"/>
259 <semanticElements xmi:type="ecore:EAttribute" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/patternPQuery"/> 330 <semanticElements xmi:type="ecore:EAttribute" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/patternPQuery"/>
260 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_c0t2kBfyEeiKzNmzswRwjA" labelAlignment="LEFT" description="__q-j0L2REeaj7tVusjQpHg"> 331 <ownedStyle xmi:type="diagram:BundledImage" uid="_c0t2kBfyEeiKzNmzswRwjA" labelAlignment="LEFT" description="__q-j0L2REeaj7tVusjQpHg">
332 <labelFormat>bold</labelFormat>
333 </ownedStyle>
334 <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']"/>
335 </ownedElements>
336 <ownedElements xmi:type="diagram:DNodeListElement" uid="_QQIZcI_pEeqlOMjO9MPV6g" name="optimizedDisjunction : EJavaObject" tooltipText="">
337 <target xmi:type="ecore:EAttribute" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/optimizedDisjunction"/>
338 <semanticElements xmi:type="ecore:EAttribute" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/optimizedDisjunction"/>
339 <ownedStyle xmi:type="diagram:BundledImage" uid="_YFoWEY_pEeqlOMjO9MPV6g" labelAlignment="LEFT" description="__q-j0L2REeaj7tVusjQpHg">
261 <labelFormat>bold</labelFormat> 340 <labelFormat>bold</labelFormat>
262 </ownedStyle> 341 </ownedStyle>
263 <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']"/> 342 <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']"/>
264 </ownedElements> 343 </ownedElements>
265 </ownedDiagramElements> 344 </ownedDiagramElements>
266 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_Ciz6YLzTEeaj7tVusjQpHg" name="TransformedViatraWellformednessConstraint" tooltipText="" outgoingEdges="_HcjQgLzTEeaj7tVusjQpHg _rIFf4LzTEeaj7tVusjQpHg" width="12" height="10"> 345 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Ciz6YLzTEeaj7tVusjQpHg" name="TransformedViatraWellformednessConstraint" tooltipText="" outgoingEdges="_HcjQgLzTEeaj7tVusjQpHg _rIFf4LzTEeaj7tVusjQpHg" width="12" height="10">
267 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint"/> 346 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint"/>
268 <semanticElements xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint"/> 347 <semanticElements xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint"/>
269 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 348 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
270 <arrangeConstraints>KEEP_SIZE</arrangeConstraints> 349 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
271 <arrangeConstraints>KEEP_RATIO</arrangeConstraints> 350 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
272 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_Ci0hcLzTEeaj7tVusjQpHg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 351 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Ci0hcLzTEeaj7tVusjQpHg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
273 <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"/> 352 <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"/>
274 </ownedStyle> 353 </ownedStyle>
275 <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']"/> 354 <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']"/>
276 </ownedDiagramElements> 355 </ownedDiagramElements>
277 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HcjQgLzTEeaj7tVusjQpHg" name="[1..1] query" sourceNode="_Ciz6YLzTEeaj7tVusjQpHg" targetNode="_8vqQALzSEeaj7tVusjQpHg"> 356 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_HcjQgLzTEeaj7tVusjQpHg" name="[1..1] query" sourceNode="_Ciz6YLzTEeaj7tVusjQpHg" targetNode="_8vqQALzSEeaj7tVusjQpHg">
278 <target xmi:type="ecore:EReference" href="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint/query"/> 357 <target xmi:type="ecore:EReference" href="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint/query"/>
279 <semanticElements xmi:type="ecore:EReference" href="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint/query"/> 358 <semanticElements xmi:type="ecore:EReference" href="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint/query"/>
280 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_JijTs7zTEeaj7tVusjQpHg" description="_JijTsLzTEeaj7tVusjQpHg" routingStyle="manhattan" strokeColor="0,0,0"> 359 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_JijTs7zTEeaj7tVusjQpHg" description="_JijTsLzTEeaj7tVusjQpHg" routingStyle="manhattan" strokeColor="0,0,0">
281 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_JijTtLzTEeaj7tVusjQpHg" showIcon="false"> 360 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_JijTtLzTEeaj7tVusjQpHg" showIcon="false">
282 <labelFormat>bold</labelFormat> 361 <labelFormat>bold</labelFormat>
283 </centerLabelStyle> 362 </centerLabelStyle>
284 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_JijTtbzTEeaj7tVusjQpHg" labelSize="6" showIcon="false" labelColor="39,76,114"/> 363 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_JijTtbzTEeaj7tVusjQpHg" labelSize="6" showIcon="false" labelColor="39,76,114"/>
285 </ownedStyle> 364 </ownedStyle>
286 <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']"/> 365 <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']"/>
287 </ownedDiagramElements> 366 </ownedDiagramElements>
288 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_hon70LzTEeaj7tVusjQpHg" name="RelationAnnotation" tooltipText="" outgoingEdges="_kYbxALzTEeaj7tVusjQpHg" incomingEdges="_hormMLzTEeaj7tVusjQpHg _Fff8APOcEeauOJk-5mBnBg" width="12" height="10"> 367 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_hon70LzTEeaj7tVusjQpHg" name="RelationAnnotation" tooltipText="" outgoingEdges="_kYbxALzTEeaj7tVusjQpHg" incomingEdges="_hormMLzTEeaj7tVusjQpHg _Fff8APOcEeauOJk-5mBnBg" width="12" height="10">
289 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation"/> 368 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation"/>
290 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation"/> 369 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation"/>
291 <decorations xmi:type="viewpoint:Decoration" xmi:id="_hoq_ILzTEeaj7tVusjQpHg"> 370 <decorations xmi:type="viewpoint:Decoration" uid="_hoq_ILzTEeaj7tVusjQpHg">
292 <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']"/> 371 <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']"/>
293 </decorations> 372 </decorations>
294 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 373 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
295 <arrangeConstraints>KEEP_SIZE</arrangeConstraints> 374 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
296 <arrangeConstraints>KEEP_RATIO</arrangeConstraints> 375 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
297 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_hon70bzTEeaj7tVusjQpHg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 376 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_hon70bzTEeaj7tVusjQpHg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
298 <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"/> 377 <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"/>
299 </ownedStyle> 378 </ownedStyle>
300 <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']"/> 379 <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']"/>
301 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_JMX-ABfyEeiKzNmzswRwjA" name=" target : Relation" tooltipText=""> 380 <ownedElements xmi:type="diagram:DNodeListElement" uid="_JMX-ABfyEeiKzNmzswRwjA" name=" target : Relation" tooltipText="">
302 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation/target"/> 381 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation/target"/>
303 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation/target"/> 382 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation/target"/>
304 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_JMhH8BfyEeiKzNmzswRwjA" labelAlignment="LEFT" description="_JMersBfyEeiKzNmzswRwjA" color="114,159,207"> 383 <ownedStyle xmi:type="diagram:BundledImage" uid="_JMhH8BfyEeiKzNmzswRwjA" labelAlignment="LEFT" description="_JMersBfyEeiKzNmzswRwjA" color="114,159,207">
305 <labelFormat>bold</labelFormat> 384 <labelFormat>bold</labelFormat>
306 </ownedStyle> 385 </ownedStyle>
307 <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%20EReferenceNode']"/> 386 <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%20EReferenceNode']"/>
308 </ownedElements> 387 </ownedElements>
309 </ownedDiagramElements> 388 </ownedDiagramElements>
310 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_hormMLzTEeaj7tVusjQpHg" sourceNode="_8vqQALzSEeaj7tVusjQpHg" targetNode="_hon70LzTEeaj7tVusjQpHg"> 389 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_hormMLzTEeaj7tVusjQpHg" sourceNode="_8vqQALzSEeaj7tVusjQpHg" targetNode="_hon70LzTEeaj7tVusjQpHg">
311 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery"/> 390 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery"/>
312 <semanticElements xmi:type="ecore:EGenericType" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/@eGenericSuperTypes.0"/> 391 <semanticElements xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery"/>
313 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_SxrrYBfyEeiKzNmzswRwjA" targetArrow="InputClosedArrow" routingStyle="tree"> 392 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_YFyHEI_pEeqlOMjO9MPV6g" targetArrow="InputClosedArrow" routingStyle="tree">
314 <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"/> 393 <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"/>
315 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_SxrrYRfyEeiKzNmzswRwjA" showIcon="false"> 394 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_YFyHEY_pEeqlOMjO9MPV6g" showIcon="false">
316 <labelFormat>italic</labelFormat> 395 <labelFormat>italic</labelFormat>
317 </beginLabelStyle> 396 </beginLabelStyle>
318 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_SxrrYhfyEeiKzNmzswRwjA" showIcon="false"/> 397 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_YFyHEo_pEeqlOMjO9MPV6g" showIcon="false"/>
319 </ownedStyle> 398 </ownedStyle>
320 <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']"/> 399 <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']"/>
321 </ownedDiagramElements> 400 </ownedDiagramElements>
322 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_kYYGoLzTEeaj7tVusjQpHg" name="Annotation" tooltipText="" incomingEdges="_kYbxALzTEeaj7tVusjQpHg _pqp4kLzTEeaj7tVusjQpHg" width="12" height="10"> 401 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_kYYGoLzTEeaj7tVusjQpHg" name="Annotation" tooltipText="" incomingEdges="_kYbxALzTEeaj7tVusjQpHg _pqp4kLzTEeaj7tVusjQpHg" width="12" height="10">
323 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//Annotation"/> 402 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//Annotation"/>
324 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//Annotation"/> 403 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//Annotation"/>
325 <decorations xmi:type="viewpoint:Decoration" xmi:id="_kYai4LzTEeaj7tVusjQpHg"> 404 <decorations xmi:type="viewpoint:Decoration" uid="_kYai4LzTEeaj7tVusjQpHg">
326 <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']"/> 405 <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']"/>
327 </decorations> 406 </decorations>
328 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 407 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
329 <arrangeConstraints>KEEP_SIZE</arrangeConstraints> 408 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
330 <arrangeConstraints>KEEP_RATIO</arrangeConstraints> 409 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
331 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_kYYGobzTEeaj7tVusjQpHg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 410 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_kYYGobzTEeaj7tVusjQpHg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
332 <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"/> 411 <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"/>
333 </ownedStyle> 412 </ownedStyle>
334 <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']"/> 413 <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']"/>
335 </ownedDiagramElements> 414 </ownedDiagramElements>
336 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_kYbxALzTEeaj7tVusjQpHg" sourceNode="_hon70LzTEeaj7tVusjQpHg" targetNode="_kYYGoLzTEeaj7tVusjQpHg"> 415 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_kYbxALzTEeaj7tVusjQpHg" sourceNode="_hon70LzTEeaj7tVusjQpHg" targetNode="_kYYGoLzTEeaj7tVusjQpHg">
337 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation"/> 416 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation"/>
338 <semanticElements xmi:type="ecore:EGenericType" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation/@eGenericSuperTypes.0"/> 417 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation"/>
339 <decorations xmi:type="viewpoint:Decoration" xmi:id="_rIE40LzTEeaj7tVusjQpHg"> 418 <decorations xmi:type="viewpoint:Decoration" uid="_rIE40LzTEeaj7tVusjQpHg">
340 <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']"/> 419 <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']"/>
341 </decorations> 420 </decorations>
342 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_kYbxAbzTEeaj7tVusjQpHg" targetArrow="InputClosedArrow" routingStyle="tree"> 421 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_kYbxAbzTEeaj7tVusjQpHg" targetArrow="InputClosedArrow" routingStyle="tree">
343 <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"/> 422 <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"/>
344 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_kYbxArzTEeaj7tVusjQpHg" showIcon="false"> 423 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_kYbxArzTEeaj7tVusjQpHg" showIcon="false">
345 <labelFormat>italic</labelFormat> 424 <labelFormat>italic</labelFormat>
346 </beginLabelStyle> 425 </beginLabelStyle>
347 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_kYbxA7zTEeaj7tVusjQpHg" showIcon="false"/> 426 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_kYbxA7zTEeaj7tVusjQpHg" showIcon="false"/>
348 </ownedStyle> 427 </ownedStyle>
349 <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']"/> 428 <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']"/>
350 </ownedDiagramElements> 429 </ownedDiagramElements>
351 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_pqmOMLzTEeaj7tVusjQpHg" name="AssertionAnnotation" tooltipText="" outgoingEdges="_pqp4kLzTEeaj7tVusjQpHg" incomingEdges="_rIFf4LzTEeaj7tVusjQpHg" width="12" height="10"> 430 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_pqmOMLzTEeaj7tVusjQpHg" name="AssertionAnnotation" tooltipText="" outgoingEdges="_pqp4kLzTEeaj7tVusjQpHg" incomingEdges="_rIFf4LzTEeaj7tVusjQpHg" width="12" height="10">
352 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/> 431 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/>
353 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/> 432 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/>
354 <decorations xmi:type="viewpoint:Decoration" xmi:id="_pqpRgLzTEeaj7tVusjQpHg"> 433 <decorations xmi:type="viewpoint:Decoration" uid="_pqpRgLzTEeaj7tVusjQpHg">
355 <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']"/> 434 <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']"/>
356 </decorations> 435 </decorations>
357 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 436 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
358 <arrangeConstraints>KEEP_SIZE</arrangeConstraints> 437 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
359 <arrangeConstraints>KEEP_RATIO</arrangeConstraints> 438 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
360 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_pqmOMbzTEeaj7tVusjQpHg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 439 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_pqmOMbzTEeaj7tVusjQpHg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
361 <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"/> 440 <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"/>
362 </ownedStyle> 441 </ownedStyle>
363 <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']"/> 442 <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']"/>
364 <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_JMjkMBfyEeiKzNmzswRwjA" name=" target : Assertion" tooltipText=""> 443 <ownedElements xmi:type="diagram:DNodeListElement" uid="_JMjkMBfyEeiKzNmzswRwjA" name=" target : Assertion" tooltipText="">
365 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation/target"/> 444 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation/target"/>
366 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation/target"/> 445 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation/target"/>
367 <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_JMkyUBfyEeiKzNmzswRwjA" labelAlignment="LEFT" description="_JMersBfyEeiKzNmzswRwjA" color="114,159,207"> 446 <ownedStyle xmi:type="diagram:BundledImage" uid="_JMkyUBfyEeiKzNmzswRwjA" labelAlignment="LEFT" description="_JMersBfyEeiKzNmzswRwjA" color="114,159,207">
368 <labelFormat>bold</labelFormat> 447 <labelFormat>bold</labelFormat>
369 </ownedStyle> 448 </ownedStyle>
370 <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%20EReferenceNode']"/> 449 <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%20EReferenceNode']"/>
371 </ownedElements> 450 </ownedElements>
372 </ownedDiagramElements> 451 </ownedDiagramElements>
373 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_pqp4kLzTEeaj7tVusjQpHg" sourceNode="_pqmOMLzTEeaj7tVusjQpHg" targetNode="_kYYGoLzTEeaj7tVusjQpHg"> 452 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_pqp4kLzTEeaj7tVusjQpHg" sourceNode="_pqmOMLzTEeaj7tVusjQpHg" targetNode="_kYYGoLzTEeaj7tVusjQpHg">
374 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/> 453 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/>
375 <semanticElements xmi:type="ecore:EGenericType" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation/@eGenericSuperTypes.0"/> 454 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"/>
376 <decorations xmi:type="viewpoint:Decoration" xmi:id="_rIE40bzTEeaj7tVusjQpHg"> 455 <decorations xmi:type="viewpoint:Decoration" uid="_rIE40bzTEeaj7tVusjQpHg">
377 <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']"/> 456 <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']"/>
378 </decorations> 457 </decorations>
379 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_pqqfoLzTEeaj7tVusjQpHg" targetArrow="InputClosedArrow" routingStyle="tree"> 458 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_pqqfoLzTEeaj7tVusjQpHg" targetArrow="InputClosedArrow" routingStyle="tree">
380 <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"/> 459 <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"/>
381 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_pqqfobzTEeaj7tVusjQpHg" showIcon="false"> 460 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_pqqfobzTEeaj7tVusjQpHg" showIcon="false">
382 <labelFormat>italic</labelFormat> 461 <labelFormat>italic</labelFormat>
383 </beginLabelStyle> 462 </beginLabelStyle>
384 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_pqqforzTEeaj7tVusjQpHg" showIcon="false"/> 463 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_pqqforzTEeaj7tVusjQpHg" showIcon="false"/>
385 </ownedStyle> 464 </ownedStyle>
386 <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']"/> 465 <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']"/>
387 </ownedDiagramElements> 466 </ownedDiagramElements>
388 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_rIFf4LzTEeaj7tVusjQpHg" sourceNode="_Ciz6YLzTEeaj7tVusjQpHg" targetNode="_pqmOMLzTEeaj7tVusjQpHg"> 467 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_rIFf4LzTEeaj7tVusjQpHg" sourceNode="_Ciz6YLzTEeaj7tVusjQpHg" targetNode="_pqmOMLzTEeaj7tVusjQpHg">
389 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint"/> 468 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint"/>
390 <semanticElements xmi:type="ecore:EGenericType" href="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint/@eGenericSuperTypes.0"/> 469 <semanticElements xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint"/>
391 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_rIGG8LzTEeaj7tVusjQpHg" targetArrow="InputClosedArrow" routingStyle="tree"> 470 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_rIGG8LzTEeaj7tVusjQpHg" targetArrow="InputClosedArrow" routingStyle="tree">
392 <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"/> 471 <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"/>
393 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_rIGG8bzTEeaj7tVusjQpHg" showIcon="false"> 472 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_rIGG8bzTEeaj7tVusjQpHg" showIcon="false">
394 <labelFormat>italic</labelFormat> 473 <labelFormat>italic</labelFormat>
395 </beginLabelStyle> 474 </beginLabelStyle>
396 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_rIGG8rzTEeaj7tVusjQpHg" showIcon="false"/> 475 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_rIGG8rzTEeaj7tVusjQpHg" showIcon="false"/>
397 </ownedStyle> 476 </ownedStyle>
398 <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']"/> 477 <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']"/>
399 </ownedDiagramElements> 478 </ownedDiagramElements>
400 <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_7gtXoPObEeauOJk-5mBnBg" name="DefinedByDerivedFeature" tooltipText="" outgoingEdges="_Fff8APOcEeauOJk-5mBnBg _fhW7YPOcEeauOJk-5mBnBg" width="12" height="10"> 479 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_7gtXoPObEeauOJk-5mBnBg" name="DefinedByDerivedFeature" tooltipText="" outgoingEdges="_Fff8APOcEeauOJk-5mBnBg _fhW7YPOcEeauOJk-5mBnBg" width="12" height="10">
401 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature"/> 480 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature"/>
402 <semanticElements xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature"/> 481 <semanticElements xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature"/>
403 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 482 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
404 <arrangeConstraints>KEEP_SIZE</arrangeConstraints> 483 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
405 <arrangeConstraints>KEEP_RATIO</arrangeConstraints> 484 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
406 <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_7gvM0PObEeauOJk-5mBnBg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 485 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_7gvM0PObEeauOJk-5mBnBg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
407 <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"/> 486 <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"/>
408 </ownedStyle> 487 </ownedStyle>
409 <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']"/> 488 <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']"/>
410 </ownedDiagramElements> 489 </ownedDiagramElements>
411 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_Fff8APOcEeauOJk-5mBnBg" sourceNode="_7gtXoPObEeauOJk-5mBnBg" targetNode="_hon70LzTEeaj7tVusjQpHg"> 490 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_Fff8APOcEeauOJk-5mBnBg" sourceNode="_7gtXoPObEeauOJk-5mBnBg" targetNode="_hon70LzTEeaj7tVusjQpHg">
412 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature"/> 491 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature"/>
413 <semanticElements xmi:type="ecore:EGenericType" href="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature/@eGenericSuperTypes.0"/> 492 <semanticElements xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature"/>
414 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_FfgjEPOcEeauOJk-5mBnBg" targetArrow="InputClosedArrow" routingStyle="tree"> 493 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_FfgjEPOcEeauOJk-5mBnBg" targetArrow="InputClosedArrow" routingStyle="tree">
415 <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"/> 494 <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"/>
416 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_FfgjEfOcEeauOJk-5mBnBg" showIcon="false"> 495 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_FfgjEfOcEeauOJk-5mBnBg" showIcon="false">
417 <labelFormat>italic</labelFormat> 496 <labelFormat>italic</labelFormat>
418 </beginLabelStyle> 497 </beginLabelStyle>
419 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_FfgjEvOcEeauOJk-5mBnBg" showIcon="false"/> 498 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_FfgjEvOcEeauOJk-5mBnBg" showIcon="false"/>
420 </ownedStyle> 499 </ownedStyle>
421 <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']"/> 500 <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']"/>
422 </ownedDiagramElements> 501 </ownedDiagramElements>
423 <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_fhW7YPOcEeauOJk-5mBnBg" name="[1..1] query" sourceNode="_7gtXoPObEeauOJk-5mBnBg" targetNode="_8vqQALzSEeaj7tVusjQpHg"> 502 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fhW7YPOcEeauOJk-5mBnBg" name="[1..1] query" sourceNode="_7gtXoPObEeauOJk-5mBnBg" targetNode="_8vqQALzSEeaj7tVusjQpHg">
424 <target xmi:type="ecore:EReference" href="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature/query"/> 503 <target xmi:type="ecore:EReference" href="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature/query"/>
425 <semanticElements xmi:type="ecore:EReference" href="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature/query"/> 504 <semanticElements xmi:type="ecore:EReference" href="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature/query"/>
426 <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_hzsKYPOcEeauOJk-5mBnBg" description="_JijTsLzTEeaj7tVusjQpHg" routingStyle="manhattan" strokeColor="0,0,0"> 505 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_hzsKYPOcEeauOJk-5mBnBg" description="_JijTsLzTEeaj7tVusjQpHg" routingStyle="manhattan" strokeColor="0,0,0">
427 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_hzsKYfOcEeauOJk-5mBnBg" showIcon="false"> 506 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_hzsKYfOcEeauOJk-5mBnBg" showIcon="false">
507 <labelFormat>bold</labelFormat>
508 </centerLabelStyle>
509 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_hzsKYvOcEeauOJk-5mBnBg" labelSize="6" showIcon="false" labelColor="39,76,114"/>
510 </ownedStyle>
511 <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']"/>
512 </ownedDiagramElements>
513 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_hAAyUH8uEeq2t8kgC8VWrg" name="VariableMapping" tooltipText="" outgoingEdges="_XYlIkH8vEeq2t8kgC8VWrg" incomingEdges="_k8ZvYH8uEeq2t8kgC8VWrg" width="12" height="10">
514 <target xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//VariableMapping"/>
515 <semanticElements xmi:type="ecore:EClass" href="ViatraModelAnnotations.ecore#//VariableMapping"/>
516 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
517 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
518 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
519 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_EXh5gn8vEeq2t8kgC8VWrg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
520 <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"/>
521 </ownedStyle>
522 <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']"/>
523 <ownedElements xmi:type="diagram:DNodeListElement" uid="_qpvFoH8uEeq2t8kgC8VWrg" name="sourcePVariable : EJavaObject" tooltipText="">
524 <target xmi:type="ecore:EAttribute" href="ViatraModelAnnotations.ecore#//VariableMapping/sourcePVariable"/>
525 <semanticElements xmi:type="ecore:EAttribute" href="ViatraModelAnnotations.ecore#//VariableMapping/sourcePVariable"/>
526 <ownedStyle xmi:type="diagram:BundledImage" uid="_EXmyAH8vEeq2t8kgC8VWrg" labelAlignment="LEFT" description="__q-j0L2REeaj7tVusjQpHg">
527 <labelFormat>bold</labelFormat>
528 </ownedStyle>
529 <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']"/>
530 </ownedElements>
531 </ownedDiagramElements>
532 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_k8ZvYH8uEeq2t8kgC8VWrg" name="[0..*] variableTrace" sourceNode="_8vqQALzSEeaj7tVusjQpHg" targetNode="_hAAyUH8uEeq2t8kgC8VWrg">
533 <target xmi:type="ecore:EReference" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/variableTrace"/>
534 <semanticElements xmi:type="ecore:EReference" href="ViatraModelAnnotations.ecore#//TransfomedViatraQuery/variableTrace"/>
535 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_k8a9gH8uEeq2t8kgC8VWrg" description="_k8aWcH8uEeq2t8kgC8VWrg" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
536 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_k8a9gn8uEeq2t8kgC8VWrg" showIcon="false">
537 <customFeatures>labelSize</customFeatures>
538 </centerLabelStyle>
539 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_k8a9gX8uEeq2t8kgC8VWrg" showIcon="false" labelColor="39,76,114">
540 <customFeatures>labelSize</customFeatures>
541 </endLabelStyle>
542 </ownedStyle>
543 <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']"/>
544 </ownedDiagramElements>
545 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_VjIp4H8vEeq2t8kgC8VWrg" name="Variable" tooltipText="" incomingEdges="_XYlIkH8vEeq2t8kgC8VWrg" width="12" height="10">
546 <target xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Variable"/>
547 <semanticElements xmi:type="ecore:EClass" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Variable"/>
548 <decorations xmi:type="viewpoint:Decoration" uid="_VjJ4AH8vEeq2t8kgC8VWrg">
549 <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']"/>
550 </decorations>
551 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
552 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
553 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
554 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_VjJQ8H8vEeq2t8kgC8VWrg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
555 <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"/>
556 </ownedStyle>
557 <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']"/>
558 <ownedElements xmi:type="diagram:DNodeListElement" uid="_VjP-oX8vEeq2t8kgC8VWrg" name=" range : TypeReference" tooltipText="">
559 <target xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Variable/range"/>
560 <semanticElements xmi:type="ecore:EReference" href="platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Variable/range"/>
561 <ownedStyle xmi:type="diagram:BundledImage" uid="_VjQlsH8vEeq2t8kgC8VWrg" labelAlignment="LEFT" description="_JMersBfyEeiKzNmzswRwjA" color="114,159,207">
562 <labelFormat>bold</labelFormat>
563 </ownedStyle>
564 <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%20EReferenceNode']"/>
565 </ownedElements>
566 </ownedDiagramElements>
567 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_XYlIkH8vEeq2t8kgC8VWrg" name="[1..1] targetLogicVariable" sourceNode="_hAAyUH8uEeq2t8kgC8VWrg" targetNode="_VjIp4H8vEeq2t8kgC8VWrg">
568 <target xmi:type="ecore:EReference" href="ViatraModelAnnotations.ecore#//VariableMapping/targetLogicVariable"/>
569 <semanticElements xmi:type="ecore:EReference" href="ViatraModelAnnotations.ecore#//VariableMapping/targetLogicVariable"/>
570 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_bTqeFn8vEeq2t8kgC8VWrg" description="_JijTsLzTEeaj7tVusjQpHg" routingStyle="manhattan" strokeColor="0,0,0">
571 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_bTqeGH8vEeq2t8kgC8VWrg" showIcon="false">
428 <labelFormat>bold</labelFormat> 572 <labelFormat>bold</labelFormat>
429 </centerLabelStyle> 573 </centerLabelStyle>
430 <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_hzsKYvOcEeauOJk-5mBnBg" labelSize="6" showIcon="false" labelColor="39,76,114"/> 574 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_bTqeF38vEeq2t8kgC8VWrg" labelSize="6" showIcon="false" labelColor="39,76,114"/>
431 </ownedStyle> 575 </ownedStyle>
432 <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']"/> 576 <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']"/>
433 </ownedDiagramElements> 577 </ownedDiagramElements>
434 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 578 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
435 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_h6FUsrzSEeaj7tVusjQpHg"/> 579 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_h6FUsrzSEeaj7tVusjQpHg"/>
436 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> 580 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
437 <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']"/> 581 <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']"/>
438 <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']"/> 582 <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']"/>
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.ecore b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.ecore
index b7d2dcc3..0da2bde6 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.ecore
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.ecore
@@ -8,6 +8,11 @@
8 <eStructuralFeatures xsi:type="ecore:EAttribute" name="patternPQuery" lowerBound="1" 8 <eStructuralFeatures xsi:type="ecore:EAttribute" name="patternPQuery" lowerBound="1"
9 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject" 9 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
10 transient="true"/> 10 transient="true"/>
11 <eStructuralFeatures xsi:type="ecore:EReference" name="variableTrace" upperBound="-1"
12 eType="#//VariableMapping" containment="true"/>
13 <eStructuralFeatures xsi:type="ecore:EAttribute" name="optimizedDisjunction" lowerBound="1"
14 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
15 transient="true"/>
11 </eClassifiers> 16 </eClassifiers>
12 <eClassifiers xsi:type="ecore:EClass" name="TransformedViatraWellformednessConstraint" 17 <eClassifiers xsi:type="ecore:EClass" name="TransformedViatraWellformednessConstraint"
13 eSuperTypes="../../hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation"> 18 eSuperTypes="../../hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//AssertionAnnotation">
@@ -16,4 +21,11 @@
16 <eClassifiers xsi:type="ecore:EClass" name="DefinedByDerivedFeature" eSuperTypes="../../hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation"> 21 <eClassifiers xsi:type="ecore:EClass" name="DefinedByDerivedFeature" eSuperTypes="../../hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore#//RelationAnnotation">
17 <eStructuralFeatures xsi:type="ecore:EReference" name="query" lowerBound="1" eType="#//TransfomedViatraQuery"/> 22 <eStructuralFeatures xsi:type="ecore:EReference" name="query" lowerBound="1" eType="#//TransfomedViatraQuery"/>
18 </eClassifiers> 23 </eClassifiers>
24 <eClassifiers xsi:type="ecore:EClass" name="VariableMapping">
25 <eStructuralFeatures xsi:type="ecore:EAttribute" name="sourcePVariable" lowerBound="1"
26 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"
27 transient="true"/>
28 <eStructuralFeatures xsi:type="ecore:EReference" name="targetLogicVariable" lowerBound="1"
29 eType="ecore:EClass ../../hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore#//Variable"/>
30 </eClassifiers>
19</ecore:EPackage> 31</ecore:EPackage>
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.genmodel b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.genmodel
index 7a367c7e..ccac6f83 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.genmodel
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.genmodel
@@ -8,9 +8,21 @@
8 <foreignModel>ViatraModelAnnotations.ecore</foreignModel> 8 <foreignModel>ViatraModelAnnotations.ecore</foreignModel>
9 <genPackages prefix="Viatra2LogicAnnotations" basePackage="hu.bme.mit.inf.dslreasoner.viatra2logic" 9 <genPackages prefix="Viatra2LogicAnnotations" basePackage="hu.bme.mit.inf.dslreasoner.viatra2logic"
10 disposableProviderFactory="true" ecorePackage="ViatraModelAnnotations.ecore#/"> 10 disposableProviderFactory="true" ecorePackage="ViatraModelAnnotations.ecore#/">
11 <genClasses ecoreClass="ViatraModelAnnotations.ecore#//TransfomedViatraQuery"/> 11 <genClasses ecoreClass="ViatraModelAnnotations.ecore#//TransfomedViatraQuery">
12 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ViatraModelAnnotations.ecore#//TransfomedViatraQuery/patternFullyQualifiedName"/>
13 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ViatraModelAnnotations.ecore#//TransfomedViatraQuery/patternPQuery"/>
14 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference ViatraModelAnnotations.ecore#//TransfomedViatraQuery/variableTrace"/>
15 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ViatraModelAnnotations.ecore#//TransfomedViatraQuery/optimizedDisjunction"/>
16 </genClasses>
12 <genClasses ecoreClass="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint"> 17 <genClasses ecoreClass="ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint">
13 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint/query"/> 18 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ViatraModelAnnotations.ecore#//TransformedViatraWellformednessConstraint/query"/>
14 </genClasses> 19 </genClasses>
20 <genClasses ecoreClass="ViatraModelAnnotations.ecore#//DefinedByDerivedFeature">
21 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ViatraModelAnnotations.ecore#//DefinedByDerivedFeature/query"/>
22 </genClasses>
23 <genClasses ecoreClass="ViatraModelAnnotations.ecore#//VariableMapping">
24 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute ViatraModelAnnotations.ecore#//VariableMapping/sourcePVariable"/>
25 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ViatraModelAnnotations.ecore#//VariableMapping/targetLogicVariable"/>
26 </genClasses>
15 </genPackages> 27 </genPackages>
16</genmodel:GenModel> 28</genmodel:GenModel>
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend
index 3e8b3366..b8c52af4 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Constraint2Logic.xtend
@@ -30,10 +30,20 @@ import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeCo
30 30
31import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 31import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint 32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.TypeFilterConstraint
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.AggregatorConstraint
34import org.eclipse.viatra.query.runtime.matchers.aggregators.DoubleSumOperator
35import org.eclipse.viatra.query.runtime.matchers.aggregators.IntegerSumOperator
36import org.eclipse.viatra.query.runtime.matchers.aggregators.LongSumOperator
37import org.eclipse.viatra.query.runtime.matchers.aggregators.ExtremumOperator
38import org.eclipse.viatra.query.runtime.matchers.aggregators.ExtremumOperator.Extreme
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.PatternMatchCounter
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation
33 41
34class Constraint2Logic { 42class Constraint2Logic {
35 val extension LogicProblemBuilder builder = new LogicProblemBuilder 43 val extension LogicProblemBuilder builder = new LogicProblemBuilder
36 val Ecore2Logic ecore2Logic 44 val Ecore2Logic ecore2Logic
45 val ExpressionEvaluation2Logic expressionEvaliation2Logic = new ExpressionEvaluation2Logic
46 val expressionExtractor = new XExpressionExtractor
37 47
38 new(Ecore2Logic ecore2Logic) { 48 new(Ecore2Logic ecore2Logic) {
39 this.ecore2Logic = ecore2Logic 49 this.ecore2Logic = ecore2Logic
@@ -269,6 +279,69 @@ class Constraint2Logic {
269 } else throw new IllegalArgumentException('''unknown tuple: «tuple»''') 279 } else throw new IllegalArgumentException('''unknown tuple: «tuple»''')
270 } 280 }
271 281
282 def dispatch Term transformConstraint(AggregatorConstraint constraint,
283 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
284 Viatra2LogicTrace viatra2LogicTrace,
285 Map<PVariable, Variable> variable2Variable,
286 Viatra2LogicConfiguration config)
287 {
288 val logicReferred = constraint.referredQuery.lookup(viatra2LogicTrace.query2Relation)
289 val parameterSubstitution = new LinkedList
290 for(index : 0..<constraint.actualParametersTuple.size) {
291 val term = (constraint.actualParametersTuple.get(index) as PVariable).lookup(variable2Variable)
292 parameterSubstitution += term
293 }
294 val aggregatorIndex = constraint.aggregatedColumn
295 val logicResultVariable = constraint.resultVariable.lookup(variable2Variable)
296 val type = constraint.aggregator.operator
297 if(type === null) {
298 return Count(logicReferred,parameterSubstitution,logicResultVariable)
299 } else if(type instanceof IntegerSumOperator || type instanceof DoubleSumOperator || type instanceof LongSumOperator){
300 return Sum(logicReferred,parameterSubstitution,aggregatorIndex,logicResultVariable)
301 } else if(type instanceof ExtremumOperator) {
302 if(type.name == Extreme.MIN.name.toLowerCase) {
303 return Min(logicReferred,parameterSubstitution,aggregatorIndex,logicResultVariable)
304 } else if(type.name == Extreme.MAX.name.toLowerCase){
305 return Max(logicReferred,parameterSubstitution,aggregatorIndex,logicResultVariable)
306 } else {
307 throw new UnsupportedOperationException('''Unkown Extremum aggregator type: «type.name»''')
308 }
309 } else {
310 throw new UnsupportedOperationException('''Unkown aggregator type: «type.name»''')
311 }
312 }
313
314 def dispatch Term transformConstraint(PatternMatchCounter constraint,
315 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
316 Viatra2LogicTrace viatra2LogicTrace,
317 Map<PVariable, Variable> variable2Variable,
318 Viatra2LogicConfiguration config)
319 {
320 val logicReferred = constraint.referredQuery.lookup(viatra2LogicTrace.query2Relation)
321 val parameterSubstitution = new LinkedList
322 for(index : 0..<constraint.actualParametersTuple.size) {
323 val term = (constraint.actualParametersTuple.get(index) as PVariable).lookup(variable2Variable)
324 parameterSubstitution += term
325 }
326 val logicResultVariable = constraint.resultVariable.lookup(variable2Variable)
327 return Count(logicReferred,parameterSubstitution,logicResultVariable)
328 }
329
330 def dispatch Term transformConstraint(ExpressionEvaluation constraint,
331 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
332 Viatra2LogicTrace viatra2LogicTrace,
333 Map<PVariable, Variable> variable2Variable,
334 Viatra2LogicConfiguration config)
335 {
336 val outputVariable = constraint.outputVariable
337 val expression = expressionExtractor.extractExpression(constraint.evaluator)
338 if(outputVariable === null) {
339 return expressionEvaliation2Logic.transformCheck(expression,variable2Variable)
340 } else {
341 return expressionEvaliation2Logic.transformEval(outputVariable,expression,variable2Variable)
342 }
343 }
344
272 def dispatch Term transformConstraint(PConstraint constraint, 345 def dispatch Term transformConstraint(PConstraint constraint,
273 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace, 346 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
274 Viatra2LogicTrace viatra2LogicTrace, 347 Viatra2LogicTrace viatra2LogicTrace,
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/ExampleRecreation.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/ExampleRecreation.java
new file mode 100644
index 00000000..a3d25ccf
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/ExampleRecreation.java
@@ -0,0 +1,120 @@
1package hu.bme.mit.inf.dslreasoner.viatra2logic;
2
3import java.util.HashMap;
4
5import com.microsoft.z3.*;
6
7public class ExampleRecreation {
8
9
10 public static void sudoku(Context ctx) {
11
12 // 9 * 9 int matrix
13 IntExpr[][] X = new IntExpr[9][];
14 for (int i = 0; i < 9; i++) {
15 X[i] = new IntExpr[9];
16 for (int j = 0; j < 9; j++) {
17 X[i][j] = (IntExpr) ctx.mkConst(ctx.mkSymbol("x_" + (i + 1) + "_" + (j + 1)), ctx.getIntSort());
18 }
19 }
20
21 // Cell value from 1 - 9
22 BoolExpr[][] cells = new BoolExpr[9][];
23 for (int i = 0; i < 9; i++) {
24 cells[i] = new BoolExpr[9];
25 for (int j = 0; j < 9; j++) {
26 cells[i][j] = ctx.mkAnd(ctx.mkLe(ctx.mkInt(1), X[i][j]), ctx.mkLe(X[i][j], ctx.mkInt(9)));
27 }
28 }
29
30 // Each value in a row is distinct
31 BoolExpr[] row = new BoolExpr[9];
32 for (int i = 0; i < 9; i++) {
33 row[i] = ctx.mkDistinct(X[i]);
34 }
35
36 // Each value in a col is distinct
37 BoolExpr[] col = new BoolExpr[9];
38 for (int j = 0; j < 9; j++) {
39 IntExpr[] one_col = new IntExpr[9];
40 for (int i = 0; i < 9; i++) {
41 one_col[i] = X[i][j];
42 }
43 col[j] = ctx.mkDistinct(one_col);
44 }
45
46
47 // Each value in a 3*3 square is distinct
48 BoolExpr[][] squares = new BoolExpr[3][];
49 for (int x = 0; x < 3; x++) {
50 squares[x] = new BoolExpr[3];
51 for (int y = 0; y < 3; y++) {
52 IntExpr[] square = new IntExpr[9];
53 for (int i = 0; i < 3; i++) {
54 for (int j = 0; j < 3; j++) {
55 square[3 * i + j] = X[3 * x + i][3 * y + j];
56 }
57 }
58 squares[x][y] = ctx.mkDistinct(square);
59 }
60 }
61
62 // Combine all conditions
63 BoolExpr sudoku = ctx.mkTrue();
64 for (BoolExpr[] e: cells) {
65 sudoku = ctx.mkAnd(ctx.mkAnd(e), sudoku);
66 }
67 sudoku = ctx.mkAnd(ctx.mkAnd(row), sudoku);
68 sudoku = ctx.mkAnd(ctx.mkAnd(col), sudoku);
69 for (BoolExpr[] e: squares) {
70 sudoku = ctx.mkAnd(ctx.mkAnd(e), sudoku);
71 }
72
73 int[][] instance = { { 0, 0, 0, 0, 9, 4, 0, 3, 0 },
74 { 0, 0, 0, 5, 1, 0, 0, 0, 7 }, { 0, 8, 9, 0, 0, 0, 0, 4, 0 },
75 { 0, 0, 0, 0, 0, 0, 2, 0, 8 }, { 0, 6, 0, 2, 0, 1, 0, 5, 0 },
76 { 1, 0, 2, 0, 0, 0, 0, 0, 0 }, { 0, 7, 0, 0, 0, 0, 5, 2, 0 },
77 { 9, 0, 0, 0, 6, 5, 0, 0, 0 }, { 0, 4, 0, 9, 7, 0, 0, 0, 0 } };
78
79 // Set assertions enforced by the instance
80 BoolExpr inst = ctx.mkTrue();
81 for (int i = 0; i < 9; i++) {
82 for (int j = 0; j < 9; j++) {
83 inst = ctx.mkAnd(inst, (BoolExpr) ctx.mkITE(ctx.mkEq(ctx.mkInt(instance[i][j]), ctx.mkInt(0)), ctx.mkTrue(), ctx.mkEq(X[i][j], ctx.mkInt(instance[i][j]))));
84 }
85 }
86
87 Solver s = ctx.mkSolver();
88 s.add(sudoku);
89 s.add(inst);
90
91 if (s.check() == Status.SATISFIABLE) {
92 Model m = s.getModel();
93 Expr[][] solution = new Expr[9][9];
94 for (int i = 0; i < 9; i++) {
95 for (int j = 0; j < 9; j++) {
96 solution[i][j] = m.evaluate(X[i][j], false);
97 }
98 }
99
100 System.out.println("Sudoku solution:\n");
101 for (int i = 0; i < 9; i++) {
102 for (int j = 0; j < 9; j++) {
103 System.out.print(solution[i][j] + " ");
104 }
105 System.out.println();
106 }
107 }
108 else {
109 System.out.println("No solution");
110 }
111 }
112
113 public static void main (String []args) {
114 HashMap<String, String> cfg = new HashMap<String, String>();
115 cfg.put("model", "true");
116 Context ctx = new Context(cfg);
117 sudoku(ctx);
118 }
119
120} \ No newline at end of file
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/ExpressionEvaluation2Logic.xtend b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/ExpressionEvaluation2Logic.xtend
new file mode 100644
index 00000000..b4303739
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/ExpressionEvaluation2Logic.xtend
@@ -0,0 +1,140 @@
1package hu.bme.mit.inf.dslreasoner.viatra2logic
2
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable
6import java.util.Map
7import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable
8import org.eclipse.xtext.xbase.XBinaryOperation
9import org.eclipse.xtext.xbase.XExpression
10import org.eclipse.xtext.xbase.XFeatureCall
11import org.eclipse.xtext.xbase.XMemberFeatureCall
12import org.eclipse.xtext.xbase.XNumberLiteral
13import org.eclipse.xtext.xbase.XUnaryOperation
14
15import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
16
17class ExpressionEvaluation2Logic {
18 val extension LogicProblemBuilder builder = new LogicProblemBuilder
19 val NumericProblemSolver numericSolver = new NumericProblemSolver
20
21 def Term transformCheck(XExpression expression, Map<PVariable, Variable> variable2Variable) {
22 return expression.transform(variable2Variable)
23 }
24
25 def Term transformEval(PVariable target, XExpression expression, Map<PVariable, Variable> variable2Variable) {
26// numericSolver.testIsNotSat(expression, expression.transform(variable2Variable));
27// numericSolver.testGetOneSol(expression, expression.transform(variable2Variable));
28// numericSolver.testGetOneSol2(expression, expression.transform(variable2Variable));
29// numericSolver.testGetOneSol3(expression, expression.transform(variable2Variable));
30// numericSolver.testIsSat(expression, expression.transform(variable2Variable));
31
32 return expression.transform(variable2Variable)
33 }
34
35 static val N_Base = "org.eclipse.xtext.xbase.lib."
36
37 static val N_PLUS1 = "operator_plus"
38 static val N_MINUS1 = "operator_minus"
39
40 static val N_MINUS2 = "operator_minus"
41 static val N_PLUS2 = "operator_plus"
42 static val N_POWER = "operator_power"
43 static val N_MULTIPLY = "operator_multiply"
44 static val N_DIVIDE = "operator_divide"
45 static val N_MODULO = "operator_modulo"
46 static val N_LESSTHAN = "operator_lessThan"
47 static val N_LESSEQUALSTHAN = "operator_lessEqualsThan"
48 static val N_GREATERTHAN = "operator_greaterThan"
49 static val N_GREATEREQUALTHAN = "operator_greaterEqualsThan"
50 static val N_EQUALS = "operator_equals"
51 static val N_NOTEQUALS = "operator_notEquals"
52 static val N_EQUALS3 = "operator_tripleEquals"
53 static val N_NOTEQUALS3 = "operator_tripleNotEquals"
54
55
56
57 protected def isN(String name, String s) {
58 val res = name.startsWith(N_Base) && name.endsWith(s)
59 //println('''[«res»] «name» ?= «N_Base»*«s»''')
60 return res
61 }
62
63 static val N_POWER2 = "java.lang.Math.pow"
64
65 def protected dispatch Term transform(XBinaryOperation e, Map<PVariable, Variable> variable2Variable) {
66 val left = e.leftOperand.transform(variable2Variable)
67 val right = e.rightOperand.transform(variable2Variable)
68 val feature = e.feature.qualifiedName
69 if(feature.isN(N_MINUS2)) { return Minus(left,right) }
70 else if(feature.isN(N_PLUS2)) { return Plus(left,right) }
71 else if(feature.isN(N_POWER)) { return Pow(left,right) }
72 else if(feature.isN(N_MULTIPLY)) { return Multiply(left,right) }
73 else if(feature.isN(N_DIVIDE)) { return Divide(left,right) }
74 else if(feature.isN(N_MODULO)) { return Modulo(left,right) }
75 else if(feature.isN(N_LESSTHAN)) { return LessThan(left,right) }
76 else if(feature.isN(N_LESSEQUALSTHAN)) { return LessOrEqual(left,right) }
77 else if(feature.isN(N_GREATERTHAN)) { return MoreThan(left,right) }
78 else if(feature.isN(N_GREATEREQUALTHAN)) { return MoreOrEqual(left,right) }
79 else if(feature.isN(N_EQUALS)) { return Equals(left,right) }
80 else if(feature.isN(N_NOTEQUALS)) { return Distinct(left,right) }
81 else if(feature.isN(N_EQUALS3)) { return Equals(left,right) }
82 else if(feature.isN(N_NOTEQUALS3)) { return Distinct(left,right) }
83 else {
84 println("-> " + e.feature+","+e.class)
85 println("-> " + e.leftOperand)
86 println("-> " + e.rightOperand)
87 println("-> " + e.feature.qualifiedName)
88 throw new UnsupportedOperationException('''Unsupported binary operator feature: "«e.feature.class.simpleName»" - «e»''')
89 }
90 }
91
92 def protected dispatch Term transform(XUnaryOperation e, Map<PVariable, Variable> variable2Variable) {
93 val operand = e.operand.transform(variable2Variable)
94 val feature = e.feature.qualifiedName
95 if(feature.isN(N_MINUS1)) { return Minus(0.asTerm,operand)}
96 else if(feature.isN(N_PLUS1)) { return operand}
97 else{
98 println("-> " + e.feature+","+e.class)
99 println("-> " + e.operand)
100 println("-> " + e.feature.qualifiedName)
101 throw new UnsupportedOperationException('''Unsupported unary operator feature: "«e.feature.class.simpleName»" - «e»''')
102 }
103 }
104
105 def protected dispatch Term transform(XMemberFeatureCall e, Map<PVariable, Variable> variable2Variable) {
106 val transformedArguments = e.actualArguments.map[transform(variable2Variable)]
107 val feature = e.feature.qualifiedName
108 if(feature == N_POWER2) {
109 return Pow(transformedArguments.get(0),transformedArguments.get(1))
110 }else {
111 println(e.feature+","+e.class)
112 println(e.actualArguments.join(", "))
113 println(e.feature.qualifiedName)
114 throw new UnsupportedOperationException('''Unsupported feature call: "«e.feature.qualifiedName»" - «e»''')
115 }
116 }
117
118 def protected dispatch Term transform(XFeatureCall e, Map<PVariable,Variable> variable2Variable) {
119 val featureName = e.feature.qualifiedName
120 val entryWithName = variable2Variable.entrySet.filter[it.key.name == featureName].head
121 if(entryWithName !== null) {
122 return entryWithName.value.toTerm
123 } else {
124 throw new IllegalArgumentException('''Feature call reference to unavailable variable "«featureName»"''')
125 }
126 }
127
128 def protected dispatch Term transform(XNumberLiteral l, Map<PVariable, Variable> variable2Variable) {
129 val s = l.value
130 try{ return Integer.parseInt(s).asTerm } catch(NumberFormatException e){}
131 try{ return Short.parseShort(s).asTerm } catch(NumberFormatException e){}
132 try{ return Double.parseDouble(s).asTerm } catch(NumberFormatException e){}
133 try{ return Float.parseFloat(s).asTerm } catch(NumberFormatException e){}
134 throw new UnsupportedOperationException('''Unsupported numeric type: "«s»"''')
135 }
136
137 def protected dispatch Term transform(XExpression e, Map<PVariable, Variable> variable2Variable) {
138 throw new UnsupportedOperationException('''Unsupported expression: "«e.class.simpleName»" - «e»''')
139 }
140} \ No newline at end of file
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/FakeIntegerElement.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/FakeIntegerElement.java
new file mode 100644
index 00000000..7b8634c4
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/FakeIntegerElement.java
@@ -0,0 +1,169 @@
1package hu.bme.mit.inf.dslreasoner.viatra2logic;
2
3import java.lang.reflect.InvocationTargetException;
4
5import org.eclipse.emf.common.notify.Adapter;
6import org.eclipse.emf.common.notify.Notification;
7import org.eclipse.emf.common.util.EList;
8import org.eclipse.emf.common.util.TreeIterator;
9import org.eclipse.emf.ecore.EClass;
10import org.eclipse.emf.ecore.EObject;
11import org.eclipse.emf.ecore.EOperation;
12import org.eclipse.emf.ecore.EReference;
13import org.eclipse.emf.ecore.EStructuralFeature;
14import org.eclipse.emf.ecore.resource.Resource;
15
16import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition;
17import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PrimitiveElement;
18
19public class FakeIntegerElement implements PrimitiveElement{
20
21 public FakeIntegerElement() {
22
23 }
24
25 @Override
26 public EList<TypeDefinition> getDefinedInType() {
27 // TODO Auto-generated method stub
28 return null;
29 }
30
31 @Override
32 public String getName() {
33 // TODO Auto-generated method stub
34 return null;
35 }
36
37 @Override
38 public void setName(String value) {
39 // TODO Auto-generated method stub
40
41 }
42
43 @Override
44 public EClass eClass() {
45 // TODO Auto-generated method stub
46 return null;
47 }
48
49 @Override
50 public Resource eResource() {
51 // TODO Auto-generated method stub
52 return null;
53 }
54
55 @Override
56 public EObject eContainer() {
57 // TODO Auto-generated method stub
58 return null;
59 }
60
61 @Override
62 public EStructuralFeature eContainingFeature() {
63 // TODO Auto-generated method stub
64 return null;
65 }
66
67 @Override
68 public EReference eContainmentFeature() {
69 // TODO Auto-generated method stub
70 return null;
71 }
72
73 @Override
74 public EList<EObject> eContents() {
75 // TODO Auto-generated method stub
76 return null;
77 }
78
79 @Override
80 public TreeIterator<EObject> eAllContents() {
81 // TODO Auto-generated method stub
82 return null;
83 }
84
85 @Override
86 public boolean eIsProxy() {
87 // TODO Auto-generated method stub
88 return false;
89 }
90
91 @Override
92 public EList<EObject> eCrossReferences() {
93 // TODO Auto-generated method stub
94 return null;
95 }
96
97 @Override
98 public Object eGet(EStructuralFeature feature) {
99 // TODO Auto-generated method stub
100 return null;
101 }
102
103 @Override
104 public Object eGet(EStructuralFeature feature, boolean resolve) {
105 // TODO Auto-generated method stub
106 return null;
107 }
108
109 @Override
110 public void eSet(EStructuralFeature feature, Object newValue) {
111 // TODO Auto-generated method stub
112
113 }
114
115 @Override
116 public boolean eIsSet(EStructuralFeature feature) {
117 // TODO Auto-generated method stub
118 return false;
119 }
120
121 @Override
122 public void eUnset(EStructuralFeature feature) {
123 // TODO Auto-generated method stub
124
125 }
126
127 @Override
128 public Object eInvoke(EOperation operation, EList<?> arguments) throws InvocationTargetException {
129 // TODO Auto-generated method stub
130 return null;
131 }
132
133 @Override
134 public EList<Adapter> eAdapters() {
135 // TODO Auto-generated method stub
136 return null;
137 }
138
139 @Override
140 public boolean eDeliver() {
141 // TODO Auto-generated method stub
142 return false;
143 }
144
145 @Override
146 public void eSetDeliver(boolean deliver) {
147 // TODO Auto-generated method stub
148
149 }
150
151 @Override
152 public void eNotify(Notification notification) {
153 // TODO Auto-generated method stub
154
155 }
156
157 @Override
158 public boolean isValueSet() {
159 // TODO Auto-generated method stub
160 return false;
161 }
162
163 @Override
164 public void setValueSet(boolean value) {
165 // TODO Auto-generated method stub
166
167 }
168
169}
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericProblemSolver.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericProblemSolver.java
new file mode 100644
index 00000000..0b249962
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericProblemSolver.java
@@ -0,0 +1,473 @@
1package hu.bme.mit.inf.dslreasoner.viatra2logic;
2
3import java.math.BigDecimal;
4import java.util.ArrayList;
5import java.util.HashMap;
6import java.util.HashSet;
7import java.util.List;
8import java.util.Map;
9import java.util.Map.Entry;
10import java.util.Random;
11import java.util.Set;
12
13import org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint;
14import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
15import org.eclipse.xtext.common.types.JvmIdentifiableElement;
16import org.eclipse.xtext.xbase.XBinaryOperation;
17import org.eclipse.xtext.xbase.XExpression;
18import org.eclipse.xtext.xbase.XFeatureCall;
19import org.eclipse.xtext.xbase.XNumberLiteral;
20
21import com.microsoft.z3.ArithExpr;
22import com.microsoft.z3.BoolExpr;
23import com.microsoft.z3.Context;
24import com.microsoft.z3.Expr;
25import com.microsoft.z3.IntExpr;
26import com.microsoft.z3.Model;
27import com.microsoft.z3.RealExpr;
28import com.microsoft.z3.Solver;
29import com.microsoft.z3.Status;
30import com.microsoft.z3.enumerations.Z3_ast_print_mode;
31
32import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term;
33import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.IntegerElement;
34import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RealElement;
35import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PrimitiveElement;
36
37
38public class NumericProblemSolver {
39 private static final String N_Base = "org.eclipse.xtext.xbase.lib.";
40 private static final String N_PLUS = "operator_plus";
41 private static final String N_MINUS = "operator_minus";
42 private static final String N_POWER = "operator_power";
43 private static final String N_MULTIPLY = "operator_multiply";
44 private static final String N_DIVIDE = "operator_divide";
45 private static final String N_MODULO = "operator_modulo";
46 private static final String N_LESSTHAN = "operator_lessThan";
47 private static final String N_LESSEQUALSTHAN = "operator_lessEqualsThan";
48 private static final String N_GREATERTHAN = "operator_greaterThan";
49 private static final String N_GREATEREQUALTHAN = "operator_greaterEqualsThan";
50 private static final String N_EQUALS = "operator_equals";
51 private static final String N_NOTEQUALS = "operator_notEquals";
52 private static final String N_EQUALS3 = "operator_tripleEquals";
53 private static final String N_NOTEQUALS3 = "operator_tripleNotEquals";
54
55
56 private Context ctx;
57 private Solver s;
58 private Map<Object, Expr> varMap;
59
60 long endformingProblem=0;
61 long endSolvingProblem=0;
62 long endFormingSolution=0;
63
64 public NumericProblemSolver() {
65 HashMap<String, String> cfg = new HashMap<String, String>();
66 cfg.put("model", "true");
67 ctx = new Context(cfg);
68 ctx.setPrintMode(Z3_ast_print_mode.Z3_PRINT_SMTLIB_FULL);
69 s = ctx.mkSolver();
70 varMap = new HashMap<Object, Expr>();
71 }
72
73 public Context getNumericProblemContext() {
74 return ctx;
75 }
76
77 public long getEndformingProblem() {
78 return endformingProblem;
79 }
80
81 public long getEndSolvingProblem() {
82 return endSolvingProblem;
83 }
84
85 public long getEndFormingSolution() {
86 return endFormingSolution;
87 }
88
89 private ArrayList<JvmIdentifiableElement> getJvmIdentifiableElements(XExpression expression) {
90 ArrayList<JvmIdentifiableElement> allElem = new ArrayList<JvmIdentifiableElement>();
91 XExpression left = ((XBinaryOperation) expression).getLeftOperand();
92 XExpression right = ((XBinaryOperation) expression).getRightOperand();
93
94 getJvmIdentifiableElementsHelper(left, allElem);
95 getJvmIdentifiableElementsHelper(right, allElem);
96 return allElem;
97 }
98
99 private void getJvmIdentifiableElementsHelper(XExpression e, List<JvmIdentifiableElement> allElem) {
100 if (e instanceof XFeatureCall) {
101 allElem.add(((XFeatureCall) e).getFeature());
102 } else if (e instanceof XBinaryOperation) {
103 getJvmIdentifiableElementsHelper(((XBinaryOperation) e).getLeftOperand(), allElem);
104 getJvmIdentifiableElementsHelper(((XBinaryOperation) e).getRightOperand(), allElem);
105 }
106 }
107
108 public boolean isSatisfiable(Map<XExpression, Iterable<Map<JvmIdentifiableElement,PrimitiveElement>>> matches) throws Exception {
109 long startformingProblem = System.nanoTime();
110 BoolExpr problemInstance = formNumericProblemInstance(matches);
111 s.add(problemInstance);
112 endformingProblem = System.nanoTime()-startformingProblem;
113 long startSolvingProblem = System.nanoTime();
114 boolean result = (s.check() == Status.SATISFIABLE);
115 endSolvingProblem = System.nanoTime()-startSolvingProblem;
116 this.ctx.close();
117 return result;
118 }
119
120 public Map<PrimitiveElement,Number> getOneSolution(List<PrimitiveElement> objs, Map<XExpression, Iterable<Map<JvmIdentifiableElement,PrimitiveElement>>> matches) throws Exception {
121 Map<PrimitiveElement,Number> sol = new HashMap<PrimitiveElement, Number>();
122 long startformingProblem = System.nanoTime();
123 BoolExpr problemInstance = formNumericProblemInstance(matches);
124 endformingProblem = System.nanoTime()-startformingProblem;
125 //System.out.println("Forming problem: " + (endformingProblem - startformingProblem));
126 s.add(problemInstance);
127 long startSolvingProblem = System.nanoTime();
128 if (s.check() == Status.SATISFIABLE) {
129 Model m = s.getModel();
130 endSolvingProblem = System.nanoTime()-startSolvingProblem;
131 //System.out.println("Solving problem: " + (endSolvingProblem - startSolvingProblem));
132 long startFormingSolution = System.nanoTime();
133 for (PrimitiveElement o: objs) {
134 if(varMap.containsKey(o)) {
135 if (o instanceof IntegerElement) {
136 IntExpr val =(IntExpr) m.evaluate(varMap.get(o), false);
137 Integer oSol = Integer.parseInt(val.toString());
138 sol.put(o, oSol);
139 } else {
140 RealExpr val = (RealExpr) m.evaluate(varMap.get(o), false);
141 Double oSol = Double.parseDouble(val.toString());
142 sol.put(o, oSol);
143 }
144 //System.out.println("Solution:" + o + "->" + oSol);
145
146 } else {
147 //System.out.println("not used var:" + o);
148 }
149 }
150 endFormingSolution = System.nanoTime()-startFormingSolution;
151 //System.out.println("Forming solution: " + (endFormingSolution - startFormingSolution));
152 } else {
153 System.out.println("Unsatisfiable numerical problem");
154 }
155 this.ctx.close();
156 return sol;
157 }
158
159 private BoolExpr formNumericConstraint(XExpression e, Map<JvmIdentifiableElement, PrimitiveElement> aMatch) throws Exception {
160 if (!(e instanceof XBinaryOperation)) {
161 throw new Exception ("error in check expression!!!");
162 }
163
164 String name = ((XBinaryOperation) e).getFeature().getQualifiedName();
165
166 BoolExpr constraint = null;
167
168 ArithExpr left_operand = formNumericConstraintHelper(((XBinaryOperation) e).getLeftOperand(), aMatch);
169 ArithExpr right_operand = formNumericConstraintHelper(((XBinaryOperation) e).getRightOperand(), aMatch);
170
171 if (nameEndsWith(name, N_LESSTHAN)) {
172 constraint = ctx.mkLt(left_operand, right_operand);
173 } else if (nameEndsWith(name, N_LESSEQUALSTHAN)) {
174 constraint = ctx.mkLe(left_operand, right_operand);
175 } else if (nameEndsWith(name, N_GREATERTHAN)) {
176 constraint = ctx.mkGt(left_operand, right_operand);
177 } else if (nameEndsWith(name, N_GREATEREQUALTHAN)) {
178 constraint = ctx.mkGe(left_operand, right_operand);
179 } else if (nameEndsWith(name, N_EQUALS)) {
180 constraint = ctx.mkEq(left_operand, right_operand);
181 } else if (nameEndsWith(name, N_NOTEQUALS)) {
182 constraint = ctx.mkDistinct(left_operand, right_operand);
183 } else if (nameEndsWith(name, N_EQUALS3)) {
184 constraint = ctx.mkGe(left_operand, right_operand); // ???
185 } else if (nameEndsWith(name, N_NOTEQUALS3)) {
186 constraint = ctx.mkGe(left_operand, right_operand); // ???
187 } else {
188 throw new Exception ("Unsupported binary operation " + name);
189 }
190
191 return constraint;
192 }
193
194 private ArithExpr formNumericConstraintHelper(XExpression e, Map<JvmIdentifiableElement, PrimitiveElement> aMatch) throws Exception {
195 ArithExpr expr = null;
196 // Variables
197 if (e instanceof XFeatureCall) {
198 PrimitiveElement matchedObj = aMatch.get(((XFeatureCall) e).getFeature());
199 boolean isInt = matchedObj instanceof IntegerElement;
200 if (!matchedObj.isValueSet()) {
201 if (varMap.get(matchedObj) == null) {
202 String var_name = ((XFeatureCall) e).getFeature().getQualifiedName() + matchedObj.toString();
203 if (isInt) {
204 expr = (ArithExpr) ctx.mkConst(ctx.mkSymbol(var_name), ctx.getIntSort());
205 } else {
206 expr = (ArithExpr) ctx.mkConst(ctx.mkSymbol(var_name), ctx.getRealSort());
207 }
208 varMap.put(matchedObj, expr);
209 } else {
210 expr = (ArithExpr) varMap.get(matchedObj);
211 }
212 } else {
213 if (isInt) {
214 int value = ((IntegerElement) matchedObj).getValue();
215 expr = (ArithExpr) ctx.mkInt(value);
216 } else {
217 double value = ((RealElement) matchedObj).getValue().doubleValue();
218 expr = (ArithExpr) ctx.mkReal(String.valueOf(value));
219 }
220 varMap.put(matchedObj, expr);
221 }
222 }
223 // Constants
224 else if (e instanceof XNumberLiteral) {
225 String value = ((XNumberLiteral) e).getValue();
226 try{
227 int val = Integer.parseInt(value);
228 expr = (ArithExpr) ctx.mkInt(val);
229 } catch(NumberFormatException err){
230 try{
231 expr = (ArithExpr) ctx.mkReal(value);
232 } catch(NumberFormatException err2){}
233 }
234 }
235 // Expressions with operators
236 else if (e instanceof XBinaryOperation) {
237 String name = ((XBinaryOperation) e).getFeature().getQualifiedName();
238 ArithExpr left_operand = formNumericConstraintHelper(((XBinaryOperation) e).getLeftOperand(), aMatch);
239 ArithExpr right_operand = formNumericConstraintHelper(((XBinaryOperation) e).getRightOperand(), aMatch);
240
241 if (nameEndsWith(name, N_PLUS)) {
242 expr = ctx.mkAdd(left_operand, right_operand);
243 } else if (nameEndsWith(name, N_MINUS)) {
244 expr = ctx.mkAdd(left_operand, ctx.mkUnaryMinus(right_operand));
245 } else if (nameEndsWith(name, N_POWER)) {
246 expr = ctx.mkPower(left_operand, right_operand);
247 } else if (nameEndsWith(name, N_MULTIPLY)) {
248 expr = ctx.mkMul(left_operand, right_operand);
249 } else if (nameEndsWith(name, N_DIVIDE)) {
250 expr = ctx.mkDiv(left_operand, right_operand);
251 } else if (nameEndsWith(name, N_MODULO)) {
252 expr = ctx.mkMod((IntExpr)left_operand, (IntExpr)right_operand);
253 } else {
254 throw new Exception ("Unsupported binary operation " + name);
255 }
256 } else {
257 throw new Exception ("Unsupported expression " + e.getClass().getSimpleName());
258 }
259 return expr;
260
261 }
262
263 private boolean nameEndsWith(String name, String end) {
264 return name.startsWith(N_Base) && name.endsWith(end);
265 }
266
267 private BoolExpr formNumericProblemInstance(Map<XExpression, Iterable<Map<JvmIdentifiableElement,PrimitiveElement>>> matches) throws Exception {
268 BoolExpr constraintInstances = ctx.mkTrue();
269 for (XExpression e: matches.keySet()) {
270 Iterable<Map<JvmIdentifiableElement, PrimitiveElement>> matchSets = matches.get(e);
271 for (Map<JvmIdentifiableElement, PrimitiveElement> aMatch: matchSets) {
272 BoolExpr constraintInstance = ctx.mkNot(formNumericConstraint(e, aMatch));
273 constraintInstances = ctx.mkAnd(constraintInstances, constraintInstance);
274 }
275 }
276 return constraintInstances;
277 }
278
279
280 /*
281 public void testIsSat(XExpression expression, Term t) throws Exception {
282 int count = 10000;
283 Map<XExpression, Set<Map<JvmIdentifiableElement,PrimitiveElement>>> matches = new HashMap<XExpression, Set<Map<JvmIdentifiableElement,PrimitiveElement>>>();
284 Set<Map<JvmIdentifiableElement,PrimitiveElement>> matchSet = new HashSet<Map<JvmIdentifiableElement,PrimitiveElement>>();
285 ArrayList<JvmIdentifiableElement> allElem = getJvmIdentifiableElements(expression);
286
287 for (int i = 0; i < count; i++) {
288 Map<JvmIdentifiableElement,PrimitiveElement> match = new HashMap<JvmIdentifiableElement,PrimitiveElement>();
289 for (JvmIdentifiableElement e: allElem) {
290 FakeIntegerElement intE = new FakeIntegerElement();
291 match.put(e, intE);
292 }
293 matchSet.add(match);
294 }
295
296 matches.put(expression, matchSet);
297 long start = System.currentTimeMillis();
298 boolean sat = isSatisfiable(matches);
299 long end = System.currentTimeMillis();
300 System.out.println(sat);
301 System.out.println("Number of matches: " + count);
302 System.out.println("Running time:" + (end - start));
303 }
304
305 public void testIsNotSat(XExpression expression, Term t) throws Exception {
306 Map<XExpression, Set<Map<JvmIdentifiableElement,PrimitiveElement>>> matches = new HashMap<XExpression, Set<Map<JvmIdentifiableElement,PrimitiveElement>>>();
307 Set<Map<JvmIdentifiableElement,PrimitiveElement>> matchSet = new HashSet<Map<JvmIdentifiableElement,PrimitiveElement>>();
308 Map<JvmIdentifiableElement,PrimitiveElement> match = new HashMap<JvmIdentifiableElement,PrimitiveElement>();
309 ArrayList<JvmIdentifiableElement> allElem = getJvmIdentifiableElements(expression);
310 FakeIntegerElement int1 = null;
311 FakeIntegerElement int2 = null;
312 boolean first = true;
313 for (JvmIdentifiableElement e: allElem) {
314 FakeIntegerElement intE = new FakeIntegerElement();
315 if (first) {
316 int1 = intE;
317 first = false;
318 } else {
319 int2 = intE;
320 }
321
322 match.put(e, intE);
323 }
324 matchSet.add(match);
325
326 Map<JvmIdentifiableElement,PrimitiveElement> match2 = new HashMap<JvmIdentifiableElement,PrimitiveElement>();
327 boolean first2 = true;
328 for (JvmIdentifiableElement e: allElem) {
329 if (first2) {
330 match2.put(e, int2);
331 first2 = false;
332 } else {
333 match2.put(e, int1);
334 }
335 }
336 matchSet.add(match2);
337
338 matches.put(expression, matchSet);
339 long start = System.currentTimeMillis();
340 boolean sat = isSatisfiable(matches);
341 long end = System.currentTimeMillis();
342 System.out.println(sat);
343 System.out.println("Number of matches: ");
344 System.out.println("Running time:" + (end - start));
345 }
346 */
347
348 /* public void testGetOneSol(XExpression expression, Term t) throws Exception {
349 int count = 10;
350 Map<XExpression, Iterable<Map<JvmIdentifiableElement,PrimitiveElement>>> matches = new HashMap<XExpression, Iterable<Map<JvmIdentifiableElement,PrimitiveElement>>>();
351 Iterable<Map<JvmIdentifiableElement,PrimitiveElement>> matchSet = new ArrayList<Map<JvmIdentifiableElement,PrimitiveElement>>();
352
353 ArrayList<JvmIdentifiableElement> allElem = getJvmIdentifiableElements(expression);
354 List<PrimitiveElement> obj = new ArrayList<PrimitiveElement>();
355
356 for (int i = 0; i < count; i++) {
357 Map<JvmIdentifiableElement,PrimitiveElement> match = new HashMap<JvmIdentifiableElement,PrimitiveElement>();
358 for (JvmIdentifiableElement e: allElem) {
359 FakeIntegerElement intE = new FakeIntegerElement();
360 obj.add(intE);
361 match.put(e, intE);
362 }
363 ((ArrayList) matchSet).add(match);
364 matches.put(expression, matchSet);
365 }
366
367 long start = System.currentTimeMillis();
368 Map<PrimitiveElement,Integer> sol = getOneSolution(obj, matches);
369 long end = System.currentTimeMillis();
370
371
372 // Print sol
373 for (Object o: sol.keySet()) {
374 System.out.println(o + " :" + sol.get(o));
375 }
376
377
378 System.out.println("Number of matches: " + count);
379 System.out.println("Running time:" + (end - start));
380 }*/
381 /*
382 public void testGetOneSol2(XExpression expression, Term t) throws Exception {
383 int count = 250;
384 Map<XExpression, Set<Map<JvmIdentifiableElement,PrimitiveElement>>> matches = new HashMap<XExpression, Set<Map<JvmIdentifiableElement,PrimitiveElement>>>();
385 Set<Map<JvmIdentifiableElement,PrimitiveElement>> matchSet = new HashSet<Map<JvmIdentifiableElement,PrimitiveElement>>();
386 ArrayList<JvmIdentifiableElement> allElem = getJvmIdentifiableElements(expression);
387 List<Object> obj = new ArrayList<Object>();
388 for (int i = 0; i < count; i++) {
389 Map<JvmIdentifiableElement,PrimitiveElement> match = new HashMap<JvmIdentifiableElement,PrimitiveElement>();
390 FakeIntegerElement int2 = null;
391 boolean first = false;
392 for (JvmIdentifiableElement e: allElem) {
393 FakeIntegerElement intE = new FakeIntegerElement();
394 if (first) {
395 first = false;
396 } else {
397 int2 = intE;
398 }
399 obj.add(intE);
400 match.put(e, intE);
401 }
402
403 Map<JvmIdentifiableElement,PrimitiveElement> match2 = new HashMap<JvmIdentifiableElement,PrimitiveElement>();
404 boolean first2 = true;
405 for (JvmIdentifiableElement e: allElem) {
406 FakeIntegerElement intE = null;
407 if (first2) {
408 intE = int2;
409 first2 = false;
410 } else {
411 intE = new FakeIntegerElement();
412 }
413 obj.add(intE);
414 match2.put(e, intE);
415 }
416
417
418 matchSet.add(match);
419 matchSet.add(match2);
420 }
421 matches.put(expression, matchSet);
422
423 System.out.println("Number of matches: " + matchSet.size());
424 for (int i = 0; i < 10; i++) {
425 Map<Object,Integer> sol = getOneSolution(obj, matches);
426 System.out.println("**********************");
427 Thread.sleep(3000);
428 }
429 }
430
431 public void testGetOneSol3(XExpression expression, Term t) throws Exception {
432 int count = 15000;
433 Random rand = new Random();
434 Map<XExpression, Set<Map<JvmIdentifiableElement,PrimitiveElement>>> matches = new HashMap<XExpression, Set<Map<JvmIdentifiableElement,PrimitiveElement>>>();
435 Set<Map<JvmIdentifiableElement,PrimitiveElement>> matchSet = new HashSet<Map<JvmIdentifiableElement,PrimitiveElement>>();
436 ArrayList<JvmIdentifiableElement> allElem = getJvmIdentifiableElements(expression);
437 List<Object> obj = new ArrayList<Object>();
438 for (int i = 0; i < count; i++) {
439 Map<JvmIdentifiableElement,PrimitiveElement> match = new HashMap<JvmIdentifiableElement,PrimitiveElement>();
440 if (obj.size() > 1) {
441 for (JvmIdentifiableElement e: allElem) {
442 FakeIntegerElement intE = null;
443 int useOld = rand.nextInt(10);
444 if (useOld == 1) {
445 System.out.println("here ");
446 int index = rand.nextInt(obj.size());
447 intE = (FakeIntegerElement) obj.get(index);
448 } else {
449 intE = new FakeIntegerElement();
450 }
451 obj.add(intE);
452 match.put(e, intE);
453 }
454 } else {
455 for (JvmIdentifiableElement e: allElem) {
456 FakeIntegerElement intE = new FakeIntegerElement();
457 obj.add(intE);
458 match.put(e, intE);
459 }
460 }
461 matchSet.add(match);
462 }
463 matches.put(expression, matchSet);
464
465 System.out.println("Number of matches: " + matchSet.size());
466 for (int i = 0; i < 10; i++) {
467 Map<Object,Integer> sol = getOneSolution(obj, matches);
468 System.out.println("**********************");
469 Thread.sleep(3000);
470 }
471 }
472 */
473}
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericTranslator.xtend b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericTranslator.xtend
new file mode 100644
index 00000000..81bc1796
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericTranslator.xtend
@@ -0,0 +1,80 @@
1package hu.bme.mit.inf.dslreasoner.viatra2logic
2
3import org.eclipse.xtext.xbase.XExpression
4import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation
5import org.eclipse.xtext.common.types.JvmIdentifiableElement
6import java.util.Set
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PrimitiveElement
8import java.util.Map
9import com.microsoft.z3.BoolExpr
10import org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint
11import java.util.Map.Entry
12import org.eclipse.xtext.xbase.XFeatureCall
13import java.util.Comparator
14import java.util.ArrayList
15import java.util.HashMap
16import java.util.List
17
18class NumericTranslator {
19
20 private XExpressionExtractor extractor = new XExpressionExtractor();
21
22 long formingProblemTime=0;
23 long solvingProblemTime=0;
24 long formingSolutionTime=0;
25
26 val comparator = new Comparator<JvmIdentifiableElement>(){
27 override compare(JvmIdentifiableElement o1, JvmIdentifiableElement o2) {
28 //println('''«o1.simpleName» - «o2.simpleName»''')
29 o1.simpleName.compareTo(o2.simpleName)
30 }
31 }
32 def Map<JvmIdentifiableElement, PrimitiveElement> arrayToMap(Object[] tuple, ArrayList<JvmIdentifiableElement> variablesInOrder) {
33 val res = new HashMap
34 for(var i=0; i<tuple.length; i++) {
35 res.put(variablesInOrder.get(i),tuple.get(i) as PrimitiveElement)
36 }
37 return res
38 }
39 def formNumericProblemInstance(Map<PConstraint, Iterable<Object[]>> matches) throws Exception {
40 val res = new HashMap
41 for (Entry<PConstraint, Iterable<Object[]>> entry: matches.entrySet()) {
42 val ExpressionEvaluation constraint = entry.getKey() as ExpressionEvaluation;
43 val XExpression expression = extractor.extractExpression(constraint.getEvaluator());
44 val Iterable<Object[]> tuples = entry.getValue();
45 val features = expression.eAllContents.filter(XFeatureCall).map[it.feature].toSet
46 val variablesInOrder = new ArrayList(features)
47 variablesInOrder.toList.sort(comparator)
48 //println(variablesInOrder)
49 val map = tuples.map[it.arrayToMap(variablesInOrder)]
50 res.put(expression,map)
51 }
52 return res
53 }
54
55 def delegateIsSatisfiable(Map<PConstraint, Iterable<Object[]>> matches) {
56 val input = formNumericProblemInstance(matches)
57 val solver = new NumericProblemSolver
58 val satisfiability = solver.isSatisfiable(input)
59 solver.updateTimes
60 return satisfiability
61 }
62
63 def delegateGetSolution(List<PrimitiveElement> primitiveElements, Map<PConstraint, Iterable<Object[]>> matches) {
64 val input = formNumericProblemInstance(matches)
65 val solver = new NumericProblemSolver
66 val solution = solver.getOneSolution(primitiveElements,input)
67 solver.updateTimes
68 return solution
69 }
70
71 private def updateTimes(NumericProblemSolver s) {
72 this.formingProblemTime += s.getEndformingProblem
73 this.solvingProblemTime += s.getEndSolvingProblem
74 this.formingSolutionTime += s.getEndFormingSolution
75 }
76
77 def getFormingProblemTime() {formingProblemTime}
78 def getSolvingProblemTime() {solvingProblemTime}
79 def getFormingSolutionTime() {formingSolutionTime}
80} \ No newline at end of file
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2Logic.xtend b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2Logic.xtend
index 3b828170..74e03f71 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2Logic.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2Logic.xtend
@@ -4,48 +4,36 @@ import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
4import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace 4import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace
5import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder 5import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
6import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput 6import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.PrimitiveTypeReference
9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition 7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
11import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeReference
12import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable 8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable
13import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem 9import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
14import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery 10import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery
15import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsFactory 11import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsFactory
16import java.util.ArrayList 12import java.util.ArrayList
17import java.util.HashMap 13import java.util.HashMap
18import java.util.HashSet
19import java.util.LinkedList 14import java.util.LinkedList
20import java.util.List 15import java.util.List
21import java.util.Map 16import java.util.Map
22import java.util.Set 17import java.util.Set
23import org.eclipse.emf.ecore.EAttribute 18import org.eclipse.emf.ecore.EAttribute
24import org.eclipse.emf.ecore.EClassifier
25import org.eclipse.emf.ecore.EEnum
26import org.eclipse.emf.ecore.EReference 19import org.eclipse.emf.ecore.EReference
27import org.eclipse.emf.ecore.EStructuralFeature 20import org.eclipse.emf.ecore.EStructuralFeature
28import org.eclipse.emf.ecore.EcorePackage 21import org.eclipse.emf.ecore.util.EcoreUtil
29import org.eclipse.viatra.query.runtime.api.IQuerySpecification 22import org.eclipse.viatra.query.runtime.api.IQuerySpecification
30import org.eclipse.viatra.query.runtime.emf.EMFQueryMetaContext 23import org.eclipse.viatra.query.runtime.emf.EMFQueryMetaContext
31import org.eclipse.viatra.query.runtime.emf.types.BaseEMFTypeKey
32import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey
33import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey
34import org.eclipse.viatra.query.runtime.matchers.context.IInputKey
35import org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey
36import org.eclipse.viatra.query.runtime.matchers.planning.helpers.TypeHelper
37import org.eclipse.viatra.query.runtime.matchers.psystem.PBody 24import org.eclipse.viatra.query.runtime.matchers.psystem.PBody
25import org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint
38import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable 26import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable
27import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.AggregatorConstraint
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall 28import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall
29import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.PatternMatchCounter
30import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PDisjunction
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter 31import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery 32import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
42import org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PBodyNormalizer 33import org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.PBodyNormalizer
43import org.eclipse.xtend.lib.annotations.Data 34import org.eclipse.xtend.lib.annotations.Data
44 35
45import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 36import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
46import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PDisjunction
47import org.eclipse.emf.ecore.util.EcoreUtil
48import org.eclipse.viatra.query.runtime.emf.types.EClassUnscopedTransitiveInstancesKey
49 37
50@Data class ViatraQuerySetDescriptor { 38@Data class ViatraQuerySetDescriptor {
51 val List<? extends IQuerySpecification<?>> patterns 39 val List<? extends IQuerySpecification<?>> patterns
@@ -57,24 +45,24 @@ class Viatra2LogicTrace {
57 public val Map<PQuery, RelationDefinition> query2Relation = new HashMap 45 public val Map<PQuery, RelationDefinition> query2Relation = new HashMap
58 public val Map<PQuery, TransfomedViatraQuery> query2Annotation = new HashMap 46 public val Map<PQuery, TransfomedViatraQuery> query2Annotation = new HashMap
59 public val Map<Pair<PQuery,PParameter>, Variable> parameter2Variable = new HashMap 47 public val Map<Pair<PQuery,PParameter>, Variable> parameter2Variable = new HashMap
60 //public val Map<PVariable, Variable> variable2Variable = new HashMap
61} 48}
62class Viatra2LogicConfiguration { 49class Viatra2LogicConfiguration {
63 public var normalize = true 50 public var normalize = true
64 public var transitiveClosureDepth = 3
65} 51}
66 52
67class Viatra2Logic { 53class Viatra2Logic {
68 val extension LogicProblemBuilder builder = new LogicProblemBuilder 54 val extension LogicProblemBuilder builder = new LogicProblemBuilder
69 val extension Viatra2LogicAnnotationsFactory factory = Viatra2LogicAnnotationsFactory.eINSTANCE 55 val extension Viatra2LogicAnnotationsFactory factory = Viatra2LogicAnnotationsFactory.eINSTANCE
70 val normalizer = new PBodyNormalizer(EMFQueryMetaContext.DEFAULT) 56 val normalizer = new PBodyNormalizer(EMFQueryMetaContext.DEFAULT)
57 val Viatra2LogicTypeInferer typeInferer
71 58
72 val Ecore2Logic ecore2Logic 59 val Ecore2Logic ecore2Logic
73 Constraint2Logic constraint2Logic 60 Constraint2Logic constraint2Logic
74 61
75 new(Ecore2Logic ecore2Logic) { 62 new(Ecore2Logic ecore2Logic) {
76 this.ecore2Logic = ecore2Logic 63 this.ecore2Logic = ecore2Logic
77 constraint2Logic = new Constraint2Logic(ecore2Logic) 64 this.typeInferer = new Viatra2LogicTypeInferer(ecore2Logic)
65 this.constraint2Logic = new Constraint2Logic(ecore2Logic)
78 } 66 }
79 67
80 def TracedOutput<LogicProblem,Viatra2LogicTrace> transformQueries( 68 def TracedOutput<LogicProblem,Viatra2LogicTrace> transformQueries(
@@ -82,65 +70,55 @@ class Viatra2Logic {
82 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace, 70 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
83 Viatra2LogicConfiguration config) 71 Viatra2LogicConfiguration config)
84 { 72 {
73 // Create trace
85 val viatra2LogicTrace = new Viatra2LogicTrace 74 val viatra2LogicTrace = new Viatra2LogicTrace
86 val typeAlanysis = new HashMap 75
76 // Translation works on PQueries. QuerySpecification -> PQuery.
87 val pQueries = queries.patterns.map[it.internalQueryRepresentation] 77 val pQueries = queries.patterns.map[it.internalQueryRepresentation]
88 78
89 for(query: pQueries) { 79 // If requested, the queries are normalized
90 val disjunction = normalizer.rewrite(query) 80 for(query: pQueries) {
81 val disjunction = normalizer.rewrite(query)
91 viatra2LogicTrace.query2Disjunction.put(query,disjunction) 82 viatra2LogicTrace.query2Disjunction.put(query,disjunction)
92 } 83 }
93 84
94 for(query: pQueries) { 85 // The types are calculated
95 val types = query.lookup(viatra2LogicTrace.query2Disjunction).bodies.toInvertedMap[ 86 val types = typeInferer.inferTypes(pQueries,ecore2LogicTrace,viatra2LogicTrace)
96 TypeHelper::inferUnaryTypesFor(it.uniqueVariables,it.constraints,EMFQueryMetaContext.DEFAULT)
97 ]
98// for(m : types.values) {
99// for(n: m.entrySet) {
100// val variable = n.key
101// println(''' - «variable.name»''')
102// for(type : n.value) {
103// println('''«variable.name» - «type»''')
104// }
105// }
106//
107// }
108
109 typeAlanysis.put(query,types)
110 }
111 87
88 // First, the signature of the queries are translated, ...
112 for(query: pQueries) { 89 for(query: pQueries) {
113 try { 90 try {
114 this.transformQueryHeader(query,query.lookup(typeAlanysis),ecore2LogicTrace,viatra2LogicTrace,config) 91 this.transformQueryHeader(query,types,ecore2LogicTrace,viatra2LogicTrace,config)
115 } catch(IllegalArgumentException e) { 92 } catch(IllegalArgumentException e) {
116 throw new IllegalArgumentException(''' 93 throw new IllegalArgumentException('''
117 Unable to translate query "«query.fullyQualifiedName»". 94 Unable to translate query "«query.fullyQualifiedName»".
118 Reason: «e.class.simpleName», «e.message»''',e) 95 Reason: «e.class.simpleName», «e.message»''',e)
119 } 96 }
120 } 97 }
98
99 // ...then the bodies, ...
121 for(query: pQueries) { 100 for(query: pQueries) {
122 try { 101 try {
123 this.transformQuerySpecification(query,query.lookup(typeAlanysis),ecore2LogicTrace,viatra2LogicTrace,config) 102 this.transformQuerySpecification(query,types,ecore2LogicTrace,viatra2LogicTrace,config)
124 } catch (IllegalArgumentException e){ 103 } catch (IllegalArgumentException e){
125 throw new IllegalArgumentException(''' 104 throw new IllegalArgumentException('''
126 Unable to translate query "«query.fullyQualifiedName»". 105 Unable to translate query "«query.fullyQualifiedName»".
127 Reason: «e.class.simpleName», «e.message»''',e) 106 Reason: «e.class.simpleName», «e.message»''',e)
128 } 107 }
129 } 108 }
130 /*for(d : viatra2LogicTrace.query2Relation.values) {
131 checkDefinition(d)
132 }*/
133 109
110 // ... and finally, the annotations.
134 transformQueryConstraints( 111 transformQueryConstraints(
135 queries.validationPatterns.map[internalQueryRepresentation], 112 queries.validationPatterns.map[internalQueryRepresentation],
136 queries.derivedFeatures, 113 queries.derivedFeatures,
137 ecore2LogicTrace,viatra2LogicTrace) 114 ecore2LogicTrace,viatra2LogicTrace)
115
138 return new TracedOutput(ecore2LogicTrace.output,viatra2LogicTrace) 116 return new TracedOutput(ecore2LogicTrace.output,viatra2LogicTrace)
139 } 117 }
140 118
141 def protected transformQueryHeader( 119 def protected transformQueryHeader(
142 PQuery pquery, 120 PQuery pquery,
143 Map<PBody, Map<PVariable, Set<IInputKey>>> types, 121 Viatra2LogicTypeResult types,
144 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace, 122 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
145 Viatra2LogicTrace viatra2LogicTrace, 123 Viatra2LogicTrace viatra2LogicTrace,
146 Viatra2LogicConfiguration config) 124 Viatra2LogicConfiguration config)
@@ -149,7 +127,7 @@ class Viatra2Logic {
149 val parameters = new ArrayList<Variable>(pquery.parameters.size) 127 val parameters = new ArrayList<Variable>(pquery.parameters.size)
150 for(vParam: pquery.parameters) { 128 for(vParam: pquery.parameters) {
151 val parameterName = '''parameter «vParam.name»''' 129 val parameterName = '''parameter «vParam.name»'''
152 val parameterType = getType(vParam,types,ecore2LogicTrace) 130 val parameterType = types.getType(pquery,vParam)
153 if(parameterType === null) { 131 if(parameterType === null) {
154 throw new AssertionError('''null type for parameter «vParam.name» in pattern «pquery.fullyQualifiedName»''') 132 throw new AssertionError('''null type for parameter «vParam.name» in pattern «pquery.fullyQualifiedName»''')
155 } 133 }
@@ -166,6 +144,7 @@ class Viatra2Logic {
166 it.target = lRelation 144 it.target = lRelation
167 it.patternFullyQualifiedName = pquery.fullyQualifiedName 145 it.patternFullyQualifiedName = pquery.fullyQualifiedName
168 it.patternPQuery = pquery 146 it.patternPQuery = pquery
147 it.optimizedDisjunction = viatra2LogicTrace.query2Disjunction.get(pquery)
169 ] 148 ]
170 viatra2LogicTrace.query2Annotation.put(pquery,annotation) 149 viatra2LogicTrace.query2Annotation.put(pquery,annotation)
171 ecore2LogicTrace.output.annotations += annotation 150 ecore2LogicTrace.output.annotations += annotation
@@ -175,7 +154,7 @@ class Viatra2Logic {
175 154
176 def protected transformQuerySpecification( 155 def protected transformQuerySpecification(
177 PQuery pquery, 156 PQuery pquery,
178 Map<PBody, Map<PVariable, Set<IInputKey>>> types, 157 Viatra2LogicTypeResult types,
179 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace, 158 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
180 Viatra2LogicTrace viatra2LogicTrace, 159 Viatra2LogicTrace viatra2LogicTrace,
181 Viatra2LogicConfiguration config) 160 Viatra2LogicConfiguration config)
@@ -233,7 +212,7 @@ class Viatra2Logic {
233 } 212 }
234 213
235 def transformBody(PBody body, 214 def transformBody(PBody body,
236 Map<PBody, Map<PVariable, Set<IInputKey>>> types, 215 Viatra2LogicTypeResult types,
237 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace, 216 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
238 Viatra2LogicTrace viatra2LogicTrace, 217 Viatra2LogicTrace viatra2LogicTrace,
239 Viatra2LogicConfiguration config) 218 Viatra2LogicConfiguration config)
@@ -248,19 +227,33 @@ class Viatra2Logic {
248 // Inner Variables 227 // Inner Variables
249 val innerPositiveVariables = new LinkedList 228 val innerPositiveVariables = new LinkedList
250 val innerNegativeVariables = new LinkedList 229 val innerNegativeVariables = new LinkedList
230 val innerAggreatedVariables = new LinkedList
231 //println(body.uniqueVariables)
251 for(innerVariable : body.uniqueVariables) { 232 for(innerVariable : body.uniqueVariables) {
252 233
253 if(!variable2Variable.containsKey(innerVariable)) { 234 if(!variable2Variable.containsKey(innerVariable)) {
254 val name = '''variable «innerVariable.name.normalizeName»''' 235 if(innerVariable.aggregateOnly) {
255 //println(body.pattern.fullyQualifiedName + "-") 236 // do not create variable
256 val logicType = getType(innerVariable,types,ecore2LogicTrace) 237 innerAggreatedVariables.add(innerVariable)
257 val logicVariable = createVar(name,logicType) 238 variable2Variable.put(innerVariable,null)
258 if(innerVariable.isPositiveVariable) {
259 innerPositiveVariables += logicVariable
260 } else { 239 } else {
261 innerNegativeVariables += logicVariable 240 val name = '''variable «innerVariable.name.normalizeName»'''
241 val logicType = types.getType(body,innerVariable)
242 if(logicType === null) {
243 throw new IllegalArgumentException('''Variable «innerVariable.name.normalizeName» has no type!''')
244 }
245 val logicVariable = createVar(name,logicType)
246 if(innerVariable.negativeOnly) {
247 innerNegativeVariables += logicVariable
248 } else {
249 innerPositiveVariables += logicVariable
250 }
251 variable2Variable.put(innerVariable,logicVariable)
252 body.pattern.lookup(viatra2LogicTrace.query2Annotation).variableTrace += createVariableMapping=>[
253 it.sourcePVariable = innerVariable
254 it.targetLogicVariable = logicVariable
255 ]
262 } 256 }
263 variable2Variable.put(innerVariable,logicVariable)
264 } 257 }
265 } 258 }
266 259
@@ -279,229 +272,39 @@ class Viatra2Logic {
279 } else { 272 } else {
280 Exists(innerPositiveVariables,allNegativeVariablesAreSatisfied); 273 Exists(innerPositiveVariables,allNegativeVariablesAreSatisfied);
281 } 274 }
282 275
283 return allVariablesAreExisting 276 return allVariablesAreExisting
284 } 277 }
285// def toTypeJudgement(PVariable v, IInputKey key) {
286// new TypeJudgement(key,new Tuple1)
287// }
288 278
289 def private normalizeName(String variableName) { 279 def private normalizeName(String variableName) {
290 return variableName.replaceAll("[\\W]|_", "") 280 return variableName.replaceAll("[\\W]|_", "")
291 } 281 }
292
293 /**
294 * Translates the type of a parameter variable in a pattern
295 */
296 def TypeReference getType(PParameter v, Map<PBody, Map<PVariable, Set<IInputKey>>> types, TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace) {
297 // If parameter type is specified then the specified type is used
298 if(v.declaredUnaryType !== null) {
299 val res = transformTypeReference(v.declaredUnaryType,ecore2LogicTrace)
300 if(res === null) {
301 throw new AssertionError('''
302 Unable to translate declared type «v.declaredUnaryType».
303 ''')
304 } else {
305 return res
306 }
307 }
308 // Otherwise, calculate the type based on the type of the variable in the bodies
309 else {
310 val bodies = types.keySet
311 val typesFromBodies = new ArrayList(bodies.size)
312 for(body : bodies) {
313 // collect the variable in the body
314 val exported = body.symbolicParameters.filter[it.patternParameter === v]
315 if(exported.size !== 1) {
316 throw new AssertionError('''Parameter «v.name» has no reference in body!''')
317 }
318 val variable = exported.head.parameterVariable
319 typesFromBodies+=variable.getType(types,ecore2LogicTrace)
320 }
321 return typesFromBodies.calculateCommonSupertype
322 }
323 }
324
325 /**
326 * Translates the type of a variable in a pattern body
327 */
328 def TypeReference getType(PVariable v, Map<PBody, Map<PVariable, Set<IInputKey>>> types ,TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace) {
329 if (v.isPositiveVariable) {
330 val keys = getTypesFromCollection(v,types)
331 val logicTypes = keys.map[transformTypeReference(it,ecore2LogicTrace)].filterNull
332 return logicTypes.calculateCommonSubtype
333 } else {
334 val onlyConstraint = v.referringConstraints.head as NegativePatternCall
335 val indexOfVariable = v.lookup(onlyConstraint.actualParametersTuple.invertIndex)
336 val parameter = onlyConstraint.referredQuery.parameters.get(indexOfVariable)
337 val declaredUnaryType = parameter.declaredUnaryType as BaseEMFTypeKey<? extends EClassifier>
338 if (declaredUnaryType === null) {
339 throw new UnsupportedOperationException(
340 '''parameter «parameter.name» in pattern «onlyConstraint.referredQuery.fullyQualifiedName» does not have type!''')
341 } else
342 return declaredUnaryType.transformTypeReference(ecore2LogicTrace)
343 }
344 }
345
346 def getTypesFromCollection(PVariable v, Map<PBody, Map<PVariable, Set<IInputKey>>> types) {
347 for(entry : types.entrySet) {
348 if(entry.key.uniqueVariables.contains(v)) {
349 return v.lookup(entry.value)
350 }
351 }
352 throw new IllegalArgumentException('''Variable «v.name» is not present in neither of the bodies!''')
353 }
354
355 282
356 def TypeReference calculateCommonSubtype(Iterable<TypeReference> types) { 283 def isNegativeOnly(PVariable variable) {
357 val primitiveTypeReferences = types.filter(PrimitiveTypeReference) 284 if(variable.referringConstraints.size == 1) {
358 val complexTypeReferences = types.filter(ComplexTypeReference) 285 val PConstraint onlyConstraint = variable.referringConstraints.head
359 if(complexTypeReferences.isEmpty) { 286 if(onlyConstraint instanceof NegativePatternCall) {
360 val head = primitiveTypeReferences.head 287 return true
361 if(primitiveTypeReferences.exists[it.eClass !== head.eClass]) { 288 } else {
362 throw new IllegalArgumentException('''Inconsistent types: «primitiveTypeReferences.map[eClass.name].toSet.toList»''') 289 return false
363 }
364 return head
365 } else if(primitiveTypeReferences.isEmpty) {
366 val complexTypes = complexTypeReferences.map[it.referred].toSet
367 if(complexTypes.size === 1) {
368 return builder.toTypeReference(complexTypes.head)
369 }
370 // Collect possible subtypes
371 val subtypeSets = complexTypes.map[it.transitiveClosureStar[it.subtypes].toSet]
372 val commonTypeSet = new HashSet(subtypeSets.head)
373 val otherSets = subtypeSets.tail
374 for(otherSet : otherSets) {
375 commonTypeSet.retainAll(otherSet)
376 }
377 if(commonTypeSet.empty) {
378 throw new IllegalArgumentException('''Inconsistent types: «complexTypes.map[name].toList»''')
379 }
380
381 return calculateCommonComplexSupertype(commonTypeSet)
382
383 } else {
384 throw new IllegalArgumentException('''
385 Inconsistent types, mixing primitive and complex types:
386 «primitiveTypeReferences.map[eClass.name].toSet.toList»
387 and
388 «complexTypeReferences.map[it.referred].toSet.map[name].toList»''')
389
390 }
391 }
392 def TypeReference calculateCommonSupertype(Iterable<TypeReference> types) {
393 val primitiveTypeReferences = types.filter(PrimitiveTypeReference)
394 val complexTypeReferences = types.filter(ComplexTypeReference)
395 if(complexTypeReferences.isEmpty) {
396 val head = primitiveTypeReferences.head
397 if(primitiveTypeReferences.exists[it.eClass !== head.eClass]) {
398 throw new IllegalArgumentException('''Inconsistent types: «primitiveTypeReferences.map[eClass.name].toSet.toList»''')
399 }
400 return head
401 } else if(primitiveTypeReferences.isEmpty) {
402 val complexTypes = complexTypeReferences.map[it.referred].toSet
403 return calculateCommonComplexSupertype(complexTypes)
404
405 } else {
406 throw new IllegalArgumentException('''
407 Inconsistent types, mixing primitive and complex types:
408 «primitiveTypeReferences.map[eClass.name].toSet.toList»
409 and
410 «complexTypeReferences.map[it.referred].toSet.map[name].toList»''')
411
412 }
413 }
414 def TypeReference calculateCommonComplexSupertype(Set<Type> complexTypes) {
415 if(complexTypes.size === 1) {
416 return builder.toTypeReference(complexTypes.head)
417 }
418 // Collect possible supertypes
419 val supertypeSets = complexTypes.map[it.transitiveClosureStar[it.supertypes].toSet]
420 val commonTypeSet = new HashSet(supertypeSets.head)
421 val otherSets = supertypeSets.tail
422 for(otherSet : otherSets) {
423 commonTypeSet.retainAll(otherSet)
424 }
425 if(commonTypeSet.empty) {
426 throw new IllegalArgumentException('''Inconsistent types: «complexTypes.map[name].toList»''')
427 }
428 // Remove type that already have covered
429 val coveredTypes = commonTypeSet.map[it.supertypes].flatten
430 commonTypeSet.removeAll(coveredTypes)
431 return builder.toTypeReference(commonTypeSet.head)
432 }
433
434 /**
435 * Transforms a Viatra type reference to a logic type.
436 */
437 def dispatch TypeReference transformTypeReference(EDataTypeInSlotsKey k,TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace) {
438 val w = k.wrappedKey
439 if(w == EcorePackage.Literals.EINT || w == EcorePackage.Literals.ESHORT || w == EcorePackage.Literals.ELONG) {
440 return builder.LogicInt
441 } else if(w == EcorePackage.Literals.EDOUBLE || w == EcorePackage.Literals.EFLOAT) {
442 return builder.LogicReal
443 } else if(w == EcorePackage.Literals.EBOOLEAN) {
444 return builder.LogicBool
445 } else if(w == EcorePackage.Literals.ESTRING) {
446 return builder.LogicString
447 } else if(w instanceof EEnum) {
448 val c = this.ecore2Logic.TypeofEEnum(ecore2LogicTrace.trace,w)
449 return builder.toTypeReference(c);
450 } else throw new UnsupportedOperationException('''Unknown reference type «w.class.name»''')
451 }
452 def dispatch TypeReference transformTypeReference(JavaTransitiveInstancesKey k,TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace) {
453 val c = k.wrapperInstanceClass
454 if(c == Integer || c == Long || c == Short) {
455 return LogicInt
456 } else if(c == Float || c == Double) {
457 return LogicReal
458 } else if(c == Boolean) {
459 return LogicBool
460 } else if(c == String) {
461 return LogicString
462 } else if(c.superclass == java.lang.Enum){
463 val enums = ecore2Logic.allEnumsInScope(ecore2LogicTrace.trace)
464 for(enum : enums) {
465 if(c == enum.instanceClass) {
466 return builder.toTypeReference(ecore2Logic.TypeofEEnum(ecore2LogicTrace.trace,enum))
467 }
468 } 290 }
469 throw new IllegalArgumentException('''Enum type «c.simpleName» is not mapped to logic!''')
470 }
471 return null
472 }
473 def dispatch TypeReference transformTypeReference(EClassTransitiveInstancesKey k,TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace) {
474 val c = k.wrappedKey
475
476 if(this.ecore2Logic.allClassesInScope(ecore2LogicTrace.trace).toList.contains(c)) {
477 return builder.toTypeReference(this.ecore2Logic.TypeofEClass(ecore2LogicTrace.trace,k.wrappedKey))
478 } else { 291 } else {
479 return null 292 return false
480 } 293 }
481 } 294 }
482 def dispatch TypeReference transformTypeReference(EClassUnscopedTransitiveInstancesKey k, TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace) {
483 val c = k.wrappedKey
484
485 if(this.ecore2Logic.allClassesInScope(ecore2LogicTrace.trace).toList.contains(c)) {
486 return builder.toTypeReference(this.ecore2Logic.TypeofEClass(ecore2LogicTrace.trace,k.wrappedKey))
487 } else {
488 return null
489 }
490 }
491
492 def dispatch TypeReference transformTypeReference(IInputKey k,TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace) {
493 //println(k)
494 throw new IllegalArgumentException('''Unsupported type: «k.class.simpleName»''')
495 }
496 295
497 def boolean isPositiveVariable(PVariable v) { 296 def isAggregateOnly(PVariable variable) {
498 val constraints = v.referringConstraints 297 if(variable.referringConstraints.size == 1) {
499 if(constraints.size == 1) { 298 val PConstraint onlyConstraint = variable.referringConstraints.head
500 val onlyConstraint = constraints.head 299 if(onlyConstraint instanceof AggregatorConstraint) {
501 if(onlyConstraint instanceof NegativePatternCall) { 300 return true
301 } else if(onlyConstraint instanceof PatternMatchCounter) {
302 return true
303 } else {
502 return false 304 return false
503 } 305 }
306 } else {
307 return false
504 } 308 }
505 return true
506 } 309 }
507} \ No newline at end of file 310} \ No newline at end of file
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2LogicTypeInferer.xtend b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2LogicTypeInferer.xtend
new file mode 100644
index 00000000..b8a6b9c1
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2LogicTypeInferer.xtend
@@ -0,0 +1,392 @@
1package hu.bme.mit.inf.dslreasoner.viatra2logic
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.builder.LogicProblemBuilder
6import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.IntTypeReference
9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.PrimitiveTypeReference
10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RealTypeReference
11import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
12import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeReference
13import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
14import java.util.HashMap
15import java.util.HashSet
16import java.util.List
17import java.util.Set
18import org.eclipse.emf.ecore.EEnum
19import org.eclipse.emf.ecore.EcorePackage
20import org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguageStandaloneSetup
21import org.eclipse.viatra.query.patternlanguage.emf.specification.XBaseEvaluator
22import org.eclipse.viatra.query.runtime.emf.EMFQueryMetaContext
23import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey
24import org.eclipse.viatra.query.runtime.emf.types.EClassUnscopedTransitiveInstancesKey
25import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey
26import org.eclipse.viatra.query.runtime.matchers.context.IInputKey
27import org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey
28import org.eclipse.viatra.query.runtime.matchers.planning.helpers.TypeHelper
29import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator
30import org.eclipse.viatra.query.runtime.matchers.psystem.PBody
31import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.AggregatorConstraint
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.PatternCallBasedDeferred
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.PatternMatchCounter
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
38import org.eclipse.xtext.xbase.XExpression
39import org.eclipse.xtext.xbase.typesystem.IBatchTypeResolver
40import org.eclipse.xtext.xbase.typesystem.references.UnknownTypeReference
41
42import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
43import org.eclipse.xtext.xbase.typesystem.references.InnerTypeReference
44
45class Viatra2LogicTypeInferer{
46 val Ecore2Logic ecore2Logic
47 val extension LogicProblemBuilder builder = new LogicProblemBuilder
48 /**Typeresolver uses the same resolver as EMFPatternLanguageStandaloneSetup.*/
49 val IBatchTypeResolver typeResolver =
50 (new EMFPatternLanguageStandaloneSetup).createInjector.getInstance(IBatchTypeResolver)
51 val expressionExtractor = new XExpressionExtractor
52
53 new(Ecore2Logic ecore2Logic) {
54 this.ecore2Logic = ecore2Logic
55 }
56
57 def Viatra2LogicTypeResult inferTypes(List<PQuery> pQueries, TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace, Viatra2LogicTrace viatra2LogicTrace) {
58 val Viatra2LogicTypeResult result = new Viatra2LogicTypeResult(new HashMap,new HashMap);
59 for(query : pQueries) {
60 for(body: query.lookup(viatra2LogicTrace.query2Disjunction).bodies) {
61 for(variable : body.uniqueVariables) {
62 getOrMakeTypeDecision(result,variable,body,ecore2LogicTrace,viatra2LogicTrace,emptySet)
63 }
64 }
65 for(parameter: query.parameters) {
66 getOrMakeTypeDecision(result,query,parameter,ecore2LogicTrace,viatra2LogicTrace,emptySet)
67 }
68 }
69 return result
70 }
71
72 private def TypeReference getOrMakeTypeDecision(
73 Viatra2LogicTypeResult result,
74 PVariable variable, PBody body,
75 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
76 Viatra2LogicTrace viatra2LogicTrace,
77 Set<? extends PParameter> checkedInDecisionMaking)
78 {
79 if(result.containsSolution(body,variable)) {
80 return result.getType(body,variable)
81 } else {
82 val inferredTypesByViatra = TypeHelper::inferUnaryTypesFor(body.uniqueVariables, body.constraints, EMFQueryMetaContext.DEFAULT)
83 val constraintsForVariable = variable.lookup(inferredTypesByViatra)
84
85 val typeConstraintsDerivedByTypeHelper = constraintsForVariable.map[transformTypeReference(ecore2LogicTrace)]
86 val typesFromEval = variable.getTypesFromEval(typeResolver)
87 val typesFromAggregatorResult = variable.getTypeFromPassivePatternCallConstraintResult(
88 result,
89 ecore2LogicTrace,
90 viatra2LogicTrace,
91 checkedInDecisionMaking)
92
93 val typesFromPositiveReasoning = (typeConstraintsDerivedByTypeHelper + typesFromEval + typesFromAggregatorResult).filterNull
94
95 val types = if(!typesFromPositiveReasoning.empty) {
96 typesFromPositiveReasoning
97 } else {
98 variable.getTypeFromPassivePatternCallConstraints(
99 result,
100 ecore2LogicTrace,
101 viatra2LogicTrace,
102 checkedInDecisionMaking)
103 }
104
105 val commonSubtype = this.calculateCommonSubtype(types)
106
107 result.addType(body,variable,commonSubtype)
108 return commonSubtype
109 }
110 }
111
112 private def TypeReference getOrMakeTypeDecision(
113 Viatra2LogicTypeResult result,
114 PQuery query,
115 PParameter parameter,
116 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
117 Viatra2LogicTrace viatra2LogicTrace,
118 Set<? extends PParameter> checkedInDecisionMaking)
119 {
120 if(checkedInDecisionMaking.contains(parameter)) {
121 return null
122 }
123 if(result.containsSolution(parameter)) {
124 return result.getType(query, parameter)
125 }
126
127 var TypeReference typeReference;
128
129 if(parameter.declaredUnaryType !== null) {
130 val key = parameter.declaredUnaryType
131 typeReference = key.transformTypeReference(ecore2LogicTrace)
132 } else {
133 val bodies = query.lookup(viatra2LogicTrace.query2Disjunction).bodies
134 val newChecked = new HashSet(checkedInDecisionMaking) => [add(parameter)]
135 val Iterable<TypeReference> variableTypes = bodies.map[body|
136 val symbolicParameter = body.symbolicParameters.filter[patternParameter === parameter].head
137 val variable = symbolicParameter.parameterVariable
138 getOrMakeTypeDecision(result,variable,body,ecore2LogicTrace,viatra2LogicTrace,newChecked)
139 ]
140 typeReference = calculateCommonSupertype(variableTypes)
141 }
142 result.addType(query,parameter,typeReference)
143 return typeReference
144 }
145
146 private def Iterable<? extends TypeReference> getTypesFromEval(PVariable v, IBatchTypeResolver typeResolver) {
147 val constraints = v.getReferringConstraintsOfType(
148 typeof(ExpressionEvaluation)
149 ).filter[
150 it.outputVariable === v
151 ]
152 val res = constraints.map[getTypeFromEval]
153 return res
154 }
155
156 def TypeReference getTypeFromEval(ExpressionEvaluation evaluation) {
157 val XExpression expression = expressionExtractor.extractExpression(evaluation.evaluator)
158 val returnType = typeResolver.resolveTypes(expression).getReturnType(expression);
159 if(returnType === null || returnType instanceof UnknownTypeReference) {
160 return null
161 } else {
162 val javaIdentifier = returnType.wrapperTypeIfPrimitive.javaIdentifier
163 if(javaIdentifier == Boolean.name) {
164 return LogicBool
165 } else if(javaIdentifier == Integer.name || javaIdentifier == Short.name) {
166 return LogicInt
167 } else if(javaIdentifier == Double.name || javaIdentifier == Float.name){
168 return LogicReal
169 } else if(javaIdentifier == String.name) {
170 return LogicString
171 } else {
172 throw new UnsupportedOperationException('''Unsupported eval type: "«javaIdentifier»"!''')
173 }
174 }
175 }
176
177 private def getTypeFromPassivePatternCallConstraintResult(
178 PVariable v,
179 Viatra2LogicTypeResult result,
180 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
181 Viatra2LogicTrace viatra2LogicTrace,
182 Set<? extends PParameter> checkedInDecisionMaking
183 ) {
184 val referringConstraints = v.referringConstraints
185
186 val referringCountMatcherTargeting = referringConstraints
187 .filter(PatternMatchCounter)
188 .filter[it.resultVariable === v]
189 .map[builder.LogicInt]
190 val referringAggregatorConstraintsTargeting = referringConstraints
191 .filter(AggregatorConstraint)
192 .filter[it.resultVariable === v]
193 .map[ // get the type of the referred column
194 getOrMakeTypeDecision(
195 result,
196 it.referredQuery,
197 it.referredQuery.parameters.get(aggregatedColumn),
198 ecore2LogicTrace,
199 viatra2LogicTrace,
200 checkedInDecisionMaking)]
201
202 return referringCountMatcherTargeting + referringAggregatorConstraintsTargeting
203 }
204
205 private def getTypeFromPassivePatternCallConstraints(
206 PVariable v,
207 Viatra2LogicTypeResult result,
208 TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace,
209 Viatra2LogicTrace viatra2LogicTrace,
210 Set<? extends PParameter> checkedInDecisionMaking
211 ) {
212 val referringConstraints = v.referringConstraints
213 if(referringConstraints.size === 1) {
214 val onlyConstraint = referringConstraints.head
215
216 if(onlyConstraint instanceof PatternCallBasedDeferred) {
217 val indexOfVariable = v.lookup(onlyConstraint.actualParametersTuple.invertIndex)
218 val parameter = onlyConstraint.referredQuery.parameters.get(indexOfVariable)
219 val res = getOrMakeTypeDecision(result, onlyConstraint.referredQuery, parameter, ecore2LogicTrace,viatra2LogicTrace,checkedInDecisionMaking)
220 return #[res]
221 } else {
222 throw new IllegalArgumentException('''A non-PatternCallBasedDeferred type constraint is referring to the variable "«v.name»"!''')
223 }
224 } else {
225 throw new IllegalArgumentException('''Multiple («referringConstraints.size», «FOR c:referringConstraints SEPARATOR ", "»«c»«ENDFOR») constraints are referring to variable "«v.name»", but no type is inferred!''')
226 }
227 }
228
229 def TypeReference calculateCommonSubtype(Iterable<TypeReference> types) {
230 val primitiveTypeReferences = types.filter(PrimitiveTypeReference)
231 val complexTypeReferences = types.filter(ComplexTypeReference)
232 if(complexTypeReferences.isEmpty) {
233 // If there is an int type, ...
234 if(primitiveTypeReferences.exists[it instanceof IntTypeReference]) {
235 // ... and all types are either real or int, then return int!
236 if(primitiveTypeReferences.forall[it instanceof RealTypeReference || it instanceof IntTypeReference]) {
237 return primitiveTypeReferences.filter(IntTypeReference).head
238 }
239 // Otherwise, the types are inconsistent, because they mixing numeric and non-numeric types.
240 else throw new IllegalArgumentException('''Inconsistent types: «primitiveTypeReferences.map[eClass.name].toSet.toList»''')
241 }
242 // If there is no Real, then the types should be homogenious
243 val head = primitiveTypeReferences.head
244 if(primitiveTypeReferences.exists[it.eClass !== head.eClass]) {
245 throw new IllegalArgumentException('''Inconsistent types: «primitiveTypeReferences.map[eClass.name].toSet.toList»''')
246 }
247 return head
248 } else if(primitiveTypeReferences.isEmpty) {
249 val complexTypes = complexTypeReferences.map[it.referred].toSet
250 if(complexTypes.size === 1) {
251 return builder.toTypeReference(complexTypes.head)
252 }
253 // Collect possible subtypes
254 val subtypeSets = complexTypes.map[it.transitiveClosureStar[it.subtypes].toSet]
255 val commonTypeSet = new HashSet(subtypeSets.head)
256 val otherSets = subtypeSets.tail
257 for(otherSet : otherSets) {
258 commonTypeSet.retainAll(otherSet)
259 }
260 if(commonTypeSet.empty) {
261 throw new IllegalArgumentException('''Inconsistent types: «complexTypes.map[name].toList»''')
262 }
263
264
265 return calculateCommonComplexSupertype(commonTypeSet)
266
267 } else {
268 throw new IllegalArgumentException('''
269 Inconsistent types, mixing primitive and complex types:
270 «primitiveTypeReferences.map[eClass.name].toSet.toList»
271 and
272 «complexTypeReferences.map[it.referred].toSet.map[name].toList»''')
273
274 }
275 }
276
277
278 def TypeReference calculateCommonSupertype(Iterable<TypeReference> types) {
279 val primitiveTypeReferences = types.filter(PrimitiveTypeReference)
280 val complexTypeReferences = types.filter(ComplexTypeReference)
281 if(complexTypeReferences.isEmpty) {
282 // If there is a real type, ...
283 if(primitiveTypeReferences.exists[it instanceof RealTypeReference]) {
284 // ... and all types are either real or int, then return real!
285 if(primitiveTypeReferences.forall[it instanceof RealTypeReference || it instanceof IntTypeReference]) {
286 return primitiveTypeReferences.filter(RealTypeReference).head
287 }
288 // Otherwise, the types are inconsistent, because they mixing numeric and non-numeric types.
289 else throw new IllegalArgumentException('''Inconsistent types: «primitiveTypeReferences.map[eClass.name].toSet.toList»''')
290 }
291 // If there is no Real, then the types should be homogenious
292 val head = primitiveTypeReferences.head
293 if(primitiveTypeReferences.exists[it.eClass !== head.eClass]) {
294 throw new IllegalArgumentException('''Inconsistent types: «primitiveTypeReferences.map[eClass.name].toSet.toList»''')
295 }
296 return head
297 } else if(primitiveTypeReferences.isEmpty) {
298 val complexTypes = complexTypeReferences.map[it.referred].toSet
299 return calculateCommonComplexSupertype(complexTypes)
300
301 } else {
302 throw new IllegalArgumentException('''
303 Inconsistent types, mixing primitive and complex types:
304 «primitiveTypeReferences.map[eClass.name].toSet.toList»
305 and
306 «complexTypeReferences.map[it.referred].toSet.map[name].toList»''')
307
308 }
309 }
310 def TypeReference calculateCommonComplexSupertype(Set<Type> complexTypes) {
311 if(complexTypes.size === 1) {
312 return builder.toTypeReference(complexTypes.head)
313 }
314 // Collect possible supertypes
315 val supertypeSets = complexTypes.map[it.transitiveClosureStar[it.supertypes].toSet]
316 val commonTypeSet = new HashSet(supertypeSets.head)
317 val otherSets = supertypeSets.tail
318 for(otherSet : otherSets) {
319 commonTypeSet.retainAll(otherSet)
320 }
321 if(commonTypeSet.empty) {
322 throw new IllegalArgumentException('''Inconsistent types: «complexTypes.map[name].toList»''')
323 }
324 // Remove type that already have covered
325 val coveredTypes = commonTypeSet.map[it.supertypes].flatten
326 commonTypeSet.removeAll(coveredTypes)
327 return builder.toTypeReference(commonTypeSet.head)
328 }
329
330 /**
331 * Transforms a Viatra type reference to a logic type.
332 */
333 def dispatch TypeReference transformTypeReference(EDataTypeInSlotsKey k,TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace) {
334 val w = k.wrappedKey
335 if(w == EcorePackage.Literals.EINT || w == EcorePackage.Literals.ESHORT || w == EcorePackage.Literals.ELONG) {
336 return builder.LogicInt
337 } else if(w == EcorePackage.Literals.EDOUBLE || w == EcorePackage.Literals.EFLOAT) {
338 return builder.LogicReal
339 } else if(w == EcorePackage.Literals.EBOOLEAN) {
340 return builder.LogicBool
341 } else if(w == EcorePackage.Literals.ESTRING) {
342 return builder.LogicString
343 } else if(w instanceof EEnum) {
344 val c = this.ecore2Logic.TypeofEEnum(ecore2LogicTrace.trace,w)
345 return builder.toTypeReference(c);
346 } else throw new UnsupportedOperationException('''Unknown reference type «w.class.name»''')
347 }
348 def dispatch TypeReference transformTypeReference(JavaTransitiveInstancesKey k,TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace) {
349 val c = k.wrapperInstanceClass
350 if(c == Integer || c == Long || c == Short) {
351 return LogicInt
352 } else if(c == Float || c == Double) {
353 return LogicReal
354 } else if(c == Boolean) {
355 return LogicBool
356 } else if(c == String) {
357 return LogicString
358 } else if(c.superclass == Enum){
359 val enums = ecore2Logic.allEnumsInScope(ecore2LogicTrace.trace)
360 for(enum : enums) {
361 if(c == enum.instanceClass) {
362 return builder.toTypeReference(ecore2Logic.TypeofEEnum(ecore2LogicTrace.trace,enum))
363 }
364 }
365 throw new IllegalArgumentException('''Enum type «c.simpleName» is not mapped to logic!''')
366 } else {
367 return null
368 }
369 }
370 def dispatch TypeReference transformTypeReference(EClassTransitiveInstancesKey k,TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace) {
371 val c = k.wrappedKey
372
373 if(this.ecore2Logic.allClassesInScope(ecore2LogicTrace.trace).toList.contains(c)) {
374 return builder.toTypeReference(this.ecore2Logic.TypeofEClass(ecore2LogicTrace.trace,k.wrappedKey))
375 } else {
376 return null
377 }
378 }
379 def dispatch TypeReference transformTypeReference(EClassUnscopedTransitiveInstancesKey k, TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace) {
380 val c = k.wrappedKey
381
382 if(this.ecore2Logic.allClassesInScope(ecore2LogicTrace.trace).toList.contains(c)) {
383 return builder.toTypeReference(this.ecore2Logic.TypeofEClass(ecore2LogicTrace.trace,k.wrappedKey))
384 } else {
385 return null
386 }
387 }
388
389 def dispatch TypeReference transformTypeReference(IInputKey k,TracedOutput<LogicProblem, Ecore2Logic_Trace> ecore2LogicTrace) {
390 throw new IllegalArgumentException('''Unsupported type: «k.class.simpleName»''')
391 }
392} \ No newline at end of file
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2LogicTypeResult.xtend b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2LogicTypeResult.xtend
new file mode 100644
index 00000000..7ba90724
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2LogicTypeResult.xtend
@@ -0,0 +1,47 @@
1package hu.bme.mit.inf.dslreasoner.viatra2logic
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeReference
4import java.util.Map
5import org.eclipse.viatra.query.runtime.matchers.psystem.PBody
6import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable
7import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter
8import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
9import org.eclipse.xtend.lib.annotations.Data
10import org.eclipse.xtext.xbase.lib.Functions.Function0
11import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
12import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
13import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory
14import org.eclipse.emf.ecore.util.EcoreUtil
15import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.PrimitiveTypeReference
16
17@Data class Viatra2LogicTypeResult{
18 Map<Pair<PQuery,PParameter>,Function0<TypeReference>> typesInParameters
19 Map<Pair<PBody,PVariable>,Function0<TypeReference>> typesInBodies;
20
21 def addType(PBody body, PVariable variable, TypeReference typeConstructor) {
22 typesInBodies.put(body->variable,typeConstructor.createTypeConstructor)
23 }
24 def addType(PQuery query, PParameter variable, TypeReference typeConstructor) {
25 typesInParameters.put(query->variable,typeConstructor.createTypeConstructor)
26 }
27 def getType(PBody body, PVariable variable) {
28 return (body->variable).lookup(typesInBodies).apply
29 }
30 def getType(PQuery query, PParameter variable) {
31 return (query->variable).lookup(typesInParameters).apply
32 }
33
34 def containsSolution(PBody body, PVariable variable) {
35 return typesInBodies.containsKey(body->variable)
36 }
37 def containsSolution(PParameter variable) {
38 return typesInParameters.containsKey(variable)
39 }
40
41 def dispatch Function0<TypeReference> createTypeConstructor(ComplexTypeReference ref) {
42 return [LogiclanguageFactory.eINSTANCE.createComplexTypeReference=>[it.referred = ref.referred]]
43 }
44 def dispatch Function0<TypeReference> createTypeConstructor(PrimitiveTypeReference ref) {
45 return [EcoreUtil.copy(ref)]
46 }
47} \ No newline at end of file
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/XExpressionExtractor.xtend b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/XExpressionExtractor.xtend
new file mode 100644
index 00000000..ea8d0b23
--- /dev/null
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/XExpressionExtractor.xtend
@@ -0,0 +1,24 @@
1package hu.bme.mit.inf.dslreasoner.viatra2logic
2
3import org.eclipse.viatra.query.patternlanguage.emf.specification.XBaseEvaluator
4import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator
5import org.eclipse.xtext.xbase.XExpression
6
7class XExpressionExtractor {
8 def dispatch XExpression extractExpression(XBaseEvaluator evaluator) { evaluator.expression }
9 def dispatch XExpression extractExpression(IExpressionEvaluator evaluator) {
10 val clazz = evaluator.class
11 if(clazz.name == "org.eclipse.viatra.query.runtime.matchers.psystem.rewriters.VariableMappingExpressionEvaluatorWrapper") {
12 val field = clazz.declaredFields.filter[it.name == "wrapped"].head
13 if(field === null) {
14 throw new IllegalArgumentException('''Class «clazz.simpleName» has no field "wrapped"!''')
15 } else {
16 field.setAccessible(true);
17 val wrappedEvaluator = field.get(evaluator) as XBaseEvaluator
18 return wrappedEvaluator.extractExpression
19 }
20 } else {
21 throw new IllegalArgumentException('''Unsupported expression evaluation form: «clazz.simpleName»!''')
22 }
23 }
24} \ No newline at end of file