diff options
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.xtend | 33 |
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" |