From 86dbfdb49e051121022d06ddd7249485f13f567a Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Mon, 5 Mar 2018 17:59:26 -0500 Subject: Fixed nasty bug with creating root element --- .../patterns/GenericTypeRefinementGenerator.xtend | 2 +- ...TypeRefinementWithPreliminaryTypeAnalysis.xtend | 4 +- .../rules/RefinementRuleProvider.xtend | 10 ++++- .../model/PartialInterpretation.aird | 52 +++++++++++----------- 4 files changed, 37 insertions(+), 31 deletions(-) (limited to 'Solvers') diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend index 1081fafc..c9e183ab 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/GenericTypeRefinementGenerator.xtend @@ -91,7 +91,7 @@ class GenericTypeRefinementGenerator extends TypeRefinementGenerator { { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialTypeInterpratation.interpretationOf.name(type,"«type.name»"); + PartialTypeInterpratation.interpretationOf.name(typeInterpretation,"«type.name»"); «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")» find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeRefinementWithPreliminaryTypeAnalysis.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeRefinementWithPreliminaryTypeAnalysis.xtend index 81f2f7db..8a6efeeb 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeRefinementWithPreliminaryTypeAnalysis.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/TypeRefinementWithPreliminaryTypeAnalysis.xtend @@ -16,8 +16,8 @@ class TypeRefinementWithPreliminaryTypeAnalysis extends TypeRefinementGenerator{ override requiresTypeAnalysis() { true } override generateRefineObjectQueries(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult) { - val possibleNewDynamicType = typeAnalysisResult.possibleNewDynamicTypes val containment = p.containmentHierarchies.head + val possibleNewDynamicType = typeAnalysisResult.possibleNewDynamicTypes val inverseRelations = new HashMap p.annotations.filter(InverseRelationAssertion).forEach[ inverseRelations.put(it.inverseA,it.inverseB) @@ -78,7 +78,7 @@ class TypeRefinementWithPreliminaryTypeAnalysis extends TypeRefinementGenerator{ find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); - PartialTypeInterpratation.interpretationOf.name(type,"«type.name»"); + PartialTypeInterpratation.interpretationOf.name(typeInterpretation,"«type.name»"); «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")» find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend index 8b0f8f85..4b5f2946 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend @@ -58,6 +58,7 @@ class RefinementRuleProvider { { val name = '''addObject_«type.name.canonizeName»« IF containmentRelation!=null»_by_«containmentRelation.name.canonizeName»«ENDIF»''' + //println("Rule created: " + name + "> " + lhs.fullyQualifiedName) val ruleBuilder = factory.createRule .name(name) .precondition(lhs) @@ -129,25 +130,30 @@ class RefinementRuleProvider { } } else { ruleBuilder.action[match | - //println(name) + println(name) + val startTime = System.nanoTime //val problem = match.get(0) as LogicProblem val interpretation = match.get(1) as PartialInterpretation val typeInterpretation = match.get(2) as PartialTypeInterpratation + println("->"+typeInterpretation.interpretationOf.name) - val newElement = createDefinedElement //=> [it.name = null] + val newElement = createDefinedElement if(nameNewElement) { newElement.name = '''new «interpretation.newElements.size»''' } + // Existence interpretation.newElements+=newElement interpretation.maxNewElements=interpretation.maxNewElements-1 if(interpretation.minNewElements > 0) { interpretation.minNewElements=interpretation.minNewElements-1 } + // Types typeInterpretation.elements += newElement typeInterpretation.supertypeInterpretation.forEach[it.elements += newElement] + statistics.addExecutionTime(System.nanoTime-startTime) ] } 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 4b179f98..c4c5c03a 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 @@ -2053,7 +2053,7 @@ - + @@ -2088,7 +2088,7 @@ - + @@ -2125,17 +2125,17 @@ - + - + - + - + @@ -2173,81 +2173,81 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + -- cgit v1.2.3-54-g00ecf