diff options
author | 2019-03-05 13:37:02 -0500 | |
---|---|---|
committer | 2019-03-05 13:37:02 -0500 | |
commit | df12163128073296c4d811fa67b02e37ceb20179 (patch) | |
tree | 7509fdd478d6ff3d908d0ab5aa39ed9a8260f0b0 /Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_TypeMapper_FilteredTypes.xtend | |
parent | Begin handing of scope and fix type definitions. (diff) | |
download | VIATRA-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.xtend | 24 |
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)) |