aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.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_ScopeMapper.xtend')
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_ScopeMapper.xtend25
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
11import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 11import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
12import java.util.HashMap 12import java.util.HashMap
13import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm
14import java.util.List
13 15
14class Logic2VampireLanguageMapper_ScopeMapper { 16class 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