diff options
Diffstat (limited to 'Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend')
-rw-r--r-- | Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend index 5c5eaff3..548deda4 100644 --- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend | |||
@@ -10,6 +10,8 @@ import java.util.Map | |||
10 | 10 | ||
11 | import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* | 11 | import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* |
12 | import java.util.HashMap | 12 | import java.util.HashMap |
13 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm | ||
14 | import java.util.List | ||
13 | 15 | ||
14 | class Logic2VampireLanguageMapper_ScopeMapper { | 16 | class Logic2VampireLanguageMapper_ScopeMapper { |
15 | private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE | 17 | private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE |
@@ -24,7 +26,8 @@ class Logic2VampireLanguageMapper_ScopeMapper { | |||
24 | def dispatch public void transformScope(LogicSolverConfiguration config, Logic2VampireLanguageMapperTrace trace) { | 26 | def dispatch public void transformScope(LogicSolverConfiguration config, Logic2VampireLanguageMapperTrace trace) { |
25 | 27 | ||
26 | // TODO HANDLE ERRORS RELATED TO MAX > MIN | 28 | // TODO HANDLE ERRORS RELATED TO MAX > MIN |
27 | // TODO HANDLE ERROR RELATED TO SUM(MIN TYPES) > MAX OBJECTS | 29 | // TODO HANDLE ERROR RELATED TO SUM(MIN TYPES)+1(for root) > MAX OBJECTS |
30 | // TODO HANDLE | ||
28 | // TODO NOT SPECIFIED MEANS =0 ? | 31 | // TODO NOT SPECIFIED MEANS =0 ? |
29 | // 1. make a list of constants equaling the min number of specified objects | 32 | // 1. make a list of constants equaling the min number of specified objects |
30 | val GLOBAL_MIN = config.typeScopes.minNewElements | 33 | val GLOBAL_MIN = config.typeScopes.minNewElements |
@@ -34,18 +37,22 @@ class Logic2VampireLanguageMapper_ScopeMapper { | |||
34 | 37 | ||
35 | // Handling Minimum_General | 38 | // Handling Minimum_General |
36 | if (GLOBAL_MIN != 0) { | 39 | if (GLOBAL_MIN != 0) { |
37 | getInstanceConstants(GLOBAL_MIN, 0, localInstances, trace, true, false) // fix last param | 40 | getInstanceConstants(GLOBAL_MIN, 0, localInstances, trace, true, false) |
41 | for(i : trace.uniqueInstances){ | ||
42 | localInstances.add(support.duplicate(i)) | ||
43 | } | ||
44 | |||
38 | makeFofFormula(localInstances, trace, true, null) | 45 | makeFofFormula(localInstances, trace, true, null) |
39 | } | 46 | } |
40 | 47 | ||
41 | // Handling Maximum_General | 48 | // Handling Maximum_General |
42 | if (GLOBAL_MAX != 0) { | 49 | if (GLOBAL_MAX != 0) { |
43 | getInstanceConstants(GLOBAL_MAX, 0, localInstances, trace, true, true) // fix last param | 50 | getInstanceConstants(GLOBAL_MAX, 0, localInstances, trace, true, true) |
44 | makeFofFormula(localInstances, trace, false, null) | 51 | makeFofFormula(trace.uniqueInstances as ArrayList, trace, false, null) |
45 | } | 52 | } |
46 | 53 | ||
47 | // Handling Minimum_Specific | 54 | // Handling Minimum_Specific |
48 | var i = 0 | 55 | var i = 1 |
49 | var minNum = -1 | 56 | var minNum = -1 |
50 | var Map<Type, Integer> startPoints = new HashMap | 57 | var Map<Type, Integer> startPoints = new HashMap |
51 | for (t : config.typeScopes.minNewElementsByType.keySet) { | 58 | for (t : config.typeScopes.minNewElementsByType.keySet) { |
@@ -106,13 +113,17 @@ class Logic2VampireLanguageMapper_ScopeMapper { | |||
106 | def protected void makeFofFormula(ArrayList list, Logic2VampireLanguageMapperTrace trace, boolean minimum, | 113 | def protected void makeFofFormula(ArrayList list, Logic2VampireLanguageMapperTrace trace, boolean minimum, |
107 | Type type) { | 114 | Type type) { |
108 | var nm = "" | 115 | var nm = "" |
109 | var VLSFunction tm = null | 116 | var VLSTerm tm = null |
110 | if (type === null) { | 117 | if (type === null) { |
111 | nm = "object" | 118 | nm = "object" |
112 | tm = support.topLevelTypeFunc | 119 | tm = support.topLevelTypeFunc |
113 | } else { | 120 | } else { |
114 | nm = type.lookup(trace.type2Predicate).constant.toString | 121 | nm = type.lookup(trace.type2Predicate).constant.toString |
115 | tm = support.duplicate(type.lookup(trace.type2Predicate)) | 122 | tm = createVLSAnd => [ |
123 | it.left = support.duplicate(type.lookup(trace.type2Predicate)) | ||
124 | it.right = support.topLevelTypeFunc | ||
125 | ] | ||
126 | // tm = support.duplicate(type.lookup(trace.type2Predicate)) | ||
116 | } | 127 | } |
117 | val name = nm | 128 | val name = nm |
118 | val term = tm | 129 | val term = tm |