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.xtend48
1 files changed, 38 insertions, 10 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 bc0b3e23..f2a7b3f2 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
@@ -14,8 +14,9 @@ import java.util.Collection
14import java.util.List 14import java.util.List
15 15
16import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 16import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
17import java.util.Collections
17 18
18class Logic2VampireLanguageMapper_TypeMapper { 19class Logic2VampireLanguageMapper_TypeMapper {
19 private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE 20 private val extension VampireLanguageFactory factory = VampireLanguageFactory.eINSTANCE
20 private val Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support 21 private val Logic2VampireLanguageMapper_Support support = new Logic2VampireLanguageMapper_Support
21 val Logic2VampireLanguageMapper base 22 val Logic2VampireLanguageMapper base
@@ -25,8 +26,9 @@ class Logic2VampireLanguageMapper_TypeMapper {
25 this.base = base 26 this.base = base
26 } 27 }
27 28
28 def protected transformTypes(Collection<Type> types, Collection<DefinedElement> elements, Logic2VampireLanguageMapper mapper, Logic2VampireLanguageMapperTrace trace) { 29 def protected transformTypes(Collection<Type> types, Collection<DefinedElement> elements,
29 30 Logic2VampireLanguageMapper mapper, Logic2VampireLanguageMapperTrace trace) {
31
30// val typeTrace = new Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes 32// val typeTrace = new Logic2VampireLanguageMapper_TypeMapperTrace_FilteredTypes
31// trace.typeMapperTrace = typeTrace 33// trace.typeMapperTrace = typeTrace
32 val VLSVariable variable = createVLSVariable => [it.name = "A"] 34 val VLSVariable variable = createVLSVariable => [it.name = "A"]
@@ -86,14 +88,38 @@ class Logic2VampireLanguageMapper_TypeMapper {
86 88
87 ] 89 ]
88 trace.specification.formulas += res 90 trace.specification.formulas += res
91
92 // Create objects for the enum elements
93 val List<VLSFunction> enumScopeElems = newArrayList
94 for (var i = 0; i < type.elements.length; i++) {
95 val num = i + 1
96 val cstTerm = createVLSFunctionAsTerm => [
97 it.functor = "eo" + num
98 ]
99 val cst = support.toConstant(cstTerm)
100 trace.uniqueInstances.add(cst)
101 val fct = support.duplicate(type.elements.get(i).lookup(trace.element2Predicate), cstTerm)
102 enumScopeElems.add(fct)
103// enumScopeElems.add(support.topLevelTypeFunc(cstTerm))
104 }
105
106
107
108 val enumScope = createVLSFofFormula => [
109 it.name = support.toIDMultiple("enumScope", type.name.split(" ").get(0))
110 // below is temporary solution
111 it.fofRole = "axiom"
112 it.fofFormula = support.unfoldAnd(enumScopeElems)
113 ]
114
115 trace.specification.formulas += enumScope
89 } 116 }
90 117
91 //HIERARCHY HANDLER 118 // HIERARCHY HANDLER
92
93
94 // 3. For each non-abstract type, create an and sequence containing all typedeclaration predicates 119 // 3. For each non-abstract type, create an and sequence containing all typedeclaration predicates
95 // and store in a map 120 // and store in a map
96 for (t1 : types.filter[!isIsAbstract]) { 121// println(types.filter[!isIsAbstract])
122 for (t1 : types.filter[!isIsAbstract].filter(TypeDeclaration)) {
97 for (t2 : types) { 123 for (t2 : types) {
98 // possible improvement: check all supertypes and decide if negated or not based on negations/not negations of supertypes 124 // possible improvement: check all supertypes and decide if negated or not based on negations/not negations of supertypes
99 if (t1 == t2 || support.dfsSupertypeCheck(t1, t2)) { 125 if (t1 == t2 || support.dfsSupertypeCheck(t1, t2)) {
@@ -121,7 +147,9 @@ class Logic2VampireLanguageMapper_TypeMapper {
121 it.operand = createVLSEquivalent => [ 147 it.operand = createVLSEquivalent => [
122 it.left = support.topLevelTypeFunc 148 it.left = support.topLevelTypeFunc
123// it.right = support.unfoldOr(new ArrayList<VLSTerm>(typeTrace.type2And.values)) 149// it.right = support.unfoldOr(new ArrayList<VLSTerm>(typeTrace.type2And.values))
124 it.right = support.unfoldOr(new ArrayList<VLSTerm>(trace.type2And.values)) 150 val reversedList = new ArrayList<VLSTerm>(trace.type2And.values)
151// Collections.reverse(reversedList)
152 it.right = support.unfoldOr(reversedList)
125 ] 153 ]
126 ] 154 ]
127 ] 155 ]
@@ -130,7 +158,7 @@ class Logic2VampireLanguageMapper_TypeMapper {
130 158
131 } 159 }
132 160
133 //below are from previous interface 161 // below are from previous interface
134 def protected transformTypeReference(Type referred, Logic2VampireLanguageMapper mapper, 162 def protected transformTypeReference(Type referred, Logic2VampireLanguageMapper mapper,
135 Logic2VampireLanguageMapperTrace trace) { 163 Logic2VampireLanguageMapperTrace trace) {
136 throw new UnsupportedOperationException("TODO: auto-generated method stub") 164 throw new UnsupportedOperationException("TODO: auto-generated method stub")