aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.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_RelationMapper.xtend')
-rw-r--r--Solvers/Vampire-Solver/ca.mcgill.ecse.dslreasoner.vampire.reasoner/src/ca/mcgill/ecse/dslreasoner/vampire/reasoner/builder/Logic2VampireLanguageMapper_RelationMapper.xtend168
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 @@
1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder 1package ca.mcgill.ecse.dslreasoner.vampire.reasoner.builder
2 2
3import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction
4import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable
5import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference 6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ComplexTypeReference
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration 7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition 8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable 9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable
7import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFunction
8import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSTerm
9import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSVariable
10import ca.mcgill.ecse.dslreasoner.vampireLanguage.VLSFofFormula
11import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory
12import java.util.ArrayList 10import java.util.ArrayList
13import java.util.HashMap 11import java.util.HashMap
14import java.util.List 12import 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