aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend
diff options
context:
space:
mode:
authorLibravatar OszkarSemerath <oszkar.semerath@gmail.com>2018-03-05 17:59:26 -0500
committerLibravatar OszkarSemerath <oszkar.semerath@gmail.com>2018-03-05 17:59:26 -0500
commit86dbfdb49e051121022d06ddd7249485f13f567a (patch)
tree33f5153a66fd270c9a0f2a6ea8b7774cf59b6feb /Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend
parentDefault visualisation set to .svg (diff)
downloadVIATRA-Generator-86dbfdb49e051121022d06ddd7249485f13f567a.tar.gz
VIATRA-Generator-86dbfdb49e051121022d06ddd7249485f13f567a.tar.zst
VIATRA-Generator-86dbfdb49e051121022d06ddd7249485f13f567a.zip
Fixed nasty bug with creating root element
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend10
1 files changed, 8 insertions, 2 deletions
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 {
58 { 58 {
59 val name = '''addObject_«type.name.canonizeName»« 59 val name = '''addObject_«type.name.canonizeName»«
60 IF containmentRelation!=null»_by_«containmentRelation.name.canonizeName»«ENDIF»''' 60 IF containmentRelation!=null»_by_«containmentRelation.name.canonizeName»«ENDIF»'''
61 //println("Rule created: " + name + "> " + lhs.fullyQualifiedName)
61 val ruleBuilder = factory.createRule 62 val ruleBuilder = factory.createRule
62 .name(name) 63 .name(name)
63 .precondition(lhs) 64 .precondition(lhs)
@@ -129,25 +130,30 @@ class RefinementRuleProvider {
129 } 130 }
130 } else { 131 } else {
131 ruleBuilder.action[match | 132 ruleBuilder.action[match |
132 //println(name) 133 println(name)
134
133 val startTime = System.nanoTime 135 val startTime = System.nanoTime
134 //val problem = match.get(0) as LogicProblem 136 //val problem = match.get(0) as LogicProblem
135 val interpretation = match.get(1) as PartialInterpretation 137 val interpretation = match.get(1) as PartialInterpretation
136 val typeInterpretation = match.get(2) as PartialTypeInterpratation 138 val typeInterpretation = match.get(2) as PartialTypeInterpratation
139 println("->"+typeInterpretation.interpretationOf.name)
137 140
138 val newElement = createDefinedElement //=> [it.name = null] 141 val newElement = createDefinedElement
139 if(nameNewElement) { 142 if(nameNewElement) {
140 newElement.name = '''new «interpretation.newElements.size»''' 143 newElement.name = '''new «interpretation.newElements.size»'''
141 } 144 }
145
142 // Existence 146 // Existence
143 interpretation.newElements+=newElement 147 interpretation.newElements+=newElement
144 interpretation.maxNewElements=interpretation.maxNewElements-1 148 interpretation.maxNewElements=interpretation.maxNewElements-1
145 if(interpretation.minNewElements > 0) { 149 if(interpretation.minNewElements > 0) {
146 interpretation.minNewElements=interpretation.minNewElements-1 150 interpretation.minNewElements=interpretation.minNewElements-1
147 } 151 }
152
148 // Types 153 // Types
149 typeInterpretation.elements += newElement 154 typeInterpretation.elements += newElement
150 typeInterpretation.supertypeInterpretation.forEach[it.elements += newElement] 155 typeInterpretation.supertypeInterpretation.forEach[it.elements += newElement]
156
151 statistics.addExecutionTime(System.nanoTime-startTime) 157 statistics.addExecutionTime(System.nanoTime-startTime)
152 ] 158 ]
153 } 159 }