From bf0ddbc789689fdaa60d5f648fd35597b2b869b3 Mon Sep 17 00:00:00 2001 From: Oszkar Semerath Date: Fri, 8 May 2020 18:46:10 +0200 Subject: contained objects instantiated immediately if target class non-abstract --- .../rules/RefinementRuleProvider.xtend | 59 +++++++++++----------- 1 file changed, 30 insertions(+), 29 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/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 b4cb9ec7..7e53f944 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 @@ -179,36 +179,37 @@ class RefinementRuleProvider { if(containmentReferences.contains(relation)) { val targetTypeInterpretation = getTypeInterpretation(i, relation, 1) - - val inverseAnnotation = p.assertions.filter(InverseRelationAssertion).filter[it.inverseA === relation || it.inverseB === relation] - if(!inverseAnnotation.empty) { - val onlyInverseAnnotation = if(inverseAnnotation.head.inverseA===relation) { - inverseAnnotation.head.inverseB + if(!(targetTypeInterpretation as PartialComplexTypeInterpretation).interpretationOf.isIsAbstract) { + val inverseAnnotation = p.assertions.filter(InverseRelationAssertion).filter[it.inverseA === relation || it.inverseB === relation] + if(!inverseAnnotation.empty) { + val onlyInverseAnnotation = if(inverseAnnotation.head.inverseA===relation) { + inverseAnnotation.head.inverseB + } else { + inverseAnnotation.head.inverseA + } + val inverseRelationInterpretation = i.partialrelationinterpretation.filter[it.interpretationOf === onlyInverseAnnotation].head + for(var times=0; times