aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/src/hu/bme/mit/inf/dslreasoner/ecore2logic/Ecore2Logic.xtend10
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicModelInterpretation.xtend76
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend49
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend63
4 files changed, 139 insertions, 59 deletions
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/src/hu/bme/mit/inf/dslreasoner/ecore2logic/Ecore2Logic.xtend b/Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/src/hu/bme/mit/inf/dslreasoner/ecore2logic/Ecore2Logic.xtend
index cae489e3..85b488eb 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/src/hu/bme/mit/inf/dslreasoner/ecore2logic/Ecore2Logic.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.ecore2logic/src/hu/bme/mit/inf/dslreasoner/ecore2logic/Ecore2Logic.xtend
@@ -1,7 +1,13 @@
1package hu.bme.mit.inf.dslreasoner.ecore2logic 1package hu.bme.mit.inf.dslreasoner.ecore2logic
2 2
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
4import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Term
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TermDescription
7import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.ContainmentHierarchy
3import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem 8import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
4import java.util.List 9import java.util.List
10import java.util.Set
5import org.eclipse.emf.ecore.EAttribute 11import org.eclipse.emf.ecore.EAttribute
6import org.eclipse.emf.ecore.EClass 12import org.eclipse.emf.ecore.EClass
7import org.eclipse.emf.ecore.EEnum 13import org.eclipse.emf.ecore.EEnum
@@ -9,10 +15,6 @@ import org.eclipse.emf.ecore.EEnumLiteral
9import org.eclipse.emf.ecore.EReference 15import org.eclipse.emf.ecore.EReference
10import org.eclipse.xtend.lib.annotations.Data 16import org.eclipse.xtend.lib.annotations.Data
11import org.eclipse.xtend.lib.annotations.Delegate 17import org.eclipse.xtend.lib.annotations.Delegate
12import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput
13import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
14import java.util.Set
15import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.ContainmentHierarchy
16 18
17@Data class EcoreMetamodelDescriptor { 19@Data class EcoreMetamodelDescriptor {
18 val List<EClass> classes; 20 val List<EClass> classes;
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicModelInterpretation.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicModelInterpretation.xtend
index 905859eb..cdcbb48a 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicModelInterpretation.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicModelInterpretation.xtend
@@ -3,22 +3,27 @@ package hu.bme.mit.inf.dslreasoner.logic.model.builder
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration 3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement 4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDeclaration 5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.FunctionDeclaration
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory
6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration 7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TermDescription
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type 9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration 10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration
9import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition 11import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition
12import java.math.BigDecimal
10import java.util.List 13import java.util.List
14import java.util.Map
15import java.util.SortedSet
16import java.util.TreeSet
11 17
12import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 18import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
13import java.util.SortedSet
14import java.math.BigDecimal
15 19
16interface LogicModelInterpretation{ 20interface LogicModelInterpretation {
17 21
18 /** 22 /**
19 * Returns the elements of a type. 23 * Returns the elements of a type.
20 */ 24 */
21 def List<DefinedElement> getElements(Type type) 25 def List<DefinedElement> getElements(Type type)
26
22 /** 27 /**
23 * Returns the interpretation of a function. The parameters and the return values are encoded to primitive java objects defined by the following table: 28 * Returns the interpretation of a function. The parameters and the return values are encoded to primitive java objects defined by the following table:
24 * <p><table> 29 * <p><table>
@@ -34,6 +39,7 @@ interface LogicModelInterpretation{
34 * @return The result of the function call encoded as defined in the table. 39 * @return The result of the function call encoded as defined in the table.
35 */ 40 */
36 def Object getInterpretation(FunctionDeclaration function, Object[] parameterSubstitution) 41 def Object getInterpretation(FunctionDeclaration function, Object[] parameterSubstitution)
42
37 /** 43 /**
38 * Returns the interpretation of a relation. The parameters are encoded to primitive java objects defined by the following table: 44 * Returns the interpretation of a relation. The parameters are encoded to primitive java objects defined by the following table:
39 * <p><table> 45 * <p><table>
@@ -49,6 +55,7 @@ interface LogicModelInterpretation{
49 * @return If the parameter tuple is in the relation. 55 * @return If the parameter tuple is in the relation.
50 */ 56 */
51 def boolean getInterpretation(RelationDeclaration relation, Object[] parameterSubstitution) 57 def boolean getInterpretation(RelationDeclaration relation, Object[] parameterSubstitution)
58
52 /** 59 /**
53 * Returns the interpretation of a constant. The value is encoded to primitive java objects defined by the following table: 60 * Returns the interpretation of a constant. The value is encoded to primitive java objects defined by the following table:
54 * <p><table> 61 * <p><table>
@@ -63,60 +70,89 @@ interface LogicModelInterpretation{
63 * @return The value of the constant encoded as specified in the table. 70 * @return The value of the constant encoded as specified in the table.
64 */ 71 */
65 def Object getInterpretation(ConstantDeclaration constant) 72 def Object getInterpretation(ConstantDeclaration constant)
66 73
67 /** 74 /**
68 * Returns all integers relevant to the logic structure. Not all integer is necessarily used. 75 * Returns all integers relevant to the logic structure. Not all integer is necessarily used.
69 */ 76 */
70 def SortedSet<Integer> getAllIntegersInStructure() 77 def SortedSet<Integer> getAllIntegersInStructure()
78
79 def Map<TermDescription, Integer> getAllIntegersWithInterpretation() {
80 allIntegersInStructure.toMap [ integer |
81 (LogiclanguageFactory.eINSTANCE.createIntLiteral => [value = integer]) as TermDescription
82 ]
83 }
84
71 /** 85 /**
72 * Returns all real numbers relevant to the logic structure. Not all integer is necessarily used. 86 * Returns all real numbers relevant to the logic structure. Not all integer is necessarily used.
73 */ 87 */
74 def SortedSet<BigDecimal> getAllRealsInStructure() 88 def SortedSet<BigDecimal> getAllRealsInStructure()
75 /** 89
90 def Map<TermDescription, BigDecimal> getAllRealsWithInterpretation() {
91 allRealsInStructure.toMap [ real |
92 (LogiclanguageFactory.eINSTANCE.createRealLiteral => [value = real]) as TermDescription
93 ]
94 }
95
96 /**
76 * Returns all string values relevant to the logic structure. Not all integer is necessarily used. 97 * Returns all string values relevant to the logic structure. Not all integer is necessarily used.
77 */ 98 */
78 def SortedSet<String> getAllStringsInStructure() 99 def SortedSet<String> getAllStringsInStructure()
100
101 def Map<TermDescription, String> getAllStringsWithInterpretation() {
102 allStringsInStructure.toMap [ string |
103 (LogiclanguageFactory.eINSTANCE.createStringLiteral => [value = string]) as TermDescription
104 ]
105 }
106
107 def SortedSet<Boolean> getAllBooleansInStructure() {
108 new TreeSet(#{true, false})
109 }
110
111 def Map<TermDescription, Boolean> getAllBooleansWithInterpretation() {
112 allBooleansInStructure.toMap [ bool |
113 (LogiclanguageFactory.eINSTANCE.createBoolLiteral => [value = bool]) as TermDescription
114 ]
115 }
79} 116}
80 117
81class Uninterpreted implements LogicModelInterpretation { 118class Uninterpreted implements LogicModelInterpretation {
82 /*private val static unknownBecauseUninterpreted = LogiclanguageFactory.eINSTANCE.createUnknownBecauseUninterpreted 119 /*private val static unknownBecauseUninterpreted = LogiclanguageFactory.eINSTANCE.createUnknownBecauseUninterpreted
83 public def static getUnknownBecauseUninterpreted() {return Uninterpreted.unknownBecauseUninterpreted}*/ 120 public def static getUnknownBecauseUninterpreted() {return Uninterpreted.unknownBecauseUninterpreted}*/
84
85 override getElements(Type type) { 121 override getElements(Type type) {
86 throw new UnsupportedOperationException("The interpteration is unknown.") 122 throw new UnsupportedOperationException("The interpteration is unknown.")
87 } 123 }
88 124
89 def getKnownElements(Type type) { 125 def getKnownElements(Type type) {
90 val allSubtypes = type.transitiveClosureStar[it.subtypes] 126 val allSubtypes = type.transitiveClosureStar[it.subtypes]
91 return allSubtypes.filter(TypeDefinition).map[elements].flatten.toList 127 return allSubtypes.filter(TypeDefinition).map[elements].flatten.toList
92 } 128 }
93 129
94 def allElementsAreInterpreted(Type type) { 130 def allElementsAreInterpreted(Type type) {
95 val allSubtypes = type.transitiveClosureStar[it.subtypes] 131 val allSubtypes = type.transitiveClosureStar[it.subtypes]
96 return allSubtypes.exists[it instanceof TypeDeclaration] 132 return allSubtypes.exists[it instanceof TypeDeclaration]
97 } 133 }
98 134
99 override getInterpretation(FunctionDeclaration function, Object[] parameterSubstitution) { 135 override getInterpretation(FunctionDeclaration function, Object[] parameterSubstitution) {
100 throw new UnsupportedOperationException("The interpteration is unknown.") 136 throw new UnsupportedOperationException("The interpteration is unknown.")
101 } 137 }
102 138
103 override getInterpretation(RelationDeclaration relation, Object[] parameterSubstitution) { 139 override getInterpretation(RelationDeclaration relation, Object[] parameterSubstitution) {
104 throw new UnsupportedOperationException("The interpteration is unknown.") 140 throw new UnsupportedOperationException("The interpteration is unknown.")
105 } 141 }
106 142
107 override getInterpretation(ConstantDeclaration constant) { 143 override getInterpretation(ConstantDeclaration constant) {
108 throw new UnsupportedOperationException("The interpteration is unknown.") 144 throw new UnsupportedOperationException("The interpteration is unknown.")
109 } 145 }
110 146
111 override getAllIntegersInStructure() { 147 override getAllIntegersInStructure() {
112 throw new UnsupportedOperationException("The interpteration is unknown.") 148 throw new UnsupportedOperationException("The interpteration is unknown.")
113 } 149 }
114 150
115 override getAllRealsInStructure() { 151 override getAllRealsInStructure() {
116 throw new UnsupportedOperationException("The interpteration is unknown.") 152 throw new UnsupportedOperationException("The interpteration is unknown.")
117 } 153 }
118 154
119 override getAllStringsInStructure() { 155 override getAllStringsInStructure() {
120 throw new UnsupportedOperationException("The interpteration is unknown.") 156 throw new UnsupportedOperationException("The interpteration is unknown.")
121 } 157 }
122} \ No newline at end of file 158}
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend
index 08c6b7b7..8d6b565a 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend
@@ -3,25 +3,24 @@ package hu.bme.mit.inf.dslreasoner.logic2ecore
3import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic 3import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
4import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace 4import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace
5import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation 5import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation
6import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
6import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder 7import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TermDescription
9import java.math.BigDecimal
7import java.util.Collection 10import java.util.Collection
8import java.util.HashMap 11import java.util.HashMap
9import java.util.HashSet 12import java.util.HashSet
10import java.util.List 13import java.util.List
14import java.util.Map
11import java.util.Set 15import java.util.Set
12import org.eclipse.emf.ecore.EClass 16import org.eclipse.emf.ecore.EClass
17import org.eclipse.emf.ecore.EDataType
18import org.eclipse.emf.ecore.EEnum
13import org.eclipse.emf.ecore.EObject 19import org.eclipse.emf.ecore.EObject
14import org.eclipse.emf.ecore.EStructuralFeature 20import org.eclipse.emf.ecore.EStructuralFeature
21import org.eclipse.emf.ecore.EcorePackage
15 22
16import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 23import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
17import org.eclipse.emf.ecore.EEnum
18import org.eclipse.emf.ecore.EDataType
19import org.eclipse.emf.ecore.EcorePackage
20import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TermDescription
21import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder
22import java.util.Map
23import org.eclipse.emf.ecore.EAttribute
24import java.math.BigDecimal
25 24
26class Logic2Ecore { 25class Logic2Ecore {
27 val extension LogicStructureBuilder structureBuilder = new LogicStructureBuilder 26 val extension LogicStructureBuilder structureBuilder = new LogicStructureBuilder
@@ -86,15 +85,15 @@ class Logic2Ecore {
86 if(attributeType.EContainingClass.isSuperTypeOf(sourceObject.eClass)) { 85 if(attributeType.EContainingClass.isSuperTypeOf(sourceObject.eClass)) {
87 val allElementsOfTargetDatatype = getAllElementsOfDatatype(attributeType.EAttributeType,forwardTrace,interpretation) 86 val allElementsOfTargetDatatype = getAllElementsOfDatatype(attributeType.EAttributeType,forwardTrace,interpretation)
88 for(l : allElementsOfTargetDatatype.entrySet) { 87 for(l : allElementsOfTargetDatatype.entrySet) {
89 val expression = ecore2Logic.IsAttributeValue(forwardTrace,sourceElement,l.value,attributeType) 88 val expression = ecore2Logic.IsAttributeValue(forwardTrace,sourceElement,l.key,attributeType)
90 val linkExist = interpretation.evalAsBool(expression) 89 val linkExist = interpretation.evalAsBool(expression)
91 if(linkExist) { 90 if(linkExist) {
92 if(attributeType.isMany) { 91 if(attributeType.isMany) {
93 val list = sourceObject.eGet(attributeType) as List<? super Object> 92 val list = sourceObject.eGet(attributeType) as List<? super Object>
94 list += l.key 93 list += l.value
95 } else { 94 } else {
96 try { 95 try {
97 sourceObject.eSet(attributeType,translateType(attributeType.EAttributeType,l.key)) 96 sourceObject.eSet(attributeType,translateType(attributeType.EAttributeType,l.value))
98 } catch(Exception e) { 97 } catch(Exception e) {
99 e.printStackTrace 98 e.printStackTrace
100 } 99 }
@@ -119,34 +118,20 @@ class Logic2Ecore {
119 } else return value 118 } else return value
120 } 119 }
121 120
122 121 protected dispatch def Map<? extends TermDescription, ? extends Object> getAllElementsOfDatatype(EEnum type, Ecore2Logic_Trace forwardTrace, LogicModelInterpretation interpretation) {
123// if(attributeType.EAttributeType.isSuperTypeOf(targetObject.eClass)) { 122 ecore2Logic.allLiteralsInScope(forwardTrace).toMap[ecore2Logic.Literal(forwardTrace,it)]
124// val expression = ecore2Logic.IsAttributeValue(forwardTrace,sourceElement,targetElement,attributeType)
125// val linkExist = interpretation.evalAsBool(expression)
126// if(linkExist) {
127// if(attributeType.isMany) {
128// val list = sourceObject.eGet(attributeType) as List<? super EObject>
129// list+= targetObject
130// } else {
131// sourceObject.eSet(referenceType,targetObject)
132// }
133// }
134// }
135
136 protected dispatch def Map<? extends Object, ? extends TermDescription> getAllElementsOfDatatype(EEnum type, Ecore2Logic_Trace forwardTrace, LogicModelInterpretation interpretation) {
137 ecore2Logic.allLiteralsInScope(forwardTrace).toInvertedMap[ecore2Logic.Literal(forwardTrace,it)]
138 } 123 }
139 124
140 protected dispatch def Map<? extends Object, ? extends TermDescription> getAllElementsOfDatatype(EDataType primitive, Ecore2Logic_Trace forwardTrace, LogicModelInterpretation interpretation) { 125 protected dispatch def Map<? extends TermDescription, ? extends Object> getAllElementsOfDatatype(EDataType primitive, Ecore2Logic_Trace forwardTrace, LogicModelInterpretation interpretation) {
141 val extension LogicProblemBuilder b = new LogicProblemBuilder 126 val extension LogicProblemBuilder b = new LogicProblemBuilder
142 if(primitive === EcorePackage.eINSTANCE.EInt || primitive === EcorePackage.eINSTANCE.EShort || primitive === EcorePackage.eINSTANCE.ELong) { 127 if(primitive === EcorePackage.eINSTANCE.EInt || primitive === EcorePackage.eINSTANCE.EShort || primitive === EcorePackage.eINSTANCE.ELong) {
143 interpretation.allIntegersInStructure.toInvertedMap[it.asTerm] 128 interpretation.allIntegersWithInterpretation
144 } else if(primitive === EcorePackage.eINSTANCE.EDouble || primitive === EcorePackage.eINSTANCE.EFloat) { 129 } else if(primitive === EcorePackage.eINSTANCE.EDouble || primitive === EcorePackage.eINSTANCE.EFloat) {
145 interpretation.allRealsInStructure.toInvertedMap[it.asTerm] 130 interpretation.allRealsWithInterpretation
146 } else if(primitive === EcorePackage.eINSTANCE.EString) { 131 } else if(primitive === EcorePackage.eINSTANCE.EString) {
147 interpretation.allStringsInStructure.toInvertedMap[it.asTerm] 132 interpretation.allStringsWithInterpretation
148 } else if(primitive === EcorePackage.eINSTANCE.EBoolean) { 133 } else if(primitive === EcorePackage.eINSTANCE.EBoolean) {
149 return #[false,true].toInvertedMap[it.asTerm] 134 interpretation.allBooleansWithInterpretation
150 } 135 }
151 } 136 }
152 137
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend
index f61c7333..48922f5d 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend
@@ -1,5 +1,6 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse 1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse
2 2
3import com.google.common.collect.ImmutableMap
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation 4import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicModelInterpretation
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration 5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration
5import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement 6import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
@@ -153,14 +154,70 @@ class PartialModelAsLogicInterpretation implements LogicModelInterpretation{
153 } 154 }
154 155
155 override getAllIntegersInStructure() { 156 override getAllIntegersInStructure() {
156 new TreeSet(this.integerForwardTrace.keySet) 157 new TreeSet(allIntegersWithInterpretation.values)
158 }
159
160 override getAllIntegersWithInterpretation() {
161 val builder = new HashMap
162 for (entry : integerForwardTrace.entrySet) {
163 builder.put(entry.value, entry.key)
164 }
165 for (element : partialInterpretation.newElements) {
166 if (element instanceof IntegerElement) {
167 builder.put(element, element.value)
168 }
169 }
170 builder
157 } 171 }
158 172
159 override getAllRealsInStructure() { 173 override getAllRealsInStructure() {
160 new TreeSet(this.realForwardTrace.keySet) 174 new TreeSet(allRealsWithInterpretation.values)
175 }
176
177 override getAllRealsWithInterpretation() {
178 val builder = new HashMap
179 for (entry : realForwardTrace.entrySet) {
180 builder.put(entry.value, entry.key)
181 }
182 for (element : partialInterpretation.newElements) {
183 if (element instanceof RealElement) {
184 builder.put(element, element.value)
185 }
186 }
187 builder
161 } 188 }
162 189
163 override getAllStringsInStructure() { 190 override getAllStringsInStructure() {
164 new TreeSet(this.stringForwardTrace.keySet) 191 new TreeSet(allStringsWithInterpretation.values)
192 }
193
194 override getAllStringsWithInterpretation() {
195 val builder = new HashMap
196 for (entry : stringForwardTrace.entrySet) {
197 builder.put(entry.value, entry.key)
198 }
199 for (element : partialInterpretation.newElements) {
200 if (element instanceof StringElement) {
201 builder.put(element, element.value)
202 }
203 }
204 builder
205 }
206
207 override getAllBooleansInStructure() {
208 new TreeSet(allBooleansWithInterpretation.values)
209 }
210
211 override getAllBooleansWithInterpretation() {
212 val builder = new HashMap
213 for (entry : booleanForwardTrace.entrySet) {
214 builder.put(entry.value, entry.key)
215 }
216 for (element : partialInterpretation.newElements) {
217 if (element instanceof BooleanElement) {
218 builder.put(element, element.value)
219 }
220 }
221 builder
165 } 222 }
166} \ No newline at end of file 223} \ No newline at end of file