From eec379f386d4a67b3fd49a1811f4e890fdbb58d9 Mon Sep 17 00:00:00 2001 From: Oszkar Semerath Date: Wed, 8 Apr 2020 20:28:03 +0200 Subject: Primitive object indexing update --- .../logic2viatra/patterns/PatternGenerator.xtend | 54 +++++++++------------- .../logic2viatra/patterns/TypeIndexer.xtend | 4 +- 2 files changed, 25 insertions(+), 33 deletions(-) (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf') 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 d4c76bb4..04163962 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 @@ -170,6 +170,7 @@ class PatternGenerator { ///////////////////////// // 0.1 Existence ///////////////////////// + /** [[exist(element)]]=1 */ private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); LogicProblem.elements(problem,element); @@ -178,6 +179,7 @@ class PatternGenerator { PartialInterpretation.newElements(interpretation,element); } + /** [[exist(element)]]>=1/2 */ private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustExist(problem,interpretation,element); } or { @@ -209,46 +211,34 @@ class PatternGenerator { a == b; } - //////////////////////// - // 0.3 Required Patterns by TypeIndexer - //////////////////////// - «typeIndexer.requiredQueries» ////////// // 1. Problem-Specific Base Indexers ////////// // 1.1 Type Indexers ////////// - // 1.1.1 primitive Type Indexers + // 1.1.1 Required Patterns by TypeIndexer ////////// -««« pattern instanceofBoolean(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { -««« find interpretation(problem,interpretation); -««« PartialInterpretation.booleanelements(interpretation,element); -««« } -««« pattern instanceofInteger(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { -««« find interpretation(problem,interpretation); -««« PartialInterpretation.integerelements(interpretation,element); -««« } or { -««« find interpretation(problem,interpretation); -««« PartialInterpretation.newIntegers(interpetation,element); -««« } -««« pattern instanceofReal(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { -««« find interpretation(problem,interpretation); -««« PartialInterpretation.realelements(interpretation,element); -««« } or { -««« find interpretation(problem,interpretation); -««« PartialInterpretation.newReals(interpetation,element); -««« } -««« pattern instanceofString(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { -««« find interpretation(problem,interpretation); -««« PartialInterpretation.stringelements(interpretation,element); -««« } or { -««« find interpretation(problem,interpretation); -««« PartialInterpretation.newStrings(interpetation,element); -««« } - + «typeIndexer.requiredQueries» + ////////// + // 1.1.2 primitive Type Indexers + ////////// + // Currently unused. Refer primitive types as: + // > PrimitiveElement(element) + // specific types are referred as: + // > BooleanElement(variableName) + // > IntegerElement(variableName) + // > RealElement(variableName) + // > StringElement(variableName) + // And their value as + // > BooleanElement.value(variableName,value) + // > IntegerElement.value(variableName,value) + // > RealElement.value(variableName,value) + // > StringElement.value(variableName,value) + // Whether a value is set is defined by: + // > PrimitiveElement.valueSet(variableName,isFilled); ////////// - // 1.1.2 domain-specific Type Indexers + // 1.1.3 domain-specific Type Indexers ////////// «typeIndexer.generateInstanceOfQueries(problem,emptySolution,typeAnalysisResult)» diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeIndexer.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeIndexer.xtend index d1d57189..41eb75a8 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeIndexer.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeIndexer.xtend @@ -48,5 +48,7 @@ abstract class TypeIndexer { public def dispatch CharSequence referPrimitiveValue(String variableName, String value) { '''StringElement.value(«variableName»,"«value»");''' } - + public def CharSequence referPrimitiveFilled(String variableName, boolean isFilled) { + '''PrimitiveElement.valueSet(«variableName»,«isFilled»);''' + } } \ No newline at end of file -- cgit v1.2.3-54-g00ecf