aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend38
1 files changed, 32 insertions, 6 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend
index f15f5787..a2d2f625 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend
@@ -162,12 +162,22 @@ class PartialInterpretation2Logic {
162 162
163 def private createLink(RelationLink link, SymbolicDeclaration relationDeclaration) { 163 def private createLink(RelationLink link, SymbolicDeclaration relationDeclaration) {
164 if(link instanceof BinaryElementRelationLink) { 164 if(link instanceof BinaryElementRelationLink) {
165 if((link.param1 !== null) && (link.param2 !== null)) { 165 if ((link.param1 !== null) && (link.param2 !== null)) {
166 return createSymbolicValue=>[ 166 if (typeof(PrimitiveElement).isAssignableFrom(link.param2.class) &&
167 it.symbolicReference=relationDeclaration 167 !(link.param2 as PrimitiveElement).valueSet) {
168 it.parameterSubstitutions += createValueInLink(link.param1) 168 return createSymbolicValue => [
169 it.parameterSubstitutions += createValueInLink(link.param2) 169 it.symbolicReference = relationDeclaration
170 ] 170 it.parameterSubstitutions += createValueInLink(link.param1)
171 it.parameterSubstitutions += createUnkownValueInLink(link.param2)
172 ]
173 } else {
174 return createSymbolicValue => [
175 it.symbolicReference = relationDeclaration
176 it.parameterSubstitutions += createValueInLink(link.param1)
177 it.parameterSubstitutions += createValueInLink(link.param2)
178 ]
179 }
180
171 } else { 181 } else {
172 throw new IllegalArgumentException 182 throw new IllegalArgumentException
173 } 183 }
@@ -189,4 +199,20 @@ class PartialInterpretation2Logic {
189 def private dispatch createValueInLink(DefinedElement element) { 199 def private dispatch createValueInLink(DefinedElement element) {
190 return createSymbolicValue => [it.symbolicReference = element] 200 return createSymbolicValue => [it.symbolicReference = element]
191 } 201 }
202
203 def private dispatch createUnkownValueInLink(BooleanElement element) {
204 Exists[addVar(createBoolTypeReference)]
205 }
206 def private dispatch createUnkownValueInLink(IntegerElement element) {
207 Exists[addVar(createIntTypeReference)]
208 }
209 def private dispatch createUnkownValueInLink(RealElement element) {
210 Exists[addVar(createRealTypeReference)]
211 }
212 def private dispatch createUnkownValueInLink(StringElement element) {
213 throw new UnsupportedOperationException("Currently cannot create an unknown String")
214 }
215 def private dispatch createUnkownValueInLink(DefinedElement element) {
216 Exists[addVar(createComplexTypeReference => [it.referred = element.definedInType.get(0)])]
217 }
192} \ No newline at end of file 218} \ No newline at end of file