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 +++++++++++++--------- 1 file changed, 23 insertions(+), 15 deletions(-) (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src') 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 -- cgit v1.2.3-54-g00ecf