aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend
diff options
context:
space:
mode:
authorLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-03-05 13:37:02 -0500
committerLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-03-05 13:37:02 -0500
commitdf12163128073296c4d811fa67b02e37ceb20179 (patch)
tree7509fdd478d6ff3d908d0ab5aa39ed9a8260f0b0 /Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend
parentBegin handing of scope and fix type definitions. (diff)
downloadVIATRA-Generator-df12163128073296c4d811fa67b02e37ceb20179.tar.gz
VIATRA-Generator-df12163128073296c4d811fa67b02e37ceb20179.tar.zst
VIATRA-Generator-df12163128073296c4d811fa67b02e37ceb20179.zip
Implement type scope handling
Diffstat (limited to 'Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend')
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend24
1 files changed, 11 insertions, 13 deletions
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend
index eed10656..88e1e23a 100644
--- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend
+++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend
@@ -89,27 +89,25 @@ class Logic2VampireLanguageMapper_TypeMapper_FilteredTypes implements Logic2Vamp
89 89
90 // 3. For each non-abstract type, create an and sequence containing all typedeclaration predicates 90 // 3. For each non-abstract type, create an and sequence containing all typedeclaration predicates
91 // and store in a map 91 // and store in a map
92// val List<VLSTerm> type2PossibleNot = new ArrayList 92 for (t1 : types.filter[!isIsAbstract]) {
93// val List<VLSTerm> type2And = new ArrayList 93 for (t2 : types) {
94 for (type : types.filter[!isIsAbstract]) {
95 for (type2 : types) {
96 // possible improvement: check all supertypes and decide if negated or not based on negations/not negations of supertypes 94 // possible improvement: check all supertypes and decide if negated or not based on negations/not negations of supertypes
97 if (type == type2 || dfsSupertypeCheck(type, type2)) { 95 if (t1 == t2 || dfsSupertypeCheck(t1, t2)) {
98 typeTrace.type2PossibleNot.put(type2, createVLSFunction => [ 96 typeTrace.type2PossibleNot.put(t2, createVLSFunction => [
99 it.constant = type2.lookup(typeTrace.type2Predicate).constant 97 it.constant = t2.lookup(typeTrace.type2Predicate).constant
100 it.terms += createVLSVariable => [it.name = "A"] 98 it.terms += support.duplicate(variable)
101 ]) 99 ])
102 } else { 100 } else {
103 typeTrace.type2PossibleNot.put(type2, createVLSUnaryNegation => [ 101 typeTrace.type2PossibleNot.put(t2, createVLSUnaryNegation => [
104 it.operand = createVLSFunction => [ 102 it.operand = createVLSFunction => [
105 it.constant = type2.lookup(typeTrace.type2Predicate).constant 103 it.constant = t2.lookup(typeTrace.type2Predicate).constant
106 it.terms += createVLSVariable => [it.name = "A"] 104 it.terms += support.duplicate(variable)
107 ] 105 ]
108 ]) 106 ])
109 } 107 }
110// typeTrace.type2PossibleNot.put(type2, type2.lookup(typeTrace.type2Predicate)) 108// typeTrace.type2PossibleNot.put(type2, type2.lookup(typeTrace.type2Predicate))
111 } 109 }
112 typeTrace.type2And.put(type, support.unfoldAnd(new ArrayList<VLSTerm>(typeTrace.type2PossibleNot.values))) 110 typeTrace.type2And.put(t1, support.unfoldAnd(new ArrayList<VLSTerm>(typeTrace.type2PossibleNot.values)))
113// typeTrace.type2And.put(type, type.lookup(typeTrace.type2Predicate) ) 111// typeTrace.type2And.put(type, type.lookup(typeTrace.type2Predicate) )
114 typeTrace.type2PossibleNot.clear 112 typeTrace.type2PossibleNot.clear
115 } 113 }
@@ -123,7 +121,7 @@ class Logic2VampireLanguageMapper_TypeMapper_FilteredTypes implements Logic2Vamp
123 it.name = "hierarchyHandler" 121 it.name = "hierarchyHandler"
124 it.fofRole = "axiom" 122 it.fofRole = "axiom"
125 it.fofFormula = createVLSUniversalQuantifier => [ 123 it.fofFormula = createVLSUniversalQuantifier => [
126 it.variables += createVLSVariable => [it.name = "A"] 124 it.variables += support.duplicate(variable)
127 it.operand = createVLSEquivalent => [ 125 it.operand = createVLSEquivalent => [
128 it.left = support.topLevelTypeFunc 126 it.left = support.topLevelTypeFunc
129 it.right = support.unfoldOr(new ArrayList<VLSTerm>(typeTrace.type2And.values)) 127 it.right = support.unfoldOr(new ArrayList<VLSTerm>(typeTrace.type2And.values))