diff options
author | Aren Babikian <aren.babikian@mail.mcgill.ca> | 2021-01-24 01:49:37 +0100 |
---|---|---|
committer | Aren Babikian <aren.babikian@mail.mcgill.ca> | 2021-01-24 01:49:37 +0100 |
commit | 181d6443766d7b2212218b57183dce6af038c199 (patch) | |
tree | 5b19edfeb41bde2b8e4de48ddea679ade8158848 /Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend | |
parent | Sorry, I forgot something last commit (diff) | |
download | VIATRA-Generator-181d6443766d7b2212218b57183dce6af038c199.tar.gz VIATRA-Generator-181d6443766d7b2212218b57183dce6af038c199.tar.zst VIATRA-Generator-181d6443766d7b2212218b57183dce6af038c199.zip |
Fix bug for ignored-attributes + better logic problem creation
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/PartialInterpretation2Logic.xtend')
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 |