diff options
Diffstat (limited to 'Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend')
-rw-r--r-- | Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend | 168 |
1 files changed, 77 insertions, 91 deletions
diff --git a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend index 18e97020..181c59ca 100644 --- a/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend +++ b/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend | |||
@@ -1,14 +1,12 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder | 1 | package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder |
2 | 2 | ||
3 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction | ||
4 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable | ||
5 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory | ||
3 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference | 6 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference |
4 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration | 7 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration |
5 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition | 8 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition |
6 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable | 9 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable |
7 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction | ||
8 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm | ||
9 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable | ||
10 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula | ||
11 | import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory | ||
12 | import java.util.ArrayList | 10 | import java.util.ArrayList |
13 | import java.util.HashMap | 11 | import java.util.HashMap |
14 | import java.util.List | 12 | import java.util.List |
@@ -25,7 +23,7 @@ class Logic2VampireLanguageMapper_RelationMapper { | |||
25 | this.base = base | 23 | this.base = base |
26 | } | 24 | } |
27 | 25 | ||
28 | def dispatch public void transformRelation(RelationDeclaration r, Logic2VampireLanguageMapperTrace trace) { | 26 | def dispatch public void transformRelation(RelationDeclaration r, Logic2VampireLanguageMapperTrace trace, Logic2VampireLanguageMapper mapper) { |
29 | 27 | ||
30 | // 1. store all variables in support wrt their name | 28 | // 1. store all variables in support wrt their name |
31 | // 1.1 if variable has type, creating list of type declarations | 29 | // 1.1 if variable has type, creating list of type declarations |
@@ -81,91 +79,79 @@ class Logic2VampireLanguageMapper_RelationMapper { | |||
81 | trace.specification.formulas += comply | 79 | trace.specification.formulas += comply |
82 | } | 80 | } |
83 | 81 | ||
84 | def dispatch public void transformRelation(RelationDefinition reldef, Logic2VampireLanguageMapperTrace trace) { | 82 | def dispatch public void transformRelation(RelationDefinition r, Logic2VampireLanguageMapperTrace trace, Logic2VampireLanguageMapper mapper) { |
85 | 83 | ||
86 | // // 1. store all variables in support wrt their name | 84 | // println("XXXXXXXXXXXXXXXXX") |
87 | // // 1.1 if variable has type, creating list of type declarations | 85 | |
88 | //// val VLSVariable variable = createVLSVariable => [it.name = "A"] | 86 | // 1. store all variables in support wrt their name |
89 | // val Map<Variable, VLSVariable> relationVar2VLS = new HashMap | 87 | // 1.1 if variable has type, creating list of type declarations |
90 | // val Map<Variable, VLSFunction> relationVar2TypeDecComply = new HashMap | 88 | val Map<Variable, VLSVariable> relVar2VLS = new HashMap |
91 | // val Map<Variable, VLSFunction> relationVar2TypeDecRes = new HashMap | 89 | val List<VLSVariable> vars = newArrayList |
92 | // val typedefs = new ArrayList<VLSTerm> | 90 | val List<VLSFunction> relVar2TypeDecComply = new ArrayList |
93 | // | 91 | for (i : 0 ..< r.parameters.length) { |
94 | // for (variable : reldef.variables) { | 92 | |
95 | // val v = createVLSVariable => [ | 93 | val v = createVLSVariable => [ |
96 | // it.name = support.toIDMultiple("V", variable.name) | 94 | it.name = support.toIDMultiple("V", i.toString) |
97 | // ] | 95 | ] |
98 | // relationVar2VLS.put(variable, v) | 96 | relVar2VLS.put(r.variables.get(i), v) |
99 | // | 97 | vars.add(v) |
100 | // val varTypeComply = createVLSFunction => [ | 98 | |
101 | // it.constant = support.toIDMultiple("t", (variable.range as ComplexTypeReference).referred.name) | 99 | val relType = (r.parameters.get(i) as ComplexTypeReference).referred |
102 | // it.terms += support.duplicate(v) | 100 | val varTypeComply = support.duplicate(relType.lookup(trace.type2Predicate), v) |
103 | // ] | 101 | relVar2TypeDecComply.add(varTypeComply) |
104 | // relationVar2TypeDecComply.put(variable, varTypeComply) | 102 | |
105 | // relationVar2TypeDecRes.put(variable, support.duplicate(varTypeComply)) | 103 | } |
106 | // } | 104 | |
107 | // val nameArray = reldef.name.split(" ") | 105 | //deciding name of relation |
108 | // val comply = createVLSFofFormula => [ | 106 | val nameArray = r.name.split(" ") |
109 | // it.name = support.toIDMultiple("compliance", nameArray.get(nameArray.length - 2), | 107 | var relNameVar = "" |
110 | // nameArray.get(nameArray.length - 1)) | 108 | if (nameArray.length == 3) { |
111 | // it.fofRole = "axiom" | 109 | relNameVar = support.toIDMultiple(nameArray.get(0), nameArray.get(2)) |
112 | // it.fofFormula = createVLSUniversalQuantifier => [ | 110 | } |
113 | // for (variable : reldef.variables) { | 111 | else { |
114 | // it.variables += support.duplicate(variable.lookup(relationVar2VLS)) | 112 | relNameVar = r.name |
115 | // | 113 | } |
116 | // } | 114 | val relName = relNameVar |
117 | // it.operand = createVLSImplies => [ | 115 | |
118 | // it.left = createVLSFunction => [ | 116 | //define logic for pattern |
119 | // it.constant = support.toIDMultiple("rel", reldef.name) | 117 | // val map = new HashMap |
120 | // for (variable : reldef.variables) { | 118 | // map.put(r.variables.get(0), createVLSVariable) |
121 | // val v = createVLSVariable => [ | 119 | val definition = mapper.transformTerm(r.value, trace, relVar2VLS) |
122 | // it.name = variable.lookup(relationVar2VLS).name | 120 | |
123 | // ] | 121 | |
124 | // it.terms += v | 122 | |
125 | // } | 123 | |
126 | // ] | 124 | //get entire contents of and |
127 | // it.right = support.unfoldAnd(new ArrayList<VLSTerm>(relationVar2TypeDecComply.values)) | 125 | val compliance = support.unfoldAnd(relVar2TypeDecComply) |
128 | // ] | 126 | val compDefn = createVLSAnd=> [ |
129 | // ] | 127 | it.left = compliance |
130 | // ] | 128 | it.right = definition |
131 | // | 129 | ] |
132 | // val res = createVLSFofFormula => [ | 130 | |
133 | // it.name = support.toIDMultiple("relation", nameArray.get(nameArray.length - 2), | 131 | val relDef = createVLSFofFormula=> [ |
134 | // nameArray.get(nameArray.length - 1)) | 132 | |
135 | // it.fofRole = "axiom" | 133 | it.name = support.toID(relName) |
136 | // it.fofFormula = createVLSUniversalQuantifier => [ | 134 | it.fofRole = "axiom" |
137 | // for (variable : reldef.variables) { | 135 | it.fofFormula = createVLSUniversalQuantifier => [ |
138 | // val v = createVLSVariable => [ | 136 | for (v : vars) { |
139 | // it.name = variable.lookup(relationVar2VLS).name | 137 | it.variables += support.duplicate(v) |
140 | // ] | 138 | } |
141 | // it.variables += v | 139 | it.operand = createVLSImplies => [ |
142 | // | 140 | val rel = createVLSFunction => [ |
143 | // } | 141 | it.constant = support.toIDMultiple("r", relName) |
144 | // it.operand = createVLSImplies => [ | 142 | for (v : vars) { |
145 | // it.left = support.unfoldAnd(new ArrayList<VLSTerm>(relationVar2TypeDecRes.values)) | 143 | it.terms += support.duplicate(v) |
146 | // it.right = createVLSEquivalent => [ | 144 | } |
147 | // it.left = createVLSFunction => [ | 145 | ] |
148 | // it.constant = support.toIDMultiple("rel", reldef.name) | 146 | trace.relDef2Predicate.put(r, rel) |
149 | // for (variable : reldef.variables) { | 147 | trace.predicate2RelDef.put(rel, r) |
150 | // val v = createVLSVariable => [ | 148 | it.left = support.duplicate(rel) |
151 | // it.name = variable.lookup(relationVar2VLS).name | 149 | it.right = compDefn |
152 | // ] | 150 | ] |
153 | // it.terms += v | 151 | ] |
154 | // | 152 | ] |
155 | // } | 153 | |
156 | // ] | 154 | trace.specification.formulas += relDef |
157 | // it.right = base.transformTerm(reldef.value, trace, relationVar2VLS) | ||
158 | // ] | ||
159 | // | ||
160 | // ] | ||
161 | // | ||
162 | // ] | ||
163 | // | ||
164 | // ] | ||
165 | // | ||
166 | // // trace.relationDefinition2Predicate.put(r,res) | ||
167 | // trace.specification.formulas += comply; | ||
168 | // trace.specification.formulas += res; | ||
169 | 155 | ||
170 | } | 156 | } |
171 | 157 | ||