diff options
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.xtend | 28 |
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 | |||
13 | import java.util.List | 13 | import java.util.List |
14 | import java.util.Map | 14 | import java.util.Map |
15 | import org.eclipse.emf.common.util.EList | 15 | import org.eclipse.emf.common.util.EList |
16 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSConstant | ||
17 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSInequality | ||
16 | 18 | ||
17 | class Logic2VampireLanguageMapper_Support { | 19 | class 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 | } |