From a2ba6b5addbc82a635af4f90195581c08f9913c0 Mon Sep 17 00:00:00 2001 From: Oszkar Semerath Date: Thu, 7 May 2020 19:22:16 +0200 Subject: multiple object additions fixes --- .../rules/RefinementRuleProvider.xtend | 38 ++++++++++++---------- 1 file changed, 21 insertions(+), 17 deletions(-) (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules') 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 013da873..b4cb9ec7 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 @@ -90,7 +90,7 @@ class RefinementRuleProvider { if(containmentRelation !== null) { if(inverseRelation!== null) { 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 @@ -115,7 +115,7 @@ 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 @@ -139,6 +139,7 @@ class RefinementRuleProvider { } } else { ruleBuilder.action[match | + println(name) val startTime = System.nanoTime //val problem = match.get(0) as LogicProblem val interpretation = match.get(1) as PartialInterpretation @@ -210,7 +211,7 @@ class RefinementRuleProvider { ) } } - } else if(relation.parameters instanceof PrimitiveTypeReference) { + } else if(relation.parameters.get(1) instanceof PrimitiveTypeReference) { val targetTypeInterpretation = getTypeInterpretation(i, relation, 1) for(var times=0; times [it.param1 = newElement it.param2 = container] inverseRelationInterpretation.relationlinks+=newLink2 + // Scope propagation + scopePropagator.propagateAdditionToType(typeInterpretation) + // Do recursive object creation for(newConstructor : recursiceObjectCreations) { createObjectAction(nameNewElement,newConstructor,newElement,scopePropagator) } - // Scope propagation - scopePropagator.propagateAdditionToType(typeInterpretation) - return newElement } @@ -451,14 +455,14 @@ class RefinementRuleProvider { val newLink = factory2.createBinaryElementRelationLink => [it.param1 = container it.param2 = newElement] relationInterpretation.relationlinks+=newLink + // Scope propagation + scopePropagator.propagateAdditionToType(typeInterpretation) + // Do recursive object creation for(newConstructor : recursiceObjectCreations) { createObjectAction(nameNewElement,newConstructor,newElement,scopePropagator) } - // Scope propagation - scopePropagator.propagateAdditionToType(typeInterpretation) - return newElement } @@ -484,14 +488,14 @@ class RefinementRuleProvider { typeInterpretation.supertypeInterpretation.forEach[it.elements += newElement] } + // Scope propagation + scopePropagator.propagateAdditionToType(typeInterpretation) + // Do recursive object creation for(newConstructor : recursiceObjectCreations) { createObjectAction(nameNewElement,newConstructor,newElement,scopePropagator) } - // Scope propagation - scopePropagator.propagateAdditionToType(typeInterpretation) - return newElement } -- cgit v1.2.3-70-g09d2