aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.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_TypeMapper.xtend')
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend33
1 files changed, 29 insertions, 4 deletions
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend
index 4c4247ce..1719bbcc 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper.xtend
@@ -91,13 +91,12 @@ class Logic2VampireLanguageMapper_TypeMapper {
91 it.right = support.unfoldOr(typeDefs) 91 it.right = support.unfoldOr(typeDefs)
92 ] 92 ]
93// it.right = support.unfoldOr((typeDefs)) 93// it.right = support.unfoldOr((typeDefs))
94
95 ] 94 ]
96 ] 95 ]
97 ] 96 ]
98 trace.specification.formulas += res 97 trace.specification.formulas += res
99 98
100 for (var i = globalCounter; i < globalCounter+type.elements.length; i++) { 99 for (var i = globalCounter; i < globalCounter + type.elements.length; i++) {
101 // Create objects for the enum elements 100 // Create objects for the enum elements
102 val num = i + 1 101 val num = i + 1
103 val cstTerm = createVLSFunctionAsTerm => [ 102 val cstTerm = createVLSFunctionAsTerm => [
@@ -127,7 +126,7 @@ class Logic2VampireLanguageMapper_TypeMapper {
127 trace.specification.formulas += enumScope 126 trace.specification.formulas += enumScope
128 127
129 } 128 }
130 globalCounter+=type.elements.size 129 globalCounter += type.elements.size
131 } 130 }
132 131
133 // HIERARCHY HANDLER 132 // HIERARCHY HANDLER
@@ -148,9 +147,35 @@ class Logic2VampireLanguageMapper_TypeMapper {
148// typeTrace.type2PossibleNot.clear 147// typeTrace.type2PossibleNot.clear
149 trace.type2And.put(t1, support.unfoldAnd(new ArrayList<VLSTerm>(trace.type2PossibleNot.values))) 148 trace.type2And.put(t1, support.unfoldAnd(new ArrayList<VLSTerm>(trace.type2PossibleNot.values)))
150 trace.type2PossibleNot.clear 149 trace.type2PossibleNot.clear
150
151 }
152
153 // 4. case where an object is not an object
154 val List<VLSTerm> type2Not = newArrayList
155
156 for(t : types) {
157 type2Not.add(createVLSUnaryNegation => [
158 it.operand = support.duplicate(t.lookup(trace.type2Predicate))
159 ])
151 } 160 }
152 161
153 // 5. create fof function that is an or with all the elements in map 162 val notObj = createVLSFofFormula => [
163 it.name = "notObjectHandler"
164 it.fofRole = "axiom"
165 it.fofFormula = createVLSUniversalQuantifier => [
166 it.variables += support.duplicate(variable)
167 it.operand = createVLSEquivalent => [
168 it.left = createVLSUnaryNegation => [
169 it.operand = support.topLevelTypeFunc
170 ]
171 it.right = support.unfoldAnd(type2Not)
172 ]
173 ]
174 ]
175
176 trace.specification.formulas += notObj
177
178 // 4. create fof function that is an or with all the elements in map
154 val hierarch = createVLSFofFormula => [ 179 val hierarch = createVLSFofFormula => [
155 it.name = "inheritanceHierarchyHandler" 180 it.name = "inheritanceHierarchyHandler"
156 it.fofRole = "axiom" 181 it.fofRole = "axiom"