From 04f5e257ca684dfe75262a5cf1f29b72ba197edf Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Sun, 27 Aug 2017 17:20:18 +0200 Subject: Primitive types added to the logic problem only if needed --- .../logic2viatra/patterns/PatternGenerator.xtend | 38 +++++++++++++--------- .../PartialInterpretation2Logic.xtend | 7 ++++ .../PartialInterpretation.java | 2 +- .../impl/PartialinterpretationPackageImpl.java | 2 +- .../model/PartialInterpretation.aird | 28 +++++----------- .../model/PartialInterpretation.ecore | 2 +- 6 files changed, 41 insertions(+), 38 deletions(-) diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend index 1ef82195..7caa3e19 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternGenerator.xtend @@ -153,6 +153,7 @@ class PatternGenerator { Map fqn2PQuery, TypeAnalysisResult typeAnalysisResult ) { + return ''' import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" @@ -174,19 +175,23 @@ class PatternGenerator { } or { find interpretation(problem,interpetation); PartialInterpretation.newElements(interpetation,element); - } or { + } + «IF problem.hasBoolean»or { find interpretation(problem,interpetation); PartialInterpretation.booleanelements(interpetation,element); - } or { + }«ENDIF» + «IF problem.hasInteger»or { find interpretation(problem,interpetation); PartialInterpretation.integerelements(interpetation,element); - } or { + }«ENDIF» + «IF problem.hasReal»or { find interpretation(problem,interpetation); PartialInterpretation.realelements(interpetation,element); - } or { + }«ENDIF» + «IF problem.hasString»or { find interpretation(problem,interpetation); PartialInterpretation.stringelements(interpetation,element); - } + }«ENDIF» private pattern mayExist(problem:LogicProblem, interpetation:PartialInterpretation, element:DefinedElement) { find mustExist(problem,interpetation,element); @@ -194,32 +199,35 @@ class PatternGenerator { find interpretation(problem,interpetation); neg find elementCloseWorld(interpetation); PartialInterpretation.openWorldElementPrototypes(interpetation,element); - } or { + } + «IF problem.hasInteger»or { find interpretation(problem,interpetation); neg find integerCloseWorld(interpetation); PartialInterpretation.newIntegers(interpetation,element); - } or { + }«ENDIF» + «IF problem.hasReal»or { find interpretation(problem,interpetation); neg find realCloseWorld(interpetation); PartialInterpretation.newReals(interpetation,element); - } or { + }«ENDIF» + «IF problem.hasString»or { find interpretation(problem,interpetation); neg find stringCloseWorld(interpetation); PartialInterpretation.newStrings(interpetation,element); - } + }«ENDIF» private pattern elementCloseWorld(interpetation:PartialInterpretation) { PartialInterpretation.maxNewElements(interpetation,0); } - private pattern integerCloseWorld(interpetation:PartialInterpretation) { + «IF problem.hasInteger»private pattern integerCloseWorld(interpetation:PartialInterpretation) { PartialInterpretation.maxNewIntegers(interpetation,0); - } - private pattern realCloseWorld(interpetation:PartialInterpretation) { + }«ENDIF» + «IF problem.hasReal»private pattern realCloseWorld(interpetation:PartialInterpretation) { PartialInterpretation.maxNewReals(interpetation,0); - } - private pattern stringCloseWorld(interpetation:PartialInterpretation) { + }«ENDIF» + «IF problem.hasString»private pattern stringCloseWorld(interpetation:PartialInterpretation) { PartialInterpretation.maxNewStrings(interpetation,0); - } + }«ENDIF» //////////////////////// // 0.2 Equivalence diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend index 87774f43..c5fe1d74 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend @@ -84,6 +84,13 @@ class PartialInterpretation2Logic { p.add(undefinedPart) Supertype(definedPart,declaration) Supertype(undefinedPart,declaration) + + for(containment : p.containmentHierarchies) { + if(containment.typesOrderedInHierarchy.contains(declaration)) { + containment.typesOrderedInHierarchy += definedPart + containment.typesOrderedInHierarchy += undefinedPart + } + } } } diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java index d9725855..d0f77a52 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java @@ -218,7 +218,7 @@ public interface PartialInterpretation extends EObject { * * @return the value of the 'Open World Element Prototypes' containment reference list. * @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getPartialInterpretation_OpenWorldElementPrototypes() - * @model containment="true" required="true" + * @model containment="true" * @generated */ EList getOpenWorldElementPrototypes(); diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java index 6e0d4051..5fae0d4e 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java @@ -853,7 +853,7 @@ public class PartialinterpretationPackageImpl extends EPackageImpl implements Pa initEReference(getPartialInterpretation_Partialtypeinterpratation(), this.getPartialTypeInterpratation(), null, "partialtypeinterpratation", null, 0, -1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getPartialInterpretation_MinNewElements(), ecorePackage.getEInt(), "minNewElements", "0", 1, 1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getPartialInterpretation_MaxNewElements(), ecorePackage.getEInt(), "maxNewElements", "0", 1, 1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEReference(getPartialInterpretation_OpenWorldElementPrototypes(), theLogiclanguagePackage.getDefinedElement(), null, "openWorldElementPrototypes", null, 1, -1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getPartialInterpretation_OpenWorldElementPrototypes(), theLogiclanguagePackage.getDefinedElement(), null, "openWorldElementPrototypes", null, 0, -1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getPartialInterpretation_ProblemConainer(), theLogicproblemPackage.getLogicProblem(), null, "problemConainer", null, 0, 1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getPartialInterpretation_Stringelement(), this.getStringElement(), null, "stringelement", null, 0, -1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getPartialInterpretation_Stringelements(), this.getStringElement(), null, "stringelements", null, 0, -1, PartialInterpretation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.aird b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.aird index 3c02a085..c54a1e10 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.aird +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.aird @@ -58,16 +58,6 @@ - - - - bold - - - - - - bold @@ -637,17 +627,17 @@ - + - + - + @@ -701,7 +691,7 @@ - + @@ -1616,14 +1606,12 @@ - + - - - bold - - + + + diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore index 174e4508..3c235851 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore @@ -22,7 +22,7 @@ -- cgit v1.2.3-54-g00ecf