diff options
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src')
3 files changed, 11 insertions, 5 deletions
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 { | |||
91 | { | 91 | { |
92 | find interpretation(problem,interpretation); | 92 | find interpretation(problem,interpretation); |
93 | PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); | 93 | PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); |
94 | PartialTypeInterpratation.interpretationOf.name(type,"«type.name»"); | 94 | PartialTypeInterpratation.interpretationOf.name(typeInterpretation,"«type.name»"); |
95 | «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")» | 95 | «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")» |
96 | find mayExist(problem, interpretation, newObject); | 96 | find mayExist(problem, interpretation, newObject); |
97 | neg find mustExist(problem, interpretation, newObject); | 97 | 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{ | |||
16 | override requiresTypeAnalysis() { true } | 16 | override requiresTypeAnalysis() { true } |
17 | 17 | ||
18 | override generateRefineObjectQueries(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult) { | 18 | override generateRefineObjectQueries(LogicProblem p, PartialInterpretation emptySolution, TypeAnalysisResult typeAnalysisResult) { |
19 | val possibleNewDynamicType = typeAnalysisResult.possibleNewDynamicTypes | ||
20 | val containment = p.containmentHierarchies.head | 19 | val containment = p.containmentHierarchies.head |
20 | val possibleNewDynamicType = typeAnalysisResult.possibleNewDynamicTypes | ||
21 | val inverseRelations = new HashMap | 21 | val inverseRelations = new HashMap |
22 | p.annotations.filter(InverseRelationAssertion).forEach[ | 22 | p.annotations.filter(InverseRelationAssertion).forEach[ |
23 | inverseRelations.put(it.inverseA,it.inverseB) | 23 | inverseRelations.put(it.inverseA,it.inverseB) |
@@ -78,7 +78,7 @@ class TypeRefinementWithPreliminaryTypeAnalysis extends TypeRefinementGenerator{ | |||
78 | find interpretation(problem,interpretation); | 78 | find interpretation(problem,interpretation); |
79 | neg find hasElementInContainment(problem,interpretation); | 79 | neg find hasElementInContainment(problem,interpretation); |
80 | PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); | 80 | PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); |
81 | PartialTypeInterpratation.interpretationOf.name(type,"«type.name»"); | 81 | PartialTypeInterpratation.interpretationOf.name(typeInterpretation,"«type.name»"); |
82 | «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")» | 82 | «base.typeIndexer.referInstanceOf(type,Modality.MAY,"newObject")» |
83 | find mayExist(problem, interpretation, newObject); | 83 | find mayExist(problem, interpretation, newObject); |
84 | neg find mustExist(problem, interpretation, newObject); | 84 | 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 { | |||
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 | } |