diff options
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules')
-rw-r--r-- | Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/rules/RefinementRuleProvider.xtend | 10 |
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 | } |