aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator')
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/PartialSymbolTranslator.java5
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainmentLinkRefiner.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainsRefiner.java6
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/InferredContainment.java4
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceInitializer.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilder.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/EqualsRefiner.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/ExistsRefiner.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectStorageRefiner.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeInterpretation.java8
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeRefiner.java7
12 files changed, 23 insertions, 21 deletions
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/PartialSymbolTranslator.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/PartialSymbolTranslator.java
index 6cdb287d..f2583098 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/PartialSymbolTranslator.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/PartialSymbolTranslator.java
@@ -6,6 +6,7 @@
6package tools.refinery.store.reasoning.translator; 6package tools.refinery.store.reasoning.translator;
7 7
8import org.jetbrains.annotations.Nullable; 8import org.jetbrains.annotations.Nullable;
9import tools.refinery.logic.AbstractValue;
9import tools.refinery.store.dse.transition.DesignSpaceExplorationBuilder; 10import tools.refinery.store.dse.transition.DesignSpaceExplorationBuilder;
10import tools.refinery.store.dse.transition.Rule; 11import tools.refinery.store.dse.transition.Rule;
11import tools.refinery.store.dse.transition.objectives.Criterion; 12import tools.refinery.store.dse.transition.objectives.Criterion;
@@ -25,8 +26,8 @@ import java.util.ArrayList;
25import java.util.List; 26import java.util.List;
26 27
27@SuppressWarnings("UnusedReturnValue") 28@SuppressWarnings("UnusedReturnValue")
28public abstract sealed class PartialSymbolTranslator<A, C> implements AnyPartialSymbolTranslator 29public abstract sealed class PartialSymbolTranslator<A extends AbstractValue<A, C>, C>
29 permits PartialRelationTranslator { 30 implements AnyPartialSymbolTranslator permits PartialRelationTranslator {
30 private final PartialSymbol<A, C> partialSymbol; 31 private final PartialSymbol<A, C> partialSymbol;
31 private boolean configured = false; 32 private boolean configured = false;
32 protected PartialInterpretationRefiner.Factory<A, C> interpretationRefiner; 33 protected PartialInterpretationRefiner.Factory<A, C> interpretationRefiner;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainmentLinkRefiner.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainmentLinkRefiner.java
index ef007efc..e83c33ac 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainmentLinkRefiner.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainmentLinkRefiner.java
@@ -64,7 +64,7 @@ class ContainmentLinkRefiner extends AbstractPartialInterpretationRefiner<TruthV
64 if (mustLinks.contains(factory.linkType)) { 64 if (mustLinks.contains(factory.linkType)) {
65 return oldValue; 65 return oldValue;
66 } 66 }
67 return new InferredContainment(oldValue.contains().merge(TruthValue.TRUE), 67 return new InferredContainment(oldValue.contains().meet(TruthValue.TRUE),
68 addToSet(mustLinks, factory.linkType), oldValue.forbiddenLinks()); 68 addToSet(mustLinks, factory.linkType), oldValue.forbiddenLinks());
69 } 69 }
70 70
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainsRefiner.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainsRefiner.java
index 3fe63339..00820040 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainsRefiner.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainsRefiner.java
@@ -1,5 +1,5 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2023-2024 The Refinery Authors <https://refinery.tools/>
3 * 3 *
4 * SPDX-License-Identifier: EPL-2.0 4 * SPDX-License-Identifier: EPL-2.0
5 */ 5 */
@@ -23,7 +23,7 @@ class ContainsRefiner extends AbstractPartialInterpretationRefiner<TruthValue, B
23 23
24 static { 24 static {
25 var values = TruthValue.values(); 25 var values = TruthValue.values();
26 EMPTY_VALUES = new LinkedHashMap<>(values.length); 26 EMPTY_VALUES = LinkedHashMap.newLinkedHashMap(values.length);
27 for (var value : values) { 27 for (var value : values) {
28 EMPTY_VALUES.put(value, new InferredContainment(value, Set.of(), Set.of())); 28 EMPTY_VALUES.put(value, new InferredContainment(value, Set.of(), Set.of()));
29 } 29 }
@@ -53,7 +53,7 @@ class ContainsRefiner extends AbstractPartialInterpretationRefiner<TruthValue, B
53 } 53 }
54 54
55 public InferredContainment mergeLink(InferredContainment oldValue, TruthValue toMerge) { 55 public InferredContainment mergeLink(InferredContainment oldValue, TruthValue toMerge) {
56 var newContains = oldValue.contains().merge(toMerge); 56 var newContains = oldValue.contains().meet(toMerge);
57 if (newContains.equals(oldValue.contains())) { 57 if (newContains.equals(oldValue.contains())) {
58 return oldValue; 58 return oldValue;
59 } 59 }
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/InferredContainment.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/InferredContainment.java
index 77c7aaf4..0b6503c3 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/InferredContainment.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/InferredContainment.java
@@ -31,11 +31,11 @@ final class InferredContainment {
31 Set<PartialRelation> forbiddenLinks) { 31 Set<PartialRelation> forbiddenLinks) {
32 var result = contains; 32 var result = contains;
33 if (!mustLinks.isEmpty()) { 33 if (!mustLinks.isEmpty()) {
34 result = result.merge(TruthValue.TRUE); 34 result = result.meet(TruthValue.TRUE);
35 } 35 }
36 boolean hasErrorLink = mustLinks.stream().anyMatch(forbiddenLinks::contains); 36 boolean hasErrorLink = mustLinks.stream().anyMatch(forbiddenLinks::contains);
37 if (mustLinks.size() >= 2 || hasErrorLink) { 37 if (mustLinks.size() >= 2 || hasErrorLink) {
38 result = result.merge(TruthValue.ERROR); 38 result = result.meet(TruthValue.ERROR);
39 } 39 }
40 return result; 40 return result;
41 } 41 }
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceInitializer.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceInitializer.java
index 5bb1b967..84dcfdc5 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceInitializer.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceInitializer.java
@@ -73,7 +73,7 @@ class UndirectedCrossReferenceInitializer implements PartialModelInitializer {
73 // Already processed entry. 73 // Already processed entry.
74 continue; 74 continue;
75 } 75 }
76 var mergedValue = value.merge(oppositeValue == null ? defaultValue : oppositeValue); 76 var mergedValue = value.meet(oppositeValue == null ? defaultValue : oppositeValue);
77 mergedMap.put(key, mergedValue); 77 mergedMap.put(key, mergedValue);
78 if (first != second) { 78 if (first != second) {
79 mergedMap.put(oppositeKey, mergedValue); 79 mergedMap.put(oppositeKey, mergedValue);
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilder.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilder.java
index a5047768..d1979b8c 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilder.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilder.java
@@ -131,7 +131,7 @@ public class MetamodelBuilder {
131 var oppositeInfo = referenceInfoMap.get(opposite); 131 var oppositeInfo = referenceInfoMap.get(opposite);
132 validateOpposite(linkType, info, opposite, oppositeInfo); 132 validateOpposite(linkType, info, opposite, oppositeInfo);
133 targetMultiplicity = oppositeInfo.multiplicity(); 133 targetMultiplicity = oppositeInfo.multiplicity();
134 defaultValue = defaultValue.merge(oppositeInfo.defaultValue()); 134 defaultValue = defaultValue.meet(oppositeInfo.defaultValue());
135 if (oppositeInfo.containment()) { 135 if (oppositeInfo.containment()) {
136 // Skip processing this reference and process it once we encounter its containment opposite. 136 // Skip processing this reference and process it once we encounter its containment opposite.
137 return; 137 return;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/EqualsRefiner.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/EqualsRefiner.java
index 0b89ec58..07595932 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/EqualsRefiner.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/EqualsRefiner.java
@@ -51,7 +51,7 @@ public class EqualsRefiner extends AbstractPartialInterpretationRefiner<TruthVal
51 return false; 51 return false;
52 } 52 }
53 var newCount = currentCount.meet(CardinalityIntervals.LONE); 53 var newCount = currentCount.meet(CardinalityIntervals.LONE);
54 if (newCount.isEmpty()) { 54 if (newCount.isError()) {
55 return false; 55 return false;
56 } 56 }
57 countInterpretation.put(unaryKey, newCount); 57 countInterpretation.put(unaryKey, newCount);
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/ExistsRefiner.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/ExistsRefiner.java
index 3908fedb..83fa4377 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/ExistsRefiner.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/ExistsRefiner.java
@@ -42,7 +42,7 @@ public class ExistsRefiner extends AbstractPartialInterpretationRefiner<TruthVal
42 } 42 }
43 default -> throw new IllegalArgumentException("Unknown TruthValue: " + value); 43 default -> throw new IllegalArgumentException("Unknown TruthValue: " + value);
44 } 44 }
45 if (newCount.isEmpty()) { 45 if (newCount.isError()) {
46 return false; 46 return false;
47 } 47 }
48 countInterpretation.put(key, newCount); 48 countInterpretation.put(key, newCount);
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java
index 694a800b..eb13174c 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java
@@ -37,7 +37,7 @@ class MultiObjectInitializer implements PartialModelInitializer {
37 var uniqueTable = new HashMap<CardinalityInterval, CardinalityInterval>(); 37 var uniqueTable = new HashMap<CardinalityInterval, CardinalityInterval>();
38 for (int i = 0; i < intervals.length; i++) { 38 for (int i = 0; i < intervals.length; i++) {
39 var interval = intervals[i]; 39 var interval = intervals[i];
40 if (interval.isEmpty()) { 40 if (interval.isError()) {
41 throw new TranslationException(ReasoningAdapter.EXISTS_SYMBOL, 41 throw new TranslationException(ReasoningAdapter.EXISTS_SYMBOL,
42 "Inconsistent existence or equality for node " + i); 42 "Inconsistent existence or equality for node " + i);
43 } 43 }
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectStorageRefiner.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectStorageRefiner.java
index 147ae486..ab401f9e 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectStorageRefiner.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectStorageRefiner.java
@@ -28,7 +28,7 @@ class MultiObjectStorageRefiner implements StorageRefiner {
28 return false; 28 return false;
29 } 29 }
30 var newParentCount = parentCount.take(1); 30 var newParentCount = parentCount.take(1);
31 if (newParentCount.isEmpty()) { 31 if (newParentCount.isError()) {
32 return false; 32 return false;
33 } 33 }
34 var childKey = Tuple.of(childNode); 34 var childKey = Tuple.of(childNode);
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeInterpretation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeInterpretation.java
index 7290ab40..75828086 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeInterpretation.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeInterpretation.java
@@ -1,11 +1,11 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2023-2024 The Refinery Authors <https://refinery.tools/>
3 * 3 *
4 * SPDX-License-Identifier: EPL-2.0 4 * SPDX-License-Identifier: EPL-2.0
5 */ 5 */
6package tools.refinery.store.reasoning.translator.opposite; 6package tools.refinery.store.reasoning.translator.opposite;
7 7
8 8import tools.refinery.logic.AbstractValue;
9import tools.refinery.store.map.AnyVersionedMap; 9import tools.refinery.store.map.AnyVersionedMap;
10import tools.refinery.store.map.Cursor; 10import tools.refinery.store.map.Cursor;
11import tools.refinery.store.reasoning.ReasoningAdapter; 11import tools.refinery.store.reasoning.ReasoningAdapter;
@@ -17,7 +17,7 @@ import tools.refinery.store.tuple.Tuple;
17 17
18import java.util.Set; 18import java.util.Set;
19 19
20class OppositeInterpretation<A, C> extends AbstractPartialInterpretation<A, C> { 20class OppositeInterpretation<A extends AbstractValue<A, C>, C> extends AbstractPartialInterpretation<A, C> {
21 private final PartialInterpretation<A, C> opposite; 21 private final PartialInterpretation<A, C> opposite;
22 22
23 private OppositeInterpretation(ReasoningAdapter adapter, Concreteness concreteness, 23 private OppositeInterpretation(ReasoningAdapter adapter, Concreteness concreteness,
@@ -36,7 +36,7 @@ class OppositeInterpretation<A, C> extends AbstractPartialInterpretation<A, C> {
36 return new OppositeCursor<>(opposite.getAll()); 36 return new OppositeCursor<>(opposite.getAll());
37 } 37 }
38 38
39 public static <A1, C1> Factory<A1, C1> of(PartialSymbol<A1, C1> oppositeSymbol) { 39 public static <A1 extends AbstractValue<A1, C1>, C1> Factory<A1, C1> of(PartialSymbol<A1, C1> oppositeSymbol) {
40 return (adapter, concreteness, partialSymbol) -> { 40 return (adapter, concreteness, partialSymbol) -> {
41 var opposite = adapter.getPartialInterpretation(concreteness, oppositeSymbol); 41 var opposite = adapter.getPartialInterpretation(concreteness, oppositeSymbol);
42 return new OppositeInterpretation<>(adapter, concreteness, partialSymbol, opposite); 42 return new OppositeInterpretation<>(adapter, concreteness, partialSymbol, opposite);
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeRefiner.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeRefiner.java
index d09684df..47e3ac6a 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeRefiner.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeRefiner.java
@@ -1,17 +1,18 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2023-2024 The Refinery Authors <https://refinery.tools/>
3 * 3 *
4 * SPDX-License-Identifier: EPL-2.0 4 * SPDX-License-Identifier: EPL-2.0
5 */ 5 */
6package tools.refinery.store.reasoning.translator.opposite; 6package tools.refinery.store.reasoning.translator.opposite;
7 7
8import tools.refinery.logic.AbstractValue;
8import tools.refinery.store.reasoning.ReasoningAdapter; 9import tools.refinery.store.reasoning.ReasoningAdapter;
9import tools.refinery.store.reasoning.refinement.AbstractPartialInterpretationRefiner; 10import tools.refinery.store.reasoning.refinement.AbstractPartialInterpretationRefiner;
10import tools.refinery.store.reasoning.refinement.PartialInterpretationRefiner; 11import tools.refinery.store.reasoning.refinement.PartialInterpretationRefiner;
11import tools.refinery.store.reasoning.representation.PartialSymbol; 12import tools.refinery.store.reasoning.representation.PartialSymbol;
12import tools.refinery.store.tuple.Tuple; 13import tools.refinery.store.tuple.Tuple;
13 14
14public class OppositeRefiner<A, C> extends AbstractPartialInterpretationRefiner<A, C> { 15public class OppositeRefiner<A extends AbstractValue<A, C>, C> extends AbstractPartialInterpretationRefiner<A, C> {
15 private final PartialInterpretationRefiner<A, C> opposite; 16 private final PartialInterpretationRefiner<A, C> opposite;
16 17
17 protected OppositeRefiner(ReasoningAdapter adapter, PartialSymbol<A, C> partialSymbol, 18 protected OppositeRefiner(ReasoningAdapter adapter, PartialSymbol<A, C> partialSymbol,
@@ -26,7 +27,7 @@ public class OppositeRefiner<A, C> extends AbstractPartialInterpretationRefiner<
26 return opposite.merge(oppositeKey, value); 27 return opposite.merge(oppositeKey, value);
27 } 28 }
28 29
29 public static <A1, C1> Factory<A1, C1> of(PartialSymbol<A1, C1> oppositeSymbol) { 30 public static <A1 extends AbstractValue<A1, C1>, C1> Factory<A1, C1> of(PartialSymbol<A1, C1> oppositeSymbol) {
30 return (adapter, partialSymbol) -> new OppositeRefiner<>(adapter, partialSymbol, oppositeSymbol); 31 return (adapter, partialSymbol) -> new OppositeRefiner<>(adapter, partialSymbol, oppositeSymbol);
31 } 32 }
32} 33}