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.xtend28
1 files changed, 26 insertions, 2 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 e69f0d51..06ec585c 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
@@ -13,6 +13,8 @@ import java.util.HashMap
13import java.util.List 13import java.util.List
14import java.util.Map 14import java.util.Map
15import org.eclipse.emf.common.util.EList 15import org.eclipse.emf.common.util.EList
16import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant
17import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality
16 18
17class Logic2VampireLanguageMapper_Support { 19class Logic2VampireLanguageMapper_Support {
18 private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE 20 private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
@@ -26,6 +28,7 @@ class Logic2VampireLanguageMapper_Support {
26 ids.split("\\s+").join("_") 28 ids.split("\\s+").join("_")
27 } 29 }
28 30
31 //TODO Make more general
29 def protected VLSVariable duplicate(VLSVariable vrbl) { 32 def protected VLSVariable duplicate(VLSVariable vrbl) {
30 return createVLSVariable => [it.name = vrbl.name] 33 return createVLSVariable => [it.name = vrbl.name]
31 } 34 }
@@ -38,6 +41,25 @@ class Logic2VampireLanguageMapper_Support {
38 ] 41 ]
39 ] 42 ]
40 } 43 }
44
45 //TODO Make more general
46 def establishUniqueness(List<VLSConstant> terms) {
47 val List<VLSInequality> eqs = newArrayList
48 for (t1 : terms.subList(1, terms.length)){
49 for (t2 : terms.subList(0, terms.indexOf(t1))){
50 val eq = createVLSInequality => [
51 //TEMP
52 it.left = createVLSConstant => [it.name = t2.name]
53 it.right = createVLSConstant => [it.name = t1.name]
54 //TEMP
55 ]
56 eqs.add(eq)
57 }
58 }
59
60 return unfoldAnd(eqs)
61
62 }
41 63
42 // Support Functions 64 // Support Functions
43 // booleans 65 // booleans
@@ -111,7 +133,7 @@ class Logic2VampireLanguageMapper_Support {
111 val typedefs = new ArrayList<VLSTerm> 133 val typedefs = new ArrayList<VLSTerm>
112 for (variable : expression.quantifiedVariables) { 134 for (variable : expression.quantifiedVariables) {
113 val eq = createVLSFunction => [ 135 val eq = createVLSFunction => [
114 it.constant = toIDMultiple("type", (variable.range as ComplexTypeReference).referred.name) 136 it.constant = toIDMultiple("t", (variable.range as ComplexTypeReference).referred.name)
115 it.terms += createVLSVariable => [ 137 it.terms += createVLSVariable => [
116 it.name = toIDMultiple("Var", variable.name) 138 it.name = toIDMultiple("Var", variable.name)
117 ] 139 ]
@@ -138,7 +160,7 @@ class Logic2VampireLanguageMapper_Support {
138 val typedefs = new ArrayList<VLSTerm> 160 val typedefs = new ArrayList<VLSTerm>
139 for (variable : expression.quantifiedVariables) { 161 for (variable : expression.quantifiedVariables) {
140 val eq = createVLSFunction => [ 162 val eq = createVLSFunction => [
141 it.constant = toIDMultiple("type", (variable.range as ComplexTypeReference).referred.name) 163 it.constant = toIDMultiple("t", (variable.range as ComplexTypeReference).referred.name)
142 it.terms += createVLSVariable => [ 164 it.terms += createVLSVariable => [
143 it.name = toIDMultiple("Var", variable.name) 165 it.name = toIDMultiple("Var", variable.name)
144 ] 166 ]
@@ -157,5 +179,7 @@ class Logic2VampireLanguageMapper_Support {
157 def protected withAddition(Map<Variable, VLSVariable> map1, Map<Variable, VLSVariable> map2) { 179 def protected withAddition(Map<Variable, VLSVariable> map1, Map<Variable, VLSVariable> map2) {
158 new HashMap(map1) => [putAll(map2)] 180 new HashMap(map1) => [putAll(map2)]
159 } 181 }
182
183
160 184
161} 185}