diff options
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.xtend | 16 |
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 | |||
40 | import org.eclipse.xtend.lib.annotations.Accessors | 40 | import org.eclipse.xtend.lib.annotations.Accessors |
41 | 41 | ||
42 | import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* | 42 | import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* |
43 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration | ||
43 | 44 | ||
44 | class Logic2VampireLanguageMapper { | 45 | class 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 | } |