aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend')
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend16
1 files changed, 6 insertions, 10 deletions
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend
index 54c44c72..81af24e5 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper.xtend
@@ -40,6 +40,7 @@ import java.util.Map
40import org.eclipse.xtend.lib.annotations.Accessors 40import org.eclipse.xtend.lib.annotations.Accessors
41 41
42import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 42import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
43import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
43 44
44class Logic2VampireLanguageMapper { 45class Logic2VampireLanguageMapper {
45 private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE 46 private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
@@ -227,18 +228,18 @@ class Logic2VampireLanguageMapper {
227// 228//
228 def dispatch protected VLSTerm transformTerm(Forall forall, Logic2VampireLanguageMapperTrace trace, 229 def dispatch protected VLSTerm transformTerm(Forall forall, Logic2VampireLanguageMapperTrace trace,
229 Map<Variable, VLSVariable> variables) { 230 Map<Variable, VLSVariable> variables) {
230 support.createUniversallyQuantifiedExpression(this, forall, trace, variables) 231 support.createQuantifiedExpression(this, forall, trace, variables, true)
231 } 232 }
232 233
233 def dispatch protected VLSTerm transformTerm(Exists exists, Logic2VampireLanguageMapperTrace trace, 234 def dispatch protected VLSTerm transformTerm(Exists exists, Logic2VampireLanguageMapperTrace trace,
234 Map<Variable, VLSVariable> variables) { 235 Map<Variable, VLSVariable> variables) {
235 support.createExistentiallyQuantifiedExpression(this, exists, trace, variables) 236 support.createQuantifiedExpression(this, exists, trace, variables, false)
236 } 237 }
237 238
238 def dispatch protected VLSTerm transformTerm(InstanceOf instanceOf, Logic2VampireLanguageMapperTrace trace, 239 def dispatch protected VLSTerm transformTerm(InstanceOf instanceOf, Logic2VampireLanguageMapperTrace trace,
239 Map<Variable, VLSVariable> variables) { 240 Map<Variable, VLSVariable> variables) {
240 return createVLSFunction => [ 241 return createVLSFunction => [
241 it.constant = support.toIDMultiple("t", (instanceOf.range as ComplexTypeReference).referred.name) 242 it.constant = (instanceOf.range as ComplexTypeReference).referred.lookup(trace.type2Predicate).constant
242 it.terms += instanceOf.value.transformTerm(trace, variables) 243 it.terms += instanceOf.value.transformTerm(trace, variables)
243 ] 244 ]
244 } 245 }
@@ -292,13 +293,8 @@ class Logic2VampireLanguageMapper {
292 Logic2VampireLanguageMapperTrace trace, Map<Variable, VLSVariable> variables) { 293 Logic2VampireLanguageMapperTrace trace, Map<Variable, VLSVariable> variables) {
293 294
294 // cannot treat variable as function (constant) because of name ID not being the same 295 // cannot treat variable as function (constant) because of name ID not being the same
295 // below does not work
296 val res = createVLSVariable => [
297// it.name = support.toIDMultiple("Var", variable.lookup(variables).name)
298 it.name = support.toID(variable.lookup(variables).name)
299 ]
300 // no need for potprocessing cuz booleans are supported 296 // no need for potprocessing cuz booleans are supported
301 return res 297 return support.duplicate(variable.lookup(variables))
302 } 298 }
303 299
304 // TODO 300 // TODO
@@ -383,7 +379,7 @@ class Logic2VampireLanguageMapper {
383// it.params += parameterSubstitutions.map[p|p.transformTerm(trace, variables)] 379// it.params += parameterSubstitutions.map[p|p.transformTerm(trace, variables)]
384// ] 380// ]
385 return createVLSFunction => [ 381 return createVLSFunction => [
386 it.constant = support.toIDMultiple("rel", relation.name) 382 it.constant = (relation as RelationDeclaration).lookup(trace.rel2Predicate).constant
387 it.terms += parameterSubstitutions.map[p|p.transformTerm(trace, variables)] 383 it.terms += parameterSubstitutions.map[p|p.transformTerm(trace, variables)]
388 ] 384 ]
389 } 385 }