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 | 23 |
1 files changed, 14 insertions, 9 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 3bc945df..2f3af593 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 | |||
@@ -44,14 +44,19 @@ class Logic2VampireLanguageMapper_TypeMapper { | |||
44 | 44 | ||
45 | // Create a VLSFunction for each Enum Element | 45 | // Create a VLSFunction for each Enum Element |
46 | val List<VLSFunction> orElems = newArrayList | 46 | val List<VLSFunction> orElems = newArrayList |
47 | |||
47 | for (e : type.elements) { | 48 | for (e : type.elements) { |
49 | val nameArray = e.name.split(" ") | ||
50 | var relNameVar = "" | ||
51 | if (nameArray.length == 3) { | ||
52 | relNameVar = support.toIDMultiple(nameArray.get(0), nameArray.get(2)) | ||
53 | } else { | ||
54 | relNameVar = e.name | ||
55 | } | ||
56 | val relName = relNameVar | ||
57 | |||
48 | val enumElemPred = createVLSFunction => [ | 58 | val enumElemPred = createVLSFunction => [ |
49 | val splitName = e.name.split(" ") | 59 | it.constant = support.toIDMultiple("e", relName) |
50 | if (splitName.length > 2) { | ||
51 | it.constant = support.toIDMultiple("e", splitName.get(0), splitName.get(2)) | ||
52 | } else { | ||
53 | it.constant = support.toIDMultiple("e", splitName.get(0)) | ||
54 | } | ||
55 | it.terms += support.duplicate(variable) | 60 | it.terms += support.duplicate(variable) |
56 | ] | 61 | ] |
57 | trace.element2Predicate.put(e, enumElemPred) | 62 | trace.element2Predicate.put(e, enumElemPred) |
@@ -80,7 +85,7 @@ class Logic2VampireLanguageMapper_TypeMapper { | |||
80 | 85 | ||
81 | // Implement Enum Inheritence Hierarchy | 86 | // Implement Enum Inheritence Hierarchy |
82 | val res = createVLSFofFormula => [ | 87 | val res = createVLSFofFormula => [ |
83 | it.name = support.toIDMultiple("typeDef", type.name.split(" ").get(0)) | 88 | it.name = support.toIDMultiple("typeDef", type.lookup(trace.type2Predicate).constant.toString) |
84 | it.fofRole = "axiom" | 89 | it.fofRole = "axiom" |
85 | it.fofFormula = createVLSUniversalQuantifier => [ | 90 | it.fofFormula = createVLSUniversalQuantifier => [ |
86 | it.variables += support.duplicate(variable) | 91 | it.variables += support.duplicate(variable) |
@@ -105,9 +110,9 @@ class Logic2VampireLanguageMapper_TypeMapper { | |||
105 | val cst = support.toConstant(cstTerm) | 110 | val cst = support.toConstant(cstTerm) |
106 | trace.uniqueInstances.add(cst) | 111 | trace.uniqueInstances.add(cst) |
107 | 112 | ||
108 | val index = i | 113 | val index = i-globalCounter |
109 | val enumScope = createVLSFofFormula => [ | 114 | val enumScope = createVLSFofFormula => [ |
110 | it.name = support.toIDMultiple("enumScope", type.name.split(" ").get(0), | 115 | it.name = support.toIDMultiple("enumScope", type.lookup(trace.type2Predicate).constant.toString, |
111 | type.elements.get(index).name.split(" ").get(0)) | 116 | type.elements.get(index).name.split(" ").get(0)) |
112 | it.fofRole = "axiom" | 117 | it.fofRole = "axiom" |
113 | it.fofFormula = createVLSUniversalQuantifier => [ | 118 | it.fofFormula = createVLSUniversalQuantifier => [ |