From 4e87ad2219cd888d94e5d2d85804d29cae3a79d8 Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Tue, 15 Aug 2017 19:49:03 +0200 Subject: Added known primitives to the scope --- .../dslreasoner/logic/model/builder/LogicSolver.xtend | 19 ++++++++++++++----- .../PartialInterpretationInitialiser.xtend | 15 +++++++++------ 2 files changed, 23 insertions(+), 11 deletions(-) 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 22bbb2e2..aaf14ebb 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 @@ -5,6 +5,9 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace import java.util.List +import java.util.TreeSet +import java.util.SortedSet +import java.math.BigDecimal abstract class LogicReasoner { def abstract LogicResult solve(LogicProblem problem, LogicSolverConfiguration configuration, @@ -47,19 +50,25 @@ abstract class LogicSolverConfiguration { */ public class TypeScopes { public static val Unlimited = -1; - public var boolean ignoreIdDuringGeneration = true + + public var SortedSet knownIntegers = new TreeSet /** * Sets the number of Integers that has to be used to solve the problem. */ - public var numberOfUseableIntegers = Unlimited + public var maxNewIntegers = Unlimited + + public var SortedSet knownReals = new TreeSet /** - * Sets the number of Integers that has to be used to solve the problem. + * Sets the number of Reals that has to be used to solve the problem. */ - public var numberOfUseableReals = Unlimited + public var maxNewReals = Unlimited + + public var SortedSet knownStrings = new TreeSet /** * Sets the number of Strings that has to be used to solve the problem. */ - public var numberOfUseableStrings = Unlimited + public var maxNewStrings = Unlimited + /** * Defines the minimal number of newly added elements. Default value is 0. */ diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend index 06215a2a..9ddee6a7 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend @@ -63,8 +63,9 @@ class PartialInterpretationInitialiser { it.booleanelements += createBooleanElement => [it.name = "false" it.value = false it.valueSet = true] // Integers - it.maxNewIntegers = typeScopes.numberOfUseableIntegers - for(integersInProblem : problem.eAllContents.toIterable.filter(IntLiteral).map[value].toSet) { + it.maxNewIntegers = typeScopes.maxNewIntegers + val knownIntegers = (typeScopes.knownIntegers + problem.eAllContents.toIterable.filter(IntLiteral).map[value]).toSet + for(integersInProblem : knownIntegers) { it.integerelements += createIntegerElement => [it.name = '''«integersInProblem»''' it.value = integersInProblem it.valueSet = true] } if(maxNewIntegers>0) { @@ -72,8 +73,9 @@ class PartialInterpretationInitialiser { } // Reals - it.maxNewReals = typeScopes.numberOfUseableReals - for(realsInProblem : problem.eAllContents.toIterable.filter(RealLiteral).map[value].toSet) { + it.maxNewReals = typeScopes.maxNewReals + val knownReals = (typeScopes.knownReals + problem.eAllContents.toIterable.filter(RealLiteral).map[value]).toSet + for(realsInProblem : knownReals) { it.realelements += createRealElement => [it.name = '''«realsInProblem»''' it.value = realsInProblem it.valueSet = true] } if(maxNewReals>0) { @@ -81,8 +83,9 @@ class PartialInterpretationInitialiser { } // Strings - it.maxNewStrings = typeScopes.numberOfUseableStrings - for(stringsInProblem : problem.eAllContents.toIterable.filter(StringLiteral).map[value].toSet) { + it.maxNewStrings = typeScopes.maxNewStrings + val knownStrings = (typeScopes.knownStrings + problem.eAllContents.toIterable.filter(StringLiteral).map[value]).toSet + for(stringsInProblem : knownStrings) { it.stringelement += createStringElement => [it.name = '''"«stringsInProblem»"''' it.value=stringsInProblem it.valueSet = true] } if(maxNewStrings>0) { -- cgit v1.2.3-54-g00ecf