aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.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_Support.xtend')
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend45
1 files changed, 29 insertions, 16 deletions
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend
index ab92b42f..e69f0d51 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_Support.xtend
@@ -1,17 +1,18 @@
1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder 1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
2 2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.QuantifiedExpression 3import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable
5import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm 4import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm
6import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable 5import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable
7import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory 6import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.QuantifiedExpression
9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term
10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable
8import java.util.ArrayList 11import java.util.ArrayList
9import java.util.HashMap 12import java.util.HashMap
10import java.util.List 13import java.util.List
11import java.util.Map 14import java.util.Map
12import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
13import org.eclipse.emf.common.util.EList 15import org.eclipse.emf.common.util.EList
14import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term
15 16
16class Logic2VampireLanguageMapper_Support { 17class Logic2VampireLanguageMapper_Support {
17 private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE 18 private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
@@ -25,6 +26,19 @@ class Logic2VampireLanguageMapper_Support {
25 ids.split("\\s+").join("_") 26 ids.split("\\s+").join("_")
26 } 27 }
27 28
29 def protected VLSVariable duplicate(VLSVariable vrbl) {
30 return createVLSVariable => [it.name = vrbl.name]
31 }
32
33 def protected VLSFunction topLevelTypeFunc() {
34 return createVLSFunction => [
35 it.constant = "object"
36 it.terms += createVLSVariable => [
37 it.name = "A"
38 ]
39 ]
40 }
41
28 // Support Functions 42 // Support Functions
29 // booleans 43 // booleans
30 // AND and OR 44 // AND and OR
@@ -41,7 +55,6 @@ class Logic2VampireLanguageMapper_Support {
41 } 55 }
42 56
43 def protected VLSTerm unfoldOr(List<? extends VLSTerm> operands) { 57 def protected VLSTerm unfoldOr(List<? extends VLSTerm> operands) {
44
45// if(operands.size == 0) {basically return true} 58// if(operands.size == 0) {basically return true}
46 /*else*/ if (operands.size == 1) { 59 /*else*/ if (operands.size == 1) {
47 return operands.head 60 return operands.head
@@ -56,20 +69,21 @@ class Logic2VampireLanguageMapper_Support {
56 69
57 def protected VLSTerm unfoldDistinctTerms(Logic2VampireLanguageMapper m, EList<Term> operands, 70 def protected VLSTerm unfoldDistinctTerms(Logic2VampireLanguageMapper m, EList<Term> operands,
58 Logic2VampireLanguageMapperTrace trace, Map<Variable, VLSVariable> variables) { 71 Logic2VampireLanguageMapperTrace trace, Map<Variable, VLSVariable> variables) {
59 if(operands.size == 1) { return m.transformTerm(operands.head,trace,variables) } 72 if (operands.size == 1) {
60 else if(operands.size > 1) { 73 return m.transformTerm(operands.head, trace, variables)
61 val notEquals = new ArrayList<VLSTerm>(operands.size*operands.size/2) 74 } else if (operands.size > 1) {
62 for(i:0..<operands.size) { 75 val notEquals = new ArrayList<VLSTerm>(operands.size * operands.size / 2)
63 for(j: i+1..<operands.size) { 76 for (i : 0 ..< operands.size) {
64 notEquals+=createVLSInequality=>[ 77 for (j : i + 1 ..< operands.size) {
65 it.left= m.transformTerm(operands.get(i),trace,variables) 78 notEquals += createVLSInequality => [
66 it.right = m.transformTerm(operands.get(j),trace,variables) 79 it.left = m.transformTerm(operands.get(i), trace, variables)
80 it.right = m.transformTerm(operands.get(j), trace, variables)
67 ] 81 ]
68 } 82 }
69 } 83 }
70 return notEquals.unfoldAnd 84 return notEquals.unfoldAnd
71 } 85 } else
72 else throw new UnsupportedOperationException('''Logic operator with 0 operands!''') 86 throw new UnsupportedOperationException('''Logic operator with 0 operands!''')
73 } 87 }
74 88
75 // Symbolic 89 // Symbolic
@@ -105,7 +119,6 @@ class Logic2VampireLanguageMapper_Support {
105 ] 119 ]
106 typedefs.add(eq) 120 typedefs.add(eq)
107 } 121 }
108
109 122
110 createVLSUniversalQuantifier => [ 123 createVLSUniversalQuantifier => [
111 it.variables += variableMap.values 124 it.variables += variableMap.values