aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-reasoning/src
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/store-reasoning/src')
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningAdapter.java15
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningBuilder.java8
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/CleanupActionLiteral.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/FocusActionLiteral.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/MergeActionLiteral.java7
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/PartialActionLiterals.java9
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/PartialClauseRewriter.java30
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/PartialQueryRewriter.java4
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningAdapterImpl.java22
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningBuilderImpl.java8
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/AbstractPartialInterpretation.java4
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/PartialInterpretation.java7
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/PartialRelationRewriter.java6
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/QueryBasedRelationInterpretationFactory.java4
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/QueryBasedRelationRewriter.java8
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/ClauseLifter.java14
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/DnfLifter.java6
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountCandidateLowerBoundLiteral.java14
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountCandidateUpperBoundLiteral.java14
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountLowerBoundLiteral.java14
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountUpperBoundLiteral.java18
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/ModalConstraint.java10
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/Modality.java3
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java4
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/AbstractPartialInterpretationRefiner.java6
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/ConcreteSymbolRefiner.java10
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/PartialInterpretationRefiner.java8
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/RefinementBasedInitializer.java5
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialSymbol.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialFunction.java12
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialRelation.java12
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialSymbol.java11
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/ModelSeed.java13
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/Seed.java5
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/SeedInitializer.java5
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/PartialRelationTranslator.java16
-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/ContainmentHierarchyTranslator.java24
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainmentLinkRefiner.java4
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainsRefiner.java8
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/InferredContainment.java6
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/CrossReferenceUtils.java18
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceInfo.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceInitializer.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceRefiner.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceTranslator.java8
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceInfo.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceInitializer.java4
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceRefiner.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceTranslator.java6
-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/metamodel/ReferenceInfo.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/ReferenceInfoBuilder.java4
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/EqualsRefiner.java8
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/EqualsRelationRewriter.java22
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/ExistsRefiner.java8
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/LowerCardinalityView.java4
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectInitializer.java8
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectStorageRefiner.java6
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectTranslator.java22
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiView.java4
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/UpperCardinalityView.java6
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/ConstrainedMultiplicity.java6
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/InvalidMultiplicityErrorTranslator.java28
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/Multiplicity.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/UnconstrainedMultiplicity.java4
-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
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeRelationTranslator.java6
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/predicate/PredicateTranslator.java14
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/proxy/PartialRelationTranslatorProxy.java6
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredTypeRefiner.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisResult.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyInitializer.java2
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslator.java4
-rw-r--r--subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/PartialModelTest.java8
-rw-r--r--subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/lifting/DnfLifterTest.java25
-rw-r--r--subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/containment/ContainmentHierarchyTranslatorTest.java4
-rw-r--r--subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilderTest.java2
-rw-r--r--subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelTest.java4
-rw-r--r--subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/multiobject/PartialCountTest.java14
-rw-r--r--subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/ConcreteSupertypeTest.java2
-rw-r--r--subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisExampleHierarchyTest.java2
-rw-r--r--subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyPartialModelTest.java2
-rw-r--r--subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTest.java2
85 files changed, 355 insertions, 328 deletions
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningAdapter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningAdapter.java
index 7f0ef8b4..a9b3141a 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningAdapter.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningAdapter.java
@@ -1,11 +1,12 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-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; 6package tools.refinery.store.reasoning;
7 7
8import org.jetbrains.annotations.Nullable; 8import org.jetbrains.annotations.Nullable;
9import tools.refinery.logic.AbstractValue;
9import tools.refinery.store.adapter.ModelAdapter; 10import tools.refinery.store.adapter.ModelAdapter;
10import tools.refinery.store.reasoning.internal.ReasoningBuilderImpl; 11import tools.refinery.store.reasoning.internal.ReasoningBuilderImpl;
11import tools.refinery.store.reasoning.interpretation.AnyPartialInterpretation; 12import tools.refinery.store.reasoning.interpretation.AnyPartialInterpretation;
@@ -27,17 +28,19 @@ public interface ReasoningAdapter extends ModelAdapter {
27 28
28 default AnyPartialInterpretation getPartialInterpretation(Concreteness concreteness, 29 default AnyPartialInterpretation getPartialInterpretation(Concreteness concreteness,
29 AnyPartialSymbol partialSymbol) { 30 AnyPartialSymbol partialSymbol) {
30 return getPartialInterpretation(concreteness, (PartialSymbol<?, ?>) partialSymbol); 31 var typedPartialSymbol = (PartialSymbol<?, ?>) partialSymbol;
32 return getPartialInterpretation(concreteness, typedPartialSymbol);
31 } 33 }
32 34
33 <A, C> PartialInterpretation<A, C> getPartialInterpretation(Concreteness concreteness, 35 <A extends AbstractValue<A, C>, C> PartialInterpretation<A, C> getPartialInterpretation(
34 PartialSymbol<A, C> partialSymbol); 36 Concreteness concreteness, PartialSymbol<A, C> partialSymbol);
35 37
36 default AnyPartialInterpretationRefiner getRefiner(AnyPartialSymbol partialSymbol) { 38 default AnyPartialInterpretationRefiner getRefiner(AnyPartialSymbol partialSymbol) {
37 return getRefiner((PartialSymbol<?, ?>) partialSymbol); 39 var typedPartialSymbol = (PartialSymbol<?, ?>) partialSymbol;
40 return getRefiner(typedPartialSymbol);
38 } 41 }
39 42
40 <A, C> PartialInterpretationRefiner<A, C> getRefiner(PartialSymbol<A, C> partialSymbol); 43 <A extends AbstractValue<A, C>, C> PartialInterpretationRefiner<A, C> getRefiner(PartialSymbol<A, C> partialSymbol);
41 44
42 @Nullable 45 @Nullable
43 Tuple1 split(int parentMultiObject); 46 Tuple1 split(int parentMultiObject);
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningBuilder.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningBuilder.java
index 79bce33e..7ffa6faa 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningBuilder.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningBuilder.java
@@ -8,10 +8,10 @@ package tools.refinery.store.reasoning;
8import tools.refinery.store.adapter.ModelAdapterBuilder; 8import tools.refinery.store.adapter.ModelAdapterBuilder;
9import tools.refinery.store.dse.transition.objectives.Objective; 9import tools.refinery.store.dse.transition.objectives.Objective;
10import tools.refinery.store.model.ModelStore; 10import tools.refinery.store.model.ModelStore;
11import tools.refinery.store.query.dnf.Dnf; 11import tools.refinery.logic.dnf.Dnf;
12import tools.refinery.store.query.dnf.FunctionalQuery; 12import tools.refinery.logic.dnf.FunctionalQuery;
13import tools.refinery.store.query.dnf.Query; 13import tools.refinery.logic.dnf.Query;
14import tools.refinery.store.query.dnf.RelationalQuery; 14import tools.refinery.logic.dnf.RelationalQuery;
15import tools.refinery.store.reasoning.literal.Concreteness; 15import tools.refinery.store.reasoning.literal.Concreteness;
16import tools.refinery.store.reasoning.literal.Modality; 16import tools.refinery.store.reasoning.literal.Modality;
17import tools.refinery.store.reasoning.refinement.PartialModelInitializer; 17import tools.refinery.store.reasoning.refinement.PartialModelInitializer;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/CleanupActionLiteral.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/CleanupActionLiteral.java
index 62c35cee..6a0004d9 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/CleanupActionLiteral.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/CleanupActionLiteral.java
@@ -8,7 +8,7 @@ package tools.refinery.store.reasoning.actions;
8import tools.refinery.store.dse.transition.actions.AbstractActionLiteral; 8import tools.refinery.store.dse.transition.actions.AbstractActionLiteral;
9import tools.refinery.store.dse.transition.actions.BoundActionLiteral; 9import tools.refinery.store.dse.transition.actions.BoundActionLiteral;
10import tools.refinery.store.model.Model; 10import tools.refinery.store.model.Model;
11import tools.refinery.store.query.term.NodeVariable; 11import tools.refinery.logic.term.NodeVariable;
12import tools.refinery.store.reasoning.ReasoningAdapter; 12import tools.refinery.store.reasoning.ReasoningAdapter;
13import tools.refinery.store.tuple.Tuple; 13import tools.refinery.store.tuple.Tuple;
14 14
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/FocusActionLiteral.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/FocusActionLiteral.java
index 5a6f22d2..c819a1f9 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/FocusActionLiteral.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/FocusActionLiteral.java
@@ -8,7 +8,7 @@ package tools.refinery.store.reasoning.actions;
8import tools.refinery.store.dse.transition.actions.AbstractActionLiteral; 8import tools.refinery.store.dse.transition.actions.AbstractActionLiteral;
9import tools.refinery.store.dse.transition.actions.BoundActionLiteral; 9import tools.refinery.store.dse.transition.actions.BoundActionLiteral;
10import tools.refinery.store.model.Model; 10import tools.refinery.store.model.Model;
11import tools.refinery.store.query.term.NodeVariable; 11import tools.refinery.logic.term.NodeVariable;
12import tools.refinery.store.reasoning.ReasoningAdapter; 12import tools.refinery.store.reasoning.ReasoningAdapter;
13 13
14import java.util.List; 14import java.util.List;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/MergeActionLiteral.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/MergeActionLiteral.java
index 8d0d7961..86256331 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/MergeActionLiteral.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/MergeActionLiteral.java
@@ -1,21 +1,22 @@
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.actions; 6package tools.refinery.store.reasoning.actions;
7 7
8import tools.refinery.logic.AbstractValue;
8import tools.refinery.store.dse.transition.actions.AbstractActionLiteral; 9import tools.refinery.store.dse.transition.actions.AbstractActionLiteral;
9import tools.refinery.store.dse.transition.actions.BoundActionLiteral; 10import tools.refinery.store.dse.transition.actions.BoundActionLiteral;
10import tools.refinery.store.model.Model; 11import tools.refinery.store.model.Model;
11import tools.refinery.store.query.term.NodeVariable; 12import tools.refinery.logic.term.NodeVariable;
12import tools.refinery.store.reasoning.ReasoningAdapter; 13import tools.refinery.store.reasoning.ReasoningAdapter;
13import tools.refinery.store.reasoning.representation.PartialSymbol; 14import tools.refinery.store.reasoning.representation.PartialSymbol;
14import tools.refinery.store.tuple.Tuple; 15import tools.refinery.store.tuple.Tuple;
15 16
16import java.util.List; 17import java.util.List;
17 18
18public class MergeActionLiteral<A, C> extends AbstractActionLiteral { 19public class MergeActionLiteral<A extends AbstractValue<A, C>, C> extends AbstractActionLiteral {
19 private final PartialSymbol<A, C> partialSymbol; 20 private final PartialSymbol<A, C> partialSymbol;
20 private final List<NodeVariable> parameters; 21 private final List<NodeVariable> parameters;
21 private final A value; 22 private final A value;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/PartialActionLiterals.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/PartialActionLiterals.java
index f36fde44..e8e6880a 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/PartialActionLiterals.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/actions/PartialActionLiterals.java
@@ -5,10 +5,11 @@
5 */ 5 */
6package tools.refinery.store.reasoning.actions; 6package tools.refinery.store.reasoning.actions;
7 7
8import tools.refinery.store.query.term.NodeVariable; 8import tools.refinery.logic.AbstractValue;
9import tools.refinery.logic.term.NodeVariable;
9import tools.refinery.store.reasoning.representation.PartialRelation; 10import tools.refinery.store.reasoning.representation.PartialRelation;
10import tools.refinery.store.reasoning.representation.PartialSymbol; 11import tools.refinery.store.reasoning.representation.PartialSymbol;
11import tools.refinery.store.representation.TruthValue; 12import tools.refinery.logic.term.truthvalue.TruthValue;
12 13
13import java.util.List; 14import java.util.List;
14 15
@@ -17,8 +18,8 @@ public final class PartialActionLiterals {
17 throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); 18 throw new IllegalStateException("This is a static utility class and should not be instantiated directly");
18 } 19 }
19 20
20 public static <A, C> MergeActionLiteral<A, C> merge(PartialSymbol<A, C> partialSymbol, A value, 21 public static <A extends AbstractValue<A, C>, C> MergeActionLiteral<A, C> merge(
21 NodeVariable... parameters) { 22 PartialSymbol<A, C> partialSymbol, A value, NodeVariable... parameters) {
22 return new MergeActionLiteral<>(partialSymbol, value, List.of(parameters)); 23 return new MergeActionLiteral<>(partialSymbol, value, List.of(parameters));
23 } 24 }
24 25
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/PartialClauseRewriter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/PartialClauseRewriter.java
index 40993235..dc508a7b 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/PartialClauseRewriter.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/PartialClauseRewriter.java
@@ -5,25 +5,25 @@
5 */ 5 */
6package tools.refinery.store.reasoning.internal; 6package tools.refinery.store.reasoning.internal;
7 7
8import tools.refinery.store.query.Constraint; 8import tools.refinery.logic.Constraint;
9import tools.refinery.store.query.dnf.Dnf; 9import tools.refinery.logic.dnf.Dnf;
10import tools.refinery.store.query.dnf.DnfBuilder; 10import tools.refinery.logic.dnf.DnfBuilder;
11import tools.refinery.store.query.dnf.DnfClause; 11import tools.refinery.logic.dnf.DnfClause;
12import tools.refinery.store.query.literal.AbstractCallLiteral; 12import tools.refinery.logic.literal.AbstractCallLiteral;
13import tools.refinery.store.query.literal.AbstractCountLiteral; 13import tools.refinery.logic.literal.AbstractCountLiteral;
14import tools.refinery.store.query.literal.CallPolarity; 14import tools.refinery.logic.literal.CallPolarity;
15import tools.refinery.store.query.literal.Literal; 15import tools.refinery.logic.literal.Literal;
16import tools.refinery.store.query.term.Aggregator; 16import tools.refinery.logic.term.Aggregator;
17import tools.refinery.store.query.term.ConstantTerm; 17import tools.refinery.logic.term.ConstantTerm;
18import tools.refinery.store.query.term.Term; 18import tools.refinery.logic.term.Term;
19import tools.refinery.store.query.term.Variable; 19import tools.refinery.logic.term.Variable;
20import tools.refinery.store.query.term.int_.IntTerms; 20import tools.refinery.logic.term.int_.IntTerms;
21import tools.refinery.store.query.term.uppercardinality.UpperCardinalityTerms; 21import tools.refinery.logic.term.uppercardinality.UpperCardinalities;
22import tools.refinery.logic.term.uppercardinality.UpperCardinalityTerms;
22import tools.refinery.store.reasoning.ReasoningAdapter; 23import tools.refinery.store.reasoning.ReasoningAdapter;
23import tools.refinery.store.reasoning.literal.*; 24import tools.refinery.store.reasoning.literal.*;
24import tools.refinery.store.reasoning.representation.PartialRelation; 25import tools.refinery.store.reasoning.representation.PartialRelation;
25import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator; 26import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator;
26import tools.refinery.store.representation.cardinality.UpperCardinalities;
27 27
28import java.util.*; 28import java.util.*;
29import java.util.function.BinaryOperator; 29import java.util.function.BinaryOperator;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/PartialQueryRewriter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/PartialQueryRewriter.java
index 79cba263..9a916b69 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/PartialQueryRewriter.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/PartialQueryRewriter.java
@@ -5,8 +5,8 @@
5 */ 5 */
6package tools.refinery.store.reasoning.internal; 6package tools.refinery.store.reasoning.internal;
7 7
8import tools.refinery.store.query.dnf.Dnf; 8import tools.refinery.logic.dnf.Dnf;
9import tools.refinery.store.query.rewriter.AbstractRecursiveRewriter; 9import tools.refinery.logic.rewriter.AbstractRecursiveRewriter;
10import tools.refinery.store.reasoning.interpretation.PartialRelationRewriter; 10import tools.refinery.store.reasoning.interpretation.PartialRelationRewriter;
11import tools.refinery.store.reasoning.lifting.DnfLifter; 11import tools.refinery.store.reasoning.lifting.DnfLifter;
12import tools.refinery.store.reasoning.representation.PartialRelation; 12import tools.refinery.store.reasoning.representation.PartialRelation;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningAdapterImpl.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningAdapterImpl.java
index bd16bdfa..386ae1d8 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningAdapterImpl.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningAdapterImpl.java
@@ -1,11 +1,12 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-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.internal; 6package tools.refinery.store.reasoning.internal;
7 7
8import org.jetbrains.annotations.Nullable; 8import org.jetbrains.annotations.Nullable;
9import tools.refinery.logic.AbstractValue;
9import tools.refinery.store.model.Interpretation; 10import tools.refinery.store.model.Interpretation;
10import tools.refinery.store.model.Model; 11import tools.refinery.store.model.Model;
11import tools.refinery.store.reasoning.ReasoningAdapter; 12import tools.refinery.store.reasoning.ReasoningAdapter;
@@ -19,8 +20,8 @@ import tools.refinery.store.reasoning.representation.AnyPartialSymbol;
19import tools.refinery.store.reasoning.representation.PartialSymbol; 20import tools.refinery.store.reasoning.representation.PartialSymbol;
20import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator; 21import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator;
21import tools.refinery.store.representation.Symbol; 22import tools.refinery.store.representation.Symbol;
22import tools.refinery.store.representation.cardinality.CardinalityInterval; 23import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
23import tools.refinery.store.representation.cardinality.CardinalityIntervals; 24import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
24import tools.refinery.store.tuple.Tuple; 25import tools.refinery.store.tuple.Tuple;
25import tools.refinery.store.tuple.Tuple1; 26import tools.refinery.store.tuple.Tuple1;
26 27
@@ -49,7 +50,7 @@ class ReasoningAdapterImpl implements ReasoningAdapter {
49 createPartialInterpretations(); 50 createPartialInterpretations();
50 51
51 var refinerFactories = storeAdapter.getSymbolRefiners(); 52 var refinerFactories = storeAdapter.getSymbolRefiners();
52 refiners = new HashMap<>(refinerFactories.size()); 53 refiners = HashMap.newHashMap(refinerFactories.size());
53 createRefiners(); 54 createRefiners();
54 55
55 storageRefiners = storeAdapter.createStorageRefiner(model); 56 storageRefiners = storeAdapter.createStorageRefiner(model);
@@ -69,7 +70,7 @@ class ReasoningAdapterImpl implements ReasoningAdapter {
69 for (int i = 0; i < concretenessLength; i++) { 70 for (int i = 0; i < concretenessLength; i++) {
70 var concreteness = Concreteness.values()[i]; 71 var concreteness = Concreteness.values()[i];
71 if (supportedInterpretations.contains(concreteness)) { 72 if (supportedInterpretations.contains(concreteness)) {
72 partialInterpretations[i] = new HashMap<>(interpretationFactories.size()); 73 partialInterpretations[i] = HashMap.newHashMap(interpretationFactories.size());
73 } 74 }
74 } 75 }
75 // Create the partial interpretations in order so that factories may refer to interpretations of symbols 76 // Create the partial interpretations in order so that factories may refer to interpretations of symbols
@@ -87,7 +88,7 @@ class ReasoningAdapterImpl implements ReasoningAdapter {
87 } 88 }
88 } 89 }
89 90
90 private <A, C> PartialInterpretation<A, C> createPartialInterpretation( 91 private <A extends AbstractValue<A, C>, C> PartialInterpretation<A, C> createPartialInterpretation(
91 Concreteness concreteness, PartialInterpretation.Factory<A, C> interpreter, AnyPartialSymbol symbol) { 92 Concreteness concreteness, PartialInterpretation.Factory<A, C> interpreter, AnyPartialSymbol symbol) {
92 // The builder only allows well-typed assignment of interpreters to symbols. 93 // The builder only allows well-typed assignment of interpreters to symbols.
93 @SuppressWarnings("unchecked") 94 @SuppressWarnings("unchecked")
@@ -107,7 +108,7 @@ class ReasoningAdapterImpl implements ReasoningAdapter {
107 } 108 }
108 } 109 }
109 110
110 private <A, C> PartialInterpretationRefiner<A, C> createRefiner( 111 private <A extends AbstractValue<A, C>, C> PartialInterpretationRefiner<A, C> createRefiner(
111 PartialInterpretationRefiner.Factory<A, C> factory, AnyPartialSymbol symbol) { 112 PartialInterpretationRefiner.Factory<A, C> factory, AnyPartialSymbol symbol) {
112 // The builder only allows well-typed assignment of interpreters to symbols. 113 // The builder only allows well-typed assignment of interpreters to symbols.
113 @SuppressWarnings("unchecked") 114 @SuppressWarnings("unchecked")
@@ -126,8 +127,8 @@ class ReasoningAdapterImpl implements ReasoningAdapter {
126 } 127 }
127 128
128 @Override 129 @Override
129 public <A, C> PartialInterpretation<A, C> getPartialInterpretation(Concreteness concreteness, 130 public <A extends AbstractValue<A, C>, C> PartialInterpretation<A, C> getPartialInterpretation(
130 PartialSymbol<A, C> partialSymbol) { 131 Concreteness concreteness, PartialSymbol<A, C> partialSymbol) {
131 var map = partialInterpretations[concreteness.ordinal()]; 132 var map = partialInterpretations[concreteness.ordinal()];
132 if (map == null) { 133 if (map == null) {
133 throw new IllegalArgumentException("No interpretation for concreteness: " + concreteness); 134 throw new IllegalArgumentException("No interpretation for concreteness: " + concreteness);
@@ -143,7 +144,8 @@ class ReasoningAdapterImpl implements ReasoningAdapter {
143 } 144 }
144 145
145 @Override 146 @Override
146 public <A, C> PartialInterpretationRefiner<A, C> getRefiner(PartialSymbol<A, C> partialSymbol) { 147 public <A extends AbstractValue<A, C>, C> PartialInterpretationRefiner<A, C> getRefiner(
148 PartialSymbol<A, C> partialSymbol) {
147 var refiner = refiners.get(partialSymbol); 149 var refiner = refiners.get(partialSymbol);
148 if (refiner == null) { 150 if (refiner == null) {
149 throw new IllegalArgumentException("No refiner for partial symbol: " + partialSymbol); 151 throw new IllegalArgumentException("No refiner for partial symbol: " + partialSymbol);
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningBuilderImpl.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningBuilderImpl.java
index 722458c8..87122b1d 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningBuilderImpl.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningBuilderImpl.java
@@ -12,10 +12,10 @@ import tools.refinery.store.dse.transition.objectives.Objectives;
12import tools.refinery.store.model.ModelStore; 12import tools.refinery.store.model.ModelStore;
13import tools.refinery.store.model.ModelStoreBuilder; 13import tools.refinery.store.model.ModelStoreBuilder;
14import tools.refinery.store.query.ModelQueryBuilder; 14import tools.refinery.store.query.ModelQueryBuilder;
15import tools.refinery.store.query.dnf.Dnf; 15import tools.refinery.logic.dnf.Dnf;
16import tools.refinery.store.query.dnf.FunctionalQuery; 16import tools.refinery.logic.dnf.FunctionalQuery;
17import tools.refinery.store.query.dnf.Query; 17import tools.refinery.logic.dnf.Query;
18import tools.refinery.store.query.dnf.RelationalQuery; 18import tools.refinery.logic.dnf.RelationalQuery;
19import tools.refinery.store.reasoning.ReasoningBuilder; 19import tools.refinery.store.reasoning.ReasoningBuilder;
20import tools.refinery.store.reasoning.interpretation.PartialInterpretation; 20import tools.refinery.store.reasoning.interpretation.PartialInterpretation;
21import tools.refinery.store.reasoning.lifting.DnfLifter; 21import tools.refinery.store.reasoning.lifting.DnfLifter;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/AbstractPartialInterpretation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/AbstractPartialInterpretation.java
index ed291eac..4f51957b 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/AbstractPartialInterpretation.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/AbstractPartialInterpretation.java
@@ -5,11 +5,13 @@
5 */ 5 */
6package tools.refinery.store.reasoning.interpretation; 6package tools.refinery.store.reasoning.interpretation;
7 7
8import tools.refinery.logic.AbstractValue;
8import tools.refinery.store.reasoning.ReasoningAdapter; 9import tools.refinery.store.reasoning.ReasoningAdapter;
9import tools.refinery.store.reasoning.literal.Concreteness; 10import tools.refinery.store.reasoning.literal.Concreteness;
10import tools.refinery.store.reasoning.representation.PartialSymbol; 11import tools.refinery.store.reasoning.representation.PartialSymbol;
11 12
12public abstract class AbstractPartialInterpretation<A, C> implements PartialInterpretation<A, C> { 13public abstract class AbstractPartialInterpretation<A extends AbstractValue<A, C>, C>
14 implements PartialInterpretation<A, C> {
13 private final ReasoningAdapter adapter; 15 private final ReasoningAdapter adapter;
14 private final PartialSymbol<A, C> partialSymbol; 16 private final PartialSymbol<A, C> partialSymbol;
15 private final Concreteness concreteness; 17 private final Concreteness concreteness;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/PartialInterpretation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/PartialInterpretation.java
index 86ffe751..5a304030 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/PartialInterpretation.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/PartialInterpretation.java
@@ -1,10 +1,11 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-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.interpretation; 6package tools.refinery.store.reasoning.interpretation;
7 7
8import tools.refinery.logic.AbstractValue;
8import tools.refinery.store.map.Cursor; 9import tools.refinery.store.map.Cursor;
9import tools.refinery.store.model.ModelStoreBuilder; 10import tools.refinery.store.model.ModelStoreBuilder;
10import tools.refinery.store.reasoning.ReasoningAdapter; 11import tools.refinery.store.reasoning.ReasoningAdapter;
@@ -14,7 +15,7 @@ import tools.refinery.store.tuple.Tuple;
14 15
15import java.util.Set; 16import java.util.Set;
16 17
17public non-sealed interface PartialInterpretation<A, C> extends AnyPartialInterpretation { 18public non-sealed interface PartialInterpretation<A extends AbstractValue<A, C>, C> extends AnyPartialInterpretation {
18 @Override 19 @Override
19 PartialSymbol<A, C> getPartialSymbol(); 20 PartialSymbol<A, C> getPartialSymbol();
20 21
@@ -23,7 +24,7 @@ public non-sealed interface PartialInterpretation<A, C> extends AnyPartialInterp
23 Cursor<Tuple, A> getAll(); 24 Cursor<Tuple, A> getAll();
24 25
25 @FunctionalInterface 26 @FunctionalInterface
26 interface Factory<A, C> { 27 interface Factory<A extends AbstractValue<A, C>, C> {
27 PartialInterpretation<A, C> create(ReasoningAdapter adapter, Concreteness concreteness, 28 PartialInterpretation<A, C> create(ReasoningAdapter adapter, Concreteness concreteness,
28 PartialSymbol<A, C> partialSymbol); 29 PartialSymbol<A, C> partialSymbol);
29 30
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/PartialRelationRewriter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/PartialRelationRewriter.java
index 6ad35c20..72ad386c 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/PartialRelationRewriter.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/PartialRelationRewriter.java
@@ -5,9 +5,9 @@
5 */ 5 */
6package tools.refinery.store.reasoning.interpretation; 6package tools.refinery.store.reasoning.interpretation;
7 7
8import tools.refinery.store.query.literal.AbstractCallLiteral; 8import tools.refinery.logic.literal.AbstractCallLiteral;
9import tools.refinery.store.query.literal.Literal; 9import tools.refinery.logic.literal.Literal;
10import tools.refinery.store.query.term.Variable; 10import tools.refinery.logic.term.Variable;
11import tools.refinery.store.reasoning.literal.Concreteness; 11import tools.refinery.store.reasoning.literal.Concreteness;
12import tools.refinery.store.reasoning.literal.Modality; 12import tools.refinery.store.reasoning.literal.Modality;
13 13
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/QueryBasedRelationInterpretationFactory.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/QueryBasedRelationInterpretationFactory.java
index 5cdaa185..8fe34b27 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/QueryBasedRelationInterpretationFactory.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/QueryBasedRelationInterpretationFactory.java
@@ -9,12 +9,12 @@ import tools.refinery.store.map.Cursor;
9import tools.refinery.store.model.ModelStoreBuilder; 9import tools.refinery.store.model.ModelStoreBuilder;
10import tools.refinery.store.query.ModelQueryAdapter; 10import tools.refinery.store.query.ModelQueryAdapter;
11import tools.refinery.store.query.ModelQueryBuilder; 11import tools.refinery.store.query.ModelQueryBuilder;
12import tools.refinery.store.query.dnf.Query; 12import tools.refinery.logic.dnf.Query;
13import tools.refinery.store.query.resultset.ResultSet; 13import tools.refinery.store.query.resultset.ResultSet;
14import tools.refinery.store.reasoning.ReasoningAdapter; 14import tools.refinery.store.reasoning.ReasoningAdapter;
15import tools.refinery.store.reasoning.literal.Concreteness; 15import tools.refinery.store.reasoning.literal.Concreteness;
16import tools.refinery.store.reasoning.representation.PartialSymbol; 16import tools.refinery.store.reasoning.representation.PartialSymbol;
17import tools.refinery.store.representation.TruthValue; 17import tools.refinery.logic.term.truthvalue.TruthValue;
18import tools.refinery.store.tuple.Tuple; 18import tools.refinery.store.tuple.Tuple;
19 19
20import java.util.Set; 20import java.util.Set;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/QueryBasedRelationRewriter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/QueryBasedRelationRewriter.java
index 78fdbb89..a6850e75 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/QueryBasedRelationRewriter.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/interpretation/QueryBasedRelationRewriter.java
@@ -5,10 +5,10 @@
5 */ 5 */
6package tools.refinery.store.reasoning.interpretation; 6package tools.refinery.store.reasoning.interpretation;
7 7
8import tools.refinery.store.query.dnf.RelationalQuery; 8import tools.refinery.logic.dnf.RelationalQuery;
9import tools.refinery.store.query.literal.AbstractCallLiteral; 9import tools.refinery.logic.literal.AbstractCallLiteral;
10import tools.refinery.store.query.literal.Literal; 10import tools.refinery.logic.literal.Literal;
11import tools.refinery.store.query.term.Variable; 11import tools.refinery.logic.term.Variable;
12import tools.refinery.store.reasoning.literal.Concreteness; 12import tools.refinery.store.reasoning.literal.Concreteness;
13import tools.refinery.store.reasoning.literal.Modality; 13import tools.refinery.store.reasoning.literal.Modality;
14 14
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/ClauseLifter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/ClauseLifter.java
index 17916c02..02e16dc5 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/ClauseLifter.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/ClauseLifter.java
@@ -5,13 +5,13 @@
5 */ 5 */
6package tools.refinery.store.reasoning.lifting; 6package tools.refinery.store.reasoning.lifting;
7 7
8import tools.refinery.store.query.Constraint; 8import tools.refinery.logic.Constraint;
9import tools.refinery.store.query.dnf.Dnf; 9import tools.refinery.logic.dnf.Dnf;
10import tools.refinery.store.query.dnf.DnfClause; 10import tools.refinery.logic.dnf.DnfClause;
11import tools.refinery.store.query.literal.*; 11import tools.refinery.logic.literal.*;
12import tools.refinery.store.query.term.NodeVariable; 12import tools.refinery.logic.term.NodeVariable;
13import tools.refinery.store.query.term.ParameterDirection; 13import tools.refinery.logic.term.ParameterDirection;
14import tools.refinery.store.query.term.Variable; 14import tools.refinery.logic.term.Variable;
15import tools.refinery.store.reasoning.ReasoningAdapter; 15import tools.refinery.store.reasoning.ReasoningAdapter;
16import tools.refinery.store.reasoning.literal.Concreteness; 16import tools.refinery.store.reasoning.literal.Concreteness;
17import tools.refinery.store.reasoning.literal.ModalConstraint; 17import tools.refinery.store.reasoning.literal.ModalConstraint;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/DnfLifter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/DnfLifter.java
index 889f595f..1eeb5de1 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/DnfLifter.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/DnfLifter.java
@@ -5,9 +5,9 @@
5 */ 5 */
6package tools.refinery.store.reasoning.lifting; 6package tools.refinery.store.reasoning.lifting;
7 7
8import tools.refinery.store.query.dnf.*; 8import tools.refinery.logic.dnf.*;
9import tools.refinery.store.query.equality.DnfEqualityChecker; 9import tools.refinery.logic.equality.DnfEqualityChecker;
10import tools.refinery.store.query.literal.Literal; 10import tools.refinery.logic.literal.Literal;
11import tools.refinery.store.reasoning.literal.Concreteness; 11import tools.refinery.store.reasoning.literal.Concreteness;
12import tools.refinery.store.reasoning.literal.Modality; 12import tools.refinery.store.reasoning.literal.Modality;
13 13
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountCandidateLowerBoundLiteral.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountCandidateLowerBoundLiteral.java
index 91dd2b72..e4c180fc 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountCandidateLowerBoundLiteral.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountCandidateLowerBoundLiteral.java
@@ -5,13 +5,13 @@
5 */ 5 */
6package tools.refinery.store.reasoning.literal; 6package tools.refinery.store.reasoning.literal;
7 7
8import tools.refinery.store.query.Constraint; 8import tools.refinery.logic.Constraint;
9import tools.refinery.store.query.literal.AbstractCallLiteral; 9import tools.refinery.logic.literal.AbstractCallLiteral;
10import tools.refinery.store.query.literal.AbstractCountLiteral; 10import tools.refinery.logic.literal.AbstractCountLiteral;
11import tools.refinery.store.query.literal.Literal; 11import tools.refinery.logic.literal.Literal;
12import tools.refinery.store.query.substitution.Substitution; 12import tools.refinery.logic.substitution.Substitution;
13import tools.refinery.store.query.term.DataVariable; 13import tools.refinery.logic.term.DataVariable;
14import tools.refinery.store.query.term.Variable; 14import tools.refinery.logic.term.Variable;
15 15
16import java.util.List; 16import java.util.List;
17 17
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountCandidateUpperBoundLiteral.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountCandidateUpperBoundLiteral.java
index 94c9399d..2faeda22 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountCandidateUpperBoundLiteral.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountCandidateUpperBoundLiteral.java
@@ -5,13 +5,13 @@
5 */ 5 */
6package tools.refinery.store.reasoning.literal; 6package tools.refinery.store.reasoning.literal;
7 7
8import tools.refinery.store.query.Constraint; 8import tools.refinery.logic.Constraint;
9import tools.refinery.store.query.literal.AbstractCallLiteral; 9import tools.refinery.logic.literal.AbstractCallLiteral;
10import tools.refinery.store.query.literal.AbstractCountLiteral; 10import tools.refinery.logic.literal.AbstractCountLiteral;
11import tools.refinery.store.query.literal.Literal; 11import tools.refinery.logic.literal.Literal;
12import tools.refinery.store.query.substitution.Substitution; 12import tools.refinery.logic.substitution.Substitution;
13import tools.refinery.store.query.term.DataVariable; 13import tools.refinery.logic.term.DataVariable;
14import tools.refinery.store.query.term.Variable; 14import tools.refinery.logic.term.Variable;
15 15
16import java.util.List; 16import java.util.List;
17 17
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountLowerBoundLiteral.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountLowerBoundLiteral.java
index b75b0cab..c009cfae 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountLowerBoundLiteral.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountLowerBoundLiteral.java
@@ -5,13 +5,13 @@
5 */ 5 */
6package tools.refinery.store.reasoning.literal; 6package tools.refinery.store.reasoning.literal;
7 7
8import tools.refinery.store.query.Constraint; 8import tools.refinery.logic.Constraint;
9import tools.refinery.store.query.literal.AbstractCallLiteral; 9import tools.refinery.logic.literal.AbstractCallLiteral;
10import tools.refinery.store.query.literal.AbstractCountLiteral; 10import tools.refinery.logic.literal.AbstractCountLiteral;
11import tools.refinery.store.query.literal.Literal; 11import tools.refinery.logic.literal.Literal;
12import tools.refinery.store.query.substitution.Substitution; 12import tools.refinery.logic.substitution.Substitution;
13import tools.refinery.store.query.term.DataVariable; 13import tools.refinery.logic.term.DataVariable;
14import tools.refinery.store.query.term.Variable; 14import tools.refinery.logic.term.Variable;
15 15
16import java.util.List; 16import java.util.List;
17 17
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountUpperBoundLiteral.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountUpperBoundLiteral.java
index 03842143..84bea8c0 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountUpperBoundLiteral.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/CountUpperBoundLiteral.java
@@ -5,15 +5,15 @@
5 */ 5 */
6package tools.refinery.store.reasoning.literal; 6package tools.refinery.store.reasoning.literal;
7 7
8import tools.refinery.store.query.Constraint; 8import tools.refinery.logic.Constraint;
9import tools.refinery.store.query.literal.AbstractCallLiteral; 9import tools.refinery.logic.literal.AbstractCallLiteral;
10import tools.refinery.store.query.literal.AbstractCountLiteral; 10import tools.refinery.logic.literal.AbstractCountLiteral;
11import tools.refinery.store.query.literal.Literal; 11import tools.refinery.logic.literal.Literal;
12import tools.refinery.store.query.substitution.Substitution; 12import tools.refinery.logic.substitution.Substitution;
13import tools.refinery.store.query.term.DataVariable; 13import tools.refinery.logic.term.DataVariable;
14import tools.refinery.store.query.term.Variable; 14import tools.refinery.logic.term.Variable;
15import tools.refinery.store.representation.cardinality.UpperCardinalities; 15import tools.refinery.logic.term.uppercardinality.UpperCardinalities;
16import tools.refinery.store.representation.cardinality.UpperCardinality; 16import tools.refinery.logic.term.uppercardinality.UpperCardinality;
17 17
18import java.util.List; 18import java.util.List;
19 19
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/ModalConstraint.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/ModalConstraint.java
index 2235a95d..6b8af460 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/ModalConstraint.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/ModalConstraint.java
@@ -5,11 +5,11 @@
5 */ 5 */
6package tools.refinery.store.reasoning.literal; 6package tools.refinery.store.reasoning.literal;
7 7
8import tools.refinery.store.query.Constraint; 8import tools.refinery.logic.Constraint;
9import tools.refinery.store.query.InvalidQueryException; 9import tools.refinery.logic.InvalidQueryException;
10import tools.refinery.store.query.equality.LiteralEqualityHelper; 10import tools.refinery.logic.equality.LiteralEqualityHelper;
11import tools.refinery.store.query.literal.Reduction; 11import tools.refinery.logic.literal.Reduction;
12import tools.refinery.store.query.term.Parameter; 12import tools.refinery.logic.term.Parameter;
13import tools.refinery.store.query.view.AnySymbolView; 13import tools.refinery.store.query.view.AnySymbolView;
14 14
15import java.util.List; 15import java.util.List;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/Modality.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/Modality.java
index c99a0399..045b7147 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/Modality.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/Modality.java
@@ -5,7 +5,8 @@
5 */ 5 */
6package tools.refinery.store.reasoning.literal; 6package tools.refinery.store.reasoning.literal;
7 7
8import tools.refinery.store.query.literal.CallPolarity; 8
9import tools.refinery.logic.literal.CallPolarity;
9 10
10import java.util.Locale; 11import java.util.Locale;
11 12
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java
index 2614c26e..72b085a5 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java
@@ -5,8 +5,8 @@
5 */ 5 */
6package tools.refinery.store.reasoning.literal; 6package tools.refinery.store.reasoning.literal;
7 7
8import tools.refinery.store.query.InvalidQueryException; 8import tools.refinery.logic.InvalidQueryException;
9import tools.refinery.store.query.literal.CallLiteral; 9import tools.refinery.logic.literal.CallLiteral;
10 10
11public final class PartialLiterals { 11public final class PartialLiterals {
12 private PartialLiterals() { 12 private PartialLiterals() {
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/AbstractPartialInterpretationRefiner.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/AbstractPartialInterpretationRefiner.java
index a7fc5b7e..42943490 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/AbstractPartialInterpretationRefiner.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/AbstractPartialInterpretationRefiner.java
@@ -1,14 +1,16 @@
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.refinement; 6package tools.refinery.store.reasoning.refinement;
7 7
8import tools.refinery.logic.AbstractValue;
8import tools.refinery.store.reasoning.ReasoningAdapter; 9import tools.refinery.store.reasoning.ReasoningAdapter;
9import tools.refinery.store.reasoning.representation.PartialSymbol; 10import tools.refinery.store.reasoning.representation.PartialSymbol;
10 11
11public abstract class AbstractPartialInterpretationRefiner<A, C> implements PartialInterpretationRefiner<A, C> { 12public abstract class AbstractPartialInterpretationRefiner<A extends AbstractValue<A, C>, C>
13 implements PartialInterpretationRefiner<A, C> {
12 private final ReasoningAdapter adapter; 14 private final ReasoningAdapter adapter;
13 private final PartialSymbol<A, C> partialSymbol; 15 private final PartialSymbol<A, C> partialSymbol;
14 16
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/ConcreteSymbolRefiner.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/ConcreteSymbolRefiner.java
index ebb9b824..d6ac0e9d 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/ConcreteSymbolRefiner.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/ConcreteSymbolRefiner.java
@@ -1,10 +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.refinement; 6package tools.refinery.store.reasoning.refinement;
7 7
8import tools.refinery.logic.AbstractValue;
8import tools.refinery.store.model.Interpretation; 9import tools.refinery.store.model.Interpretation;
9import tools.refinery.store.reasoning.ReasoningAdapter; 10import tools.refinery.store.reasoning.ReasoningAdapter;
10import tools.refinery.store.reasoning.representation.PartialSymbol; 11import tools.refinery.store.reasoning.representation.PartialSymbol;
@@ -13,7 +14,8 @@ import tools.refinery.store.tuple.Tuple;
13 14
14import java.util.Objects; 15import java.util.Objects;
15 16
16public class ConcreteSymbolRefiner<A, C> extends AbstractPartialInterpretationRefiner<A, C> { 17public class ConcreteSymbolRefiner<A extends AbstractValue<A, C>, C>
18 extends AbstractPartialInterpretationRefiner<A, C> {
17 private final Interpretation<A> interpretation; 19 private final Interpretation<A> interpretation;
18 20
19 public ConcreteSymbolRefiner(ReasoningAdapter adapter, PartialSymbol<A, C> partialSymbol, 21 public ConcreteSymbolRefiner(ReasoningAdapter adapter, PartialSymbol<A, C> partialSymbol,
@@ -25,14 +27,14 @@ public class ConcreteSymbolRefiner<A, C> extends AbstractPartialInterpretationRe
25 @Override 27 @Override
26 public boolean merge(Tuple key, A value) { 28 public boolean merge(Tuple key, A value) {
27 var currentValue = interpretation.get(key); 29 var currentValue = interpretation.get(key);
28 var mergedValue = getPartialSymbol().abstractDomain().commonRefinement(currentValue, value); 30 var mergedValue = currentValue.meet(value);
29 if (!Objects.equals(currentValue, mergedValue)) { 31 if (!Objects.equals(currentValue, mergedValue)) {
30 interpretation.put(key, mergedValue); 32 interpretation.put(key, mergedValue);
31 } 33 }
32 return true; 34 return true;
33 } 35 }
34 36
35 public static <A1, C1> Factory<A1, C1> of(Symbol<A1> concreteSymbol) { 37 public static <A1 extends AbstractValue<A1, C1>, C1> Factory<A1, C1> of(Symbol<A1> concreteSymbol) {
36 return (adapter, partialSymbol) -> new ConcreteSymbolRefiner<>(adapter, partialSymbol, concreteSymbol); 38 return (adapter, partialSymbol) -> new ConcreteSymbolRefiner<>(adapter, partialSymbol, concreteSymbol);
37 } 39 }
38} 40}
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/PartialInterpretationRefiner.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/PartialInterpretationRefiner.java
index f48d1d1f..c8b182b8 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/PartialInterpretationRefiner.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/PartialInterpretationRefiner.java
@@ -1,22 +1,24 @@
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.refinement; 6package tools.refinery.store.reasoning.refinement;
7 7
8import tools.refinery.logic.AbstractValue;
8import tools.refinery.store.reasoning.ReasoningAdapter; 9import tools.refinery.store.reasoning.ReasoningAdapter;
9import tools.refinery.store.reasoning.representation.PartialSymbol; 10import tools.refinery.store.reasoning.representation.PartialSymbol;
10import tools.refinery.store.tuple.Tuple; 11import tools.refinery.store.tuple.Tuple;
11 12
12public non-sealed interface PartialInterpretationRefiner<A, C> extends AnyPartialInterpretationRefiner { 13public non-sealed interface PartialInterpretationRefiner<A extends AbstractValue<A, C>, C>
14 extends AnyPartialInterpretationRefiner {
13 @Override 15 @Override
14 PartialSymbol<A, C> getPartialSymbol(); 16 PartialSymbol<A, C> getPartialSymbol();
15 17
16 boolean merge(Tuple key, A value); 18 boolean merge(Tuple key, A value);
17 19
18 @FunctionalInterface 20 @FunctionalInterface
19 interface Factory<A, C> { 21 interface Factory<A extends AbstractValue<A, C>, C> {
20 PartialInterpretationRefiner<A, C> create(ReasoningAdapter adapter, PartialSymbol<A, C> partialSymbol); 22 PartialInterpretationRefiner<A, C> create(ReasoningAdapter adapter, PartialSymbol<A, C> partialSymbol);
21 } 23 }
22} 24}
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/RefinementBasedInitializer.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/RefinementBasedInitializer.java
index b6bccb01..1a2c03a6 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/RefinementBasedInitializer.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/refinement/RefinementBasedInitializer.java
@@ -1,16 +1,17 @@
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.refinement; 6package tools.refinery.store.reasoning.refinement;
7 7
8import tools.refinery.logic.AbstractValue;
8import tools.refinery.store.model.Model; 9import tools.refinery.store.model.Model;
9import tools.refinery.store.reasoning.ReasoningAdapter; 10import tools.refinery.store.reasoning.ReasoningAdapter;
10import tools.refinery.store.reasoning.representation.PartialSymbol; 11import tools.refinery.store.reasoning.representation.PartialSymbol;
11import tools.refinery.store.reasoning.seed.ModelSeed; 12import tools.refinery.store.reasoning.seed.ModelSeed;
12 13
13public class RefinementBasedInitializer<A, C> implements PartialModelInitializer { 14public class RefinementBasedInitializer<A extends AbstractValue<A, C>, C> implements PartialModelInitializer {
14 private final PartialSymbol<A, C> partialSymbol; 15 private final PartialSymbol<A, C> partialSymbol;
15 16
16 public RefinementBasedInitializer(PartialSymbol<A, C> partialSymbol) { 17 public RefinementBasedInitializer(PartialSymbol<A, C> partialSymbol) {
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialSymbol.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialSymbol.java
index 788eef73..3e10c6c1 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialSymbol.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialSymbol.java
@@ -5,7 +5,7 @@
5 */ 5 */
6package tools.refinery.store.reasoning.representation; 6package tools.refinery.store.reasoning.representation;
7 7
8import tools.refinery.store.representation.AnyAbstractDomain; 8import tools.refinery.logic.AnyAbstractDomain;
9 9
10public sealed interface AnyPartialSymbol permits AnyPartialFunction, PartialSymbol { 10public sealed interface AnyPartialSymbol permits AnyPartialFunction, PartialSymbol {
11 String name(); 11 String name();
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialFunction.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialFunction.java
index e59c8af8..88b98da8 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialFunction.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialFunction.java
@@ -1,14 +1,16 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-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.representation; 6package tools.refinery.store.reasoning.representation;
7 7
8import tools.refinery.store.representation.AbstractDomain; 8import tools.refinery.logic.AbstractDomain;
9import tools.refinery.logic.AbstractValue;
9 10
10public record PartialFunction<A, C>(String name, int arity, AbstractDomain<A, C> abstractDomain) 11public record PartialFunction<A extends AbstractValue<A, C>, C>(
11 implements AnyPartialFunction, PartialSymbol<A, C> { 12 String name, int arity, AbstractDomain<A, C> abstractDomain) implements AnyPartialFunction,
13 PartialSymbol<A, C> {
12 @Override 14 @Override
13 public A defaultValue() { 15 public A defaultValue() {
14 return null; 16 return null;
@@ -21,7 +23,7 @@ public record PartialFunction<A, C>(String name, int arity, AbstractDomain<A, C>
21 23
22 @Override 24 @Override
23 public int hashCode() { 25 public int hashCode() {
24 // Compare by identity to make hash table lookups more efficient. 26 // Compare by identity to make hash table look-ups more efficient.
25 return System.identityHashCode(this); 27 return System.identityHashCode(this);
26 } 28 }
27 29
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialRelation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialRelation.java
index 4ccb7033..0f108247 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialRelation.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialRelation.java
@@ -5,11 +5,11 @@
5 */ 5 */
6package tools.refinery.store.reasoning.representation; 6package tools.refinery.store.reasoning.representation;
7 7
8import tools.refinery.store.query.Constraint; 8import tools.refinery.logic.AbstractDomain;
9import tools.refinery.store.query.term.Parameter; 9import tools.refinery.logic.Constraint;
10import tools.refinery.store.representation.AbstractDomain; 10import tools.refinery.logic.term.Parameter;
11import tools.refinery.store.representation.TruthValue; 11import tools.refinery.logic.term.truthvalue.TruthValue;
12import tools.refinery.store.representation.TruthValueDomain; 12import tools.refinery.logic.term.truthvalue.TruthValueDomain;
13 13
14import java.util.Arrays; 14import java.util.Arrays;
15import java.util.List; 15import java.util.List;
@@ -44,7 +44,7 @@ public record PartialRelation(String name, int arity) implements PartialSymbol<T
44 44
45 @Override 45 @Override
46 public int hashCode() { 46 public int hashCode() {
47 // Compare by identity to make hash table lookups more efficient. 47 // Compare by identity to make hash table look-ups more efficient.
48 return System.identityHashCode(this); 48 return System.identityHashCode(this);
49 } 49 }
50 50
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialSymbol.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialSymbol.java
index 38b2e466..21cbfefa 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialSymbol.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialSymbol.java
@@ -1,13 +1,15 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-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.representation; 6package tools.refinery.store.reasoning.representation;
7 7
8import tools.refinery.store.representation.AbstractDomain; 8import tools.refinery.logic.AbstractDomain;
9import tools.refinery.logic.AbstractValue;
9 10
10public sealed interface PartialSymbol<A, C> extends AnyPartialSymbol permits PartialFunction, PartialRelation { 11public sealed interface PartialSymbol<A extends AbstractValue<A, C>, C> extends AnyPartialSymbol
12 permits PartialFunction, PartialRelation {
11 @Override 13 @Override
12 AbstractDomain<A, C> abstractDomain(); 14 AbstractDomain<A, C> abstractDomain();
13 15
@@ -17,7 +19,8 @@ public sealed interface PartialSymbol<A, C> extends AnyPartialSymbol permits Par
17 return new PartialRelation(name, arity); 19 return new PartialRelation(name, arity);
18 } 20 }
19 21
20 static <A, C> PartialFunction<A, C> of(String name, int arity, AbstractDomain<A, C> abstractDomain) { 22 static <A extends AbstractValue<A, C>, C> PartialFunction<A, C> of(
23 String name, int arity, AbstractDomain<A, C> abstractDomain) {
21 return new PartialFunction<>(name, arity, abstractDomain); 24 return new PartialFunction<>(name, arity, abstractDomain);
22 } 25 }
23} 26}
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/ModelSeed.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/ModelSeed.java
index e6b3eaf9..9cd4862b 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/ModelSeed.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/ModelSeed.java
@@ -1,10 +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.seed; 6package tools.refinery.store.reasoning.seed;
7 7
8import tools.refinery.logic.AbstractValue;
8import tools.refinery.store.map.Cursor; 9import tools.refinery.store.map.Cursor;
9import tools.refinery.store.reasoning.representation.AnyPartialSymbol; 10import tools.refinery.store.reasoning.representation.AnyPartialSymbol;
10import tools.refinery.store.reasoning.representation.PartialSymbol; 11import tools.refinery.store.reasoning.representation.PartialSymbol;
@@ -29,7 +30,7 @@ public class ModelSeed {
29 return nodeCount; 30 return nodeCount;
30 } 31 }
31 32
32 public <A> Seed<A> getSeed(PartialSymbol<A, ?> partialSymbol) { 33 public <A extends AbstractValue<A, ?>> Seed<A> getSeed(PartialSymbol<A, ?> partialSymbol) {
33 var seed = seeds.get(partialSymbol); 34 var seed = seeds.get(partialSymbol);
34 if (seed == null) { 35 if (seed == null) {
35 throw new IllegalArgumentException("No seed for partial symbol " + partialSymbol); 36 throw new IllegalArgumentException("No seed for partial symbol " + partialSymbol);
@@ -48,7 +49,8 @@ public class ModelSeed {
48 return Collections.unmodifiableSet(seeds.keySet()); 49 return Collections.unmodifiableSet(seeds.keySet());
49 } 50 }
50 51
51 public <A> Cursor<Tuple, A> getCursor(PartialSymbol<A, ?> partialSymbol, A defaultValue) { 52 public <A extends AbstractValue<A, ?>> Cursor<Tuple, A> getCursor(PartialSymbol<A, ?> partialSymbol,
53 A defaultValue) {
52 return getSeed(partialSymbol).getCursor(defaultValue, nodeCount); 54 return getSeed(partialSymbol).getCursor(defaultValue, nodeCount);
53 } 55 }
54 56
@@ -67,7 +69,7 @@ public class ModelSeed {
67 this.nodeCount = nodeCount; 69 this.nodeCount = nodeCount;
68 } 70 }
69 71
70 public <A> Builder seed(PartialSymbol<A, ?> partialSymbol, Seed<A> seed) { 72 public <A extends AbstractValue<A, ?>> Builder seed(PartialSymbol<A, ?> partialSymbol, Seed<A> seed) {
71 if (seed.arity() != partialSymbol.arity()) { 73 if (seed.arity() != partialSymbol.arity()) {
72 throw new IllegalStateException("Expected seed of arity %d for partial symbol %s, but got %d instead" 74 throw new IllegalStateException("Expected seed of arity %d for partial symbol %s, but got %d instead"
73 .formatted(partialSymbol.arity(), partialSymbol, seed.arity())); 75 .formatted(partialSymbol.arity(), partialSymbol, seed.arity()));
@@ -82,7 +84,8 @@ public class ModelSeed {
82 return this; 84 return this;
83 } 85 }
84 86
85 public <A> Builder seed(PartialSymbol<A, ?> partialSymbol, Consumer<Seed.Builder<A>> callback) { 87 public <A extends AbstractValue<A, ?>> Builder seed(PartialSymbol<A, ?> partialSymbol,
88 Consumer<Seed.Builder<A>> callback) {
86 var builder = Seed.builder(partialSymbol); 89 var builder = Seed.builder(partialSymbol);
87 callback.accept(builder); 90 callback.accept(builder);
88 return seed(partialSymbol, builder.build()); 91 return seed(partialSymbol, builder.build());
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/Seed.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/Seed.java
index d9bad866..32562f01 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/Seed.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/Seed.java
@@ -1,10 +1,11 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-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.seed; 6package tools.refinery.store.reasoning.seed;
7 7
8import tools.refinery.logic.AbstractValue;
8import tools.refinery.store.map.Cursor; 9import tools.refinery.store.map.Cursor;
9import tools.refinery.store.reasoning.representation.PartialSymbol; 10import tools.refinery.store.reasoning.representation.PartialSymbol;
10import tools.refinery.store.representation.Symbol; 11import tools.refinery.store.representation.Symbol;
@@ -33,7 +34,7 @@ public interface Seed<T> {
33 return builder(symbol.arity(), symbol.valueType(), symbol.defaultValue()); 34 return builder(symbol.arity(), symbol.valueType(), symbol.defaultValue());
34 } 35 }
35 36
36 static <T> Builder<T> builder(PartialSymbol<T, ?> partialSymbol) { 37 static <T extends AbstractValue<T, ?>> Builder<T> builder(PartialSymbol<T, ?> partialSymbol) {
37 return builder(partialSymbol.arity(), partialSymbol.abstractDomain().abstractType(), 38 return builder(partialSymbol.arity(), partialSymbol.abstractDomain().abstractType(),
38 partialSymbol.defaultValue()); 39 partialSymbol.defaultValue());
39 } 40 }
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/SeedInitializer.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/SeedInitializer.java
index 9af457d8..138e3a64 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/SeedInitializer.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/SeedInitializer.java
@@ -1,16 +1,17 @@
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.seed; 6package tools.refinery.store.reasoning.seed;
7 7
8import tools.refinery.logic.AbstractValue;
8import tools.refinery.store.model.Model; 9import tools.refinery.store.model.Model;
9import tools.refinery.store.reasoning.refinement.PartialModelInitializer; 10import tools.refinery.store.reasoning.refinement.PartialModelInitializer;
10import tools.refinery.store.reasoning.representation.PartialSymbol; 11import tools.refinery.store.reasoning.representation.PartialSymbol;
11import tools.refinery.store.representation.Symbol; 12import tools.refinery.store.representation.Symbol;
12 13
13public class SeedInitializer<T> implements PartialModelInitializer { 14public class SeedInitializer<T extends AbstractValue<T, ?>> implements PartialModelInitializer {
14 private final Symbol<T> symbol; 15 private final Symbol<T> symbol;
15 private final PartialSymbol<T, ?> partialSymbol; 16 private final PartialSymbol<T, ?> partialSymbol;
16 17
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/PartialRelationTranslator.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/PartialRelationTranslator.java
index c2039afc..75fb3397 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/PartialRelationTranslator.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/PartialRelationTranslator.java
@@ -5,18 +5,19 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator; 6package tools.refinery.store.reasoning.translator;
7 7
8import tools.refinery.logic.Constraint;
9import tools.refinery.logic.dnf.Query;
10import tools.refinery.logic.dnf.QueryBuilder;
11import tools.refinery.logic.dnf.RelationalQuery;
12import tools.refinery.logic.literal.Literal;
13import tools.refinery.logic.term.NodeVariable;
14import tools.refinery.logic.term.truthvalue.TruthValue;
8import tools.refinery.store.dse.transition.Rule; 15import tools.refinery.store.dse.transition.Rule;
9import tools.refinery.store.dse.transition.objectives.Criteria; 16import tools.refinery.store.dse.transition.objectives.Criteria;
10import tools.refinery.store.dse.transition.objectives.Criterion; 17import tools.refinery.store.dse.transition.objectives.Criterion;
11import tools.refinery.store.dse.transition.objectives.Objective; 18import tools.refinery.store.dse.transition.objectives.Objective;
12import tools.refinery.store.dse.transition.objectives.Objectives; 19import tools.refinery.store.dse.transition.objectives.Objectives;
13import tools.refinery.store.model.ModelStoreBuilder; 20import tools.refinery.store.model.ModelStoreBuilder;
14import tools.refinery.store.query.Constraint;
15import tools.refinery.store.query.dnf.Query;
16import tools.refinery.store.query.dnf.QueryBuilder;
17import tools.refinery.store.query.dnf.RelationalQuery;
18import tools.refinery.store.query.literal.Literal;
19import tools.refinery.store.query.term.NodeVariable;
20import tools.refinery.store.query.view.MayView; 21import tools.refinery.store.query.view.MayView;
21import tools.refinery.store.query.view.MustView; 22import tools.refinery.store.query.view.MustView;
22import tools.refinery.store.reasoning.ReasoningAdapter; 23import tools.refinery.store.reasoning.ReasoningAdapter;
@@ -36,12 +37,11 @@ import tools.refinery.store.reasoning.refinement.StorageRefiner;
36import tools.refinery.store.reasoning.representation.PartialRelation; 37import tools.refinery.store.reasoning.representation.PartialRelation;
37import tools.refinery.store.representation.AnySymbol; 38import tools.refinery.store.representation.AnySymbol;
38import tools.refinery.store.representation.Symbol; 39import tools.refinery.store.representation.Symbol;
39import tools.refinery.store.representation.TruthValue;
40 40
41import java.util.ArrayList; 41import java.util.ArrayList;
42import java.util.function.BiConsumer; 42import java.util.function.BiConsumer;
43 43
44import static tools.refinery.store.query.literal.Literals.not; 44import static tools.refinery.logic.literal.Literals.not;
45 45
46@SuppressWarnings("UnusedReturnValue") 46@SuppressWarnings("UnusedReturnValue")
47public final class PartialRelationTranslator extends PartialSymbolTranslator<TruthValue, Boolean> { 47public final class PartialRelationTranslator extends PartialSymbolTranslator<TruthValue, Boolean> {
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/ContainmentHierarchyTranslator.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainmentHierarchyTranslator.java
index c85bd8b7..1183d456 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainmentHierarchyTranslator.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/containment/ContainmentHierarchyTranslator.java
@@ -5,16 +5,18 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.containment; 6package tools.refinery.store.reasoning.translator.containment;
7 7
8import tools.refinery.logic.dnf.Query;
9import tools.refinery.logic.dnf.RelationalQuery;
10import tools.refinery.logic.literal.Connectivity;
11import tools.refinery.logic.literal.Literal;
12import tools.refinery.logic.literal.RepresentativeElectionLiteral;
13import tools.refinery.logic.term.Variable;
14import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
15import tools.refinery.logic.term.uppercardinality.FiniteUpperCardinality;
8import tools.refinery.store.dse.transition.DesignSpaceExplorationBuilder; 16import tools.refinery.store.dse.transition.DesignSpaceExplorationBuilder;
9import tools.refinery.store.dse.transition.Rule; 17import tools.refinery.store.dse.transition.Rule;
10import tools.refinery.store.model.ModelStoreBuilder; 18import tools.refinery.store.model.ModelStoreBuilder;
11import tools.refinery.store.model.ModelStoreConfiguration; 19import tools.refinery.store.model.ModelStoreConfiguration;
12import tools.refinery.store.query.dnf.Query;
13import tools.refinery.store.query.dnf.RelationalQuery;
14import tools.refinery.store.query.literal.Connectivity;
15import tools.refinery.store.query.literal.Literal;
16import tools.refinery.store.query.literal.RepresentativeElectionLiteral;
17import tools.refinery.store.query.term.Variable;
18import tools.refinery.store.query.view.AnySymbolView; 20import tools.refinery.store.query.view.AnySymbolView;
19import tools.refinery.store.reasoning.lifting.DnfLifter; 21import tools.refinery.store.reasoning.lifting.DnfLifter;
20import tools.refinery.store.reasoning.literal.Concreteness; 22import tools.refinery.store.reasoning.literal.Concreteness;
@@ -28,17 +30,15 @@ import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslat
28import tools.refinery.store.reasoning.translator.multiplicity.ConstrainedMultiplicity; 30import tools.refinery.store.reasoning.translator.multiplicity.ConstrainedMultiplicity;
29import tools.refinery.store.reasoning.translator.multiplicity.InvalidMultiplicityErrorTranslator; 31import tools.refinery.store.reasoning.translator.multiplicity.InvalidMultiplicityErrorTranslator;
30import tools.refinery.store.representation.Symbol; 32import tools.refinery.store.representation.Symbol;
31import tools.refinery.store.representation.cardinality.CardinalityIntervals;
32import tools.refinery.store.representation.cardinality.FiniteUpperCardinality;
33 33
34import java.util.ArrayList; 34import java.util.ArrayList;
35import java.util.List; 35import java.util.List;
36import java.util.Map; 36import java.util.Map;
37 37
38import static tools.refinery.store.query.literal.Literals.check; 38import static tools.refinery.logic.term.int_.IntTerms.constant;
39import static tools.refinery.store.query.literal.Literals.not; 39import static tools.refinery.logic.term.int_.IntTerms.less;
40import static tools.refinery.store.query.term.int_.IntTerms.constant; 40import static tools.refinery.logic.literal.Literals.check;
41import static tools.refinery.store.query.term.int_.IntTerms.less; 41import static tools.refinery.logic.literal.Literals.not;
42import static tools.refinery.store.reasoning.ReasoningAdapter.EXISTS_SYMBOL; 42import static tools.refinery.store.reasoning.ReasoningAdapter.EXISTS_SYMBOL;
43import static tools.refinery.store.reasoning.actions.PartialActionLiterals.add; 43import static tools.refinery.store.reasoning.actions.PartialActionLiterals.add;
44import static tools.refinery.store.reasoning.actions.PartialActionLiterals.focus; 44import static tools.refinery.store.reasoning.actions.PartialActionLiterals.focus;
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 e44fcffd..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
@@ -12,7 +12,7 @@ import tools.refinery.store.reasoning.refinement.PartialInterpretationRefiner;
12import tools.refinery.store.reasoning.representation.PartialRelation; 12import tools.refinery.store.reasoning.representation.PartialRelation;
13import tools.refinery.store.reasoning.representation.PartialSymbol; 13import tools.refinery.store.reasoning.representation.PartialSymbol;
14import tools.refinery.store.representation.Symbol; 14import tools.refinery.store.representation.Symbol;
15import tools.refinery.store.representation.TruthValue; 15import tools.refinery.logic.term.truthvalue.TruthValue;
16import tools.refinery.store.tuple.Tuple; 16import tools.refinery.store.tuple.Tuple;
17 17
18import java.util.ArrayList; 18import java.util.ArrayList;
@@ -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 a7196a1c..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 */
@@ -11,7 +11,7 @@ import tools.refinery.store.reasoning.refinement.AbstractPartialInterpretationRe
11import tools.refinery.store.reasoning.refinement.PartialInterpretationRefiner; 11import tools.refinery.store.reasoning.refinement.PartialInterpretationRefiner;
12import tools.refinery.store.reasoning.representation.PartialSymbol; 12import tools.refinery.store.reasoning.representation.PartialSymbol;
13import tools.refinery.store.representation.Symbol; 13import tools.refinery.store.representation.Symbol;
14import tools.refinery.store.representation.TruthValue; 14import tools.refinery.logic.term.truthvalue.TruthValue;
15import tools.refinery.store.tuple.Tuple; 15import tools.refinery.store.tuple.Tuple;
16 16
17import java.util.LinkedHashMap; 17import java.util.LinkedHashMap;
@@ -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 8a757ed2..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
@@ -6,7 +6,7 @@
6package tools.refinery.store.reasoning.translator.containment; 6package tools.refinery.store.reasoning.translator.containment;
7 7
8import tools.refinery.store.reasoning.representation.PartialRelation; 8import tools.refinery.store.reasoning.representation.PartialRelation;
9import tools.refinery.store.representation.TruthValue; 9import tools.refinery.logic.term.truthvalue.TruthValue;
10 10
11import java.util.Objects; 11import java.util.Objects;
12import java.util.Set; 12import java.util.Set;
@@ -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/CrossReferenceUtils.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/CrossReferenceUtils.java
index c4a2f2b3..26449df5 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/CrossReferenceUtils.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/CrossReferenceUtils.java
@@ -5,22 +5,22 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.crossreference; 6package tools.refinery.store.reasoning.translator.crossreference;
7 7
8import tools.refinery.store.query.dnf.Query; 8import tools.refinery.logic.dnf.Query;
9import tools.refinery.store.query.dnf.RelationalQuery; 9import tools.refinery.logic.dnf.RelationalQuery;
10import tools.refinery.store.query.literal.Literal; 10import tools.refinery.logic.literal.Literal;
11import tools.refinery.store.query.term.NodeVariable; 11import tools.refinery.logic.term.NodeVariable;
12import tools.refinery.store.query.term.Variable; 12import tools.refinery.logic.term.Variable;
13import tools.refinery.logic.term.uppercardinality.FiniteUpperCardinality;
13import tools.refinery.store.reasoning.literal.CountLowerBoundLiteral; 14import tools.refinery.store.reasoning.literal.CountLowerBoundLiteral;
14import tools.refinery.store.reasoning.representation.PartialRelation; 15import tools.refinery.store.reasoning.representation.PartialRelation;
15import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity; 16import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity;
16import tools.refinery.store.representation.cardinality.FiniteUpperCardinality;
17 17
18import java.util.ArrayList; 18import java.util.ArrayList;
19import java.util.List; 19import java.util.List;
20 20
21import static tools.refinery.store.query.literal.Literals.check; 21import static tools.refinery.logic.literal.Literals.check;
22import static tools.refinery.store.query.term.int_.IntTerms.constant; 22import static tools.refinery.logic.term.int_.IntTerms.constant;
23import static tools.refinery.store.query.term.int_.IntTerms.less; 23import static tools.refinery.logic.term.int_.IntTerms.less;
24import static tools.refinery.store.reasoning.literal.PartialLiterals.may; 24import static tools.refinery.store.reasoning.literal.PartialLiterals.may;
25 25
26class CrossReferenceUtils { 26class CrossReferenceUtils {
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceInfo.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceInfo.java
index 7241b032..982f835f 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceInfo.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceInfo.java
@@ -7,7 +7,7 @@ package tools.refinery.store.reasoning.translator.crossreference;
7 7
8import tools.refinery.store.reasoning.representation.PartialRelation; 8import tools.refinery.store.reasoning.representation.PartialRelation;
9import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity; 9import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity;
10import tools.refinery.store.representation.TruthValue; 10import tools.refinery.logic.term.truthvalue.TruthValue;
11 11
12public record DirectedCrossReferenceInfo(PartialRelation sourceType, Multiplicity sourceMultiplicity, 12public record DirectedCrossReferenceInfo(PartialRelation sourceType, Multiplicity sourceMultiplicity,
13 PartialRelation targetType, Multiplicity targetMultiplicity, 13 PartialRelation targetType, Multiplicity targetMultiplicity,
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceInitializer.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceInitializer.java
index 9347e91e..7cb16a28 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceInitializer.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceInitializer.java
@@ -11,7 +11,7 @@ import tools.refinery.store.reasoning.refinement.PartialModelInitializer;
11import tools.refinery.store.reasoning.representation.PartialRelation; 11import tools.refinery.store.reasoning.representation.PartialRelation;
12import tools.refinery.store.reasoning.seed.ModelSeed; 12import tools.refinery.store.reasoning.seed.ModelSeed;
13import tools.refinery.store.representation.Symbol; 13import tools.refinery.store.representation.Symbol;
14import tools.refinery.store.representation.TruthValue; 14import tools.refinery.logic.term.truthvalue.TruthValue;
15import tools.refinery.store.tuple.Tuple; 15import tools.refinery.store.tuple.Tuple;
16 16
17class DirectedCrossReferenceInitializer implements PartialModelInitializer { 17class DirectedCrossReferenceInitializer implements PartialModelInitializer {
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceRefiner.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceRefiner.java
index 2e804b44..75dd5dad 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceRefiner.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceRefiner.java
@@ -11,7 +11,7 @@ import tools.refinery.store.reasoning.refinement.PartialInterpretationRefiner;
11import tools.refinery.store.reasoning.representation.PartialRelation; 11import tools.refinery.store.reasoning.representation.PartialRelation;
12import tools.refinery.store.reasoning.representation.PartialSymbol; 12import tools.refinery.store.reasoning.representation.PartialSymbol;
13import tools.refinery.store.representation.Symbol; 13import tools.refinery.store.representation.Symbol;
14import tools.refinery.store.representation.TruthValue; 14import tools.refinery.logic.term.truthvalue.TruthValue;
15import tools.refinery.store.tuple.Tuple; 15import tools.refinery.store.tuple.Tuple;
16 16
17class DirectedCrossReferenceRefiner extends ConcreteSymbolRefiner<TruthValue, Boolean> { 17class DirectedCrossReferenceRefiner extends ConcreteSymbolRefiner<TruthValue, Boolean> {
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceTranslator.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceTranslator.java
index fc7477f1..5bf1f5ab 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceTranslator.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/DirectedCrossReferenceTranslator.java
@@ -5,12 +5,13 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.crossreference; 6package tools.refinery.store.reasoning.translator.crossreference;
7 7
8import tools.refinery.logic.dnf.Query;
9import tools.refinery.logic.dnf.RelationalQuery;
10import tools.refinery.logic.term.truthvalue.TruthValue;
8import tools.refinery.store.dse.propagation.PropagationBuilder; 11import tools.refinery.store.dse.propagation.PropagationBuilder;
9import tools.refinery.store.dse.transition.Rule; 12import tools.refinery.store.dse.transition.Rule;
10import tools.refinery.store.model.ModelStoreBuilder; 13import tools.refinery.store.model.ModelStoreBuilder;
11import tools.refinery.store.model.ModelStoreConfiguration; 14import tools.refinery.store.model.ModelStoreConfiguration;
12import tools.refinery.store.query.dnf.Query;
13import tools.refinery.store.query.dnf.RelationalQuery;
14import tools.refinery.store.query.view.ForbiddenView; 15import tools.refinery.store.query.view.ForbiddenView;
15import tools.refinery.store.reasoning.lifting.DnfLifter; 16import tools.refinery.store.reasoning.lifting.DnfLifter;
16import tools.refinery.store.reasoning.literal.Concreteness; 17import tools.refinery.store.reasoning.literal.Concreteness;
@@ -21,9 +22,8 @@ import tools.refinery.store.reasoning.translator.TranslationException;
21import tools.refinery.store.reasoning.translator.multiplicity.InvalidMultiplicityErrorTranslator; 22import tools.refinery.store.reasoning.translator.multiplicity.InvalidMultiplicityErrorTranslator;
22import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity; 23import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity;
23import tools.refinery.store.representation.Symbol; 24import tools.refinery.store.representation.Symbol;
24import tools.refinery.store.representation.TruthValue;
25 25
26import static tools.refinery.store.query.literal.Literals.not; 26import static tools.refinery.logic.literal.Literals.not;
27import static tools.refinery.store.reasoning.actions.PartialActionLiterals.add; 27import static tools.refinery.store.reasoning.actions.PartialActionLiterals.add;
28import static tools.refinery.store.reasoning.actions.PartialActionLiterals.merge; 28import static tools.refinery.store.reasoning.actions.PartialActionLiterals.merge;
29import static tools.refinery.store.reasoning.literal.PartialLiterals.*; 29import static tools.refinery.store.reasoning.literal.PartialLiterals.*;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceInfo.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceInfo.java
index 34e9032a..560eb04a 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceInfo.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceInfo.java
@@ -7,7 +7,7 @@ package tools.refinery.store.reasoning.translator.crossreference;
7 7
8import tools.refinery.store.reasoning.representation.PartialRelation; 8import tools.refinery.store.reasoning.representation.PartialRelation;
9import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity; 9import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity;
10import tools.refinery.store.representation.TruthValue; 10import tools.refinery.logic.term.truthvalue.TruthValue;
11 11
12public record UndirectedCrossReferenceInfo(PartialRelation type, Multiplicity multiplicity, TruthValue defaultValue) { 12public record UndirectedCrossReferenceInfo(PartialRelation type, Multiplicity multiplicity, TruthValue defaultValue) {
13 public boolean isConstrained() { 13 public boolean isConstrained() {
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 77339aa0..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
@@ -13,7 +13,7 @@ import tools.refinery.store.reasoning.representation.PartialRelation;
13import tools.refinery.store.reasoning.seed.ModelSeed; 13import tools.refinery.store.reasoning.seed.ModelSeed;
14import tools.refinery.store.reasoning.translator.TranslationException; 14import tools.refinery.store.reasoning.translator.TranslationException;
15import tools.refinery.store.representation.Symbol; 15import tools.refinery.store.representation.Symbol;
16import tools.refinery.store.representation.TruthValue; 16import tools.refinery.logic.term.truthvalue.TruthValue;
17import tools.refinery.store.tuple.Tuple; 17import tools.refinery.store.tuple.Tuple;
18 18
19import java.util.LinkedHashMap; 19import java.util.LinkedHashMap;
@@ -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/crossreference/UndirectedCrossReferenceRefiner.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceRefiner.java
index 43c1462b..54aca80f 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceRefiner.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceRefiner.java
@@ -11,7 +11,7 @@ import tools.refinery.store.reasoning.refinement.PartialInterpretationRefiner;
11import tools.refinery.store.reasoning.representation.PartialRelation; 11import tools.refinery.store.reasoning.representation.PartialRelation;
12import tools.refinery.store.reasoning.representation.PartialSymbol; 12import tools.refinery.store.reasoning.representation.PartialSymbol;
13import tools.refinery.store.representation.Symbol; 13import tools.refinery.store.representation.Symbol;
14import tools.refinery.store.representation.TruthValue; 14import tools.refinery.logic.term.truthvalue.TruthValue;
15import tools.refinery.store.tuple.Tuple; 15import tools.refinery.store.tuple.Tuple;
16 16
17class UndirectedCrossReferenceRefiner extends ConcreteSymbolRefiner<TruthValue, Boolean> { 17class UndirectedCrossReferenceRefiner extends ConcreteSymbolRefiner<TruthValue, Boolean> {
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceTranslator.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceTranslator.java
index b76838b3..97c0b800 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceTranslator.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/crossreference/UndirectedCrossReferenceTranslator.java
@@ -9,7 +9,7 @@ import tools.refinery.store.dse.propagation.PropagationBuilder;
9import tools.refinery.store.dse.transition.Rule; 9import tools.refinery.store.dse.transition.Rule;
10import tools.refinery.store.model.ModelStoreBuilder; 10import tools.refinery.store.model.ModelStoreBuilder;
11import tools.refinery.store.model.ModelStoreConfiguration; 11import tools.refinery.store.model.ModelStoreConfiguration;
12import tools.refinery.store.query.dnf.Query; 12import tools.refinery.logic.dnf.Query;
13import tools.refinery.store.query.view.ForbiddenView; 13import tools.refinery.store.query.view.ForbiddenView;
14import tools.refinery.store.reasoning.lifting.DnfLifter; 14import tools.refinery.store.reasoning.lifting.DnfLifter;
15import tools.refinery.store.reasoning.literal.Concreteness; 15import tools.refinery.store.reasoning.literal.Concreteness;
@@ -19,9 +19,9 @@ import tools.refinery.store.reasoning.translator.PartialRelationTranslator;
19import tools.refinery.store.reasoning.translator.TranslationException; 19import tools.refinery.store.reasoning.translator.TranslationException;
20import tools.refinery.store.reasoning.translator.multiplicity.InvalidMultiplicityErrorTranslator; 20import tools.refinery.store.reasoning.translator.multiplicity.InvalidMultiplicityErrorTranslator;
21import tools.refinery.store.representation.Symbol; 21import tools.refinery.store.representation.Symbol;
22import tools.refinery.store.representation.TruthValue; 22import tools.refinery.logic.term.truthvalue.TruthValue;
23 23
24import static tools.refinery.store.query.literal.Literals.not; 24import static tools.refinery.logic.literal.Literals.not;
25import static tools.refinery.store.reasoning.actions.PartialActionLiterals.add; 25import static tools.refinery.store.reasoning.actions.PartialActionLiterals.add;
26import static tools.refinery.store.reasoning.actions.PartialActionLiterals.merge; 26import static tools.refinery.store.reasoning.actions.PartialActionLiterals.merge;
27import static tools.refinery.store.reasoning.literal.PartialLiterals.*; 27import static tools.refinery.store.reasoning.literal.PartialLiterals.*;
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/metamodel/ReferenceInfo.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/ReferenceInfo.java
index 9d7fc9c3..47a2e95f 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/ReferenceInfo.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/ReferenceInfo.java
@@ -7,7 +7,7 @@ package tools.refinery.store.reasoning.translator.metamodel;
7 7
8import tools.refinery.store.reasoning.representation.PartialRelation; 8import tools.refinery.store.reasoning.representation.PartialRelation;
9import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity; 9import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity;
10import tools.refinery.store.representation.TruthValue; 10import tools.refinery.logic.term.truthvalue.TruthValue;
11 11
12public record ReferenceInfo(boolean containment, PartialRelation sourceType, Multiplicity multiplicity, 12public record ReferenceInfo(boolean containment, PartialRelation sourceType, Multiplicity multiplicity,
13 PartialRelation targetType, PartialRelation opposite, TruthValue defaultValue) { 13 PartialRelation targetType, PartialRelation opposite, TruthValue defaultValue) {
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/ReferenceInfoBuilder.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/ReferenceInfoBuilder.java
index 43d01503..39240d6b 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/ReferenceInfoBuilder.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/metamodel/ReferenceInfoBuilder.java
@@ -11,8 +11,8 @@ import tools.refinery.store.reasoning.representation.PartialRelation;
11import tools.refinery.store.reasoning.translator.multiplicity.ConstrainedMultiplicity; 11import tools.refinery.store.reasoning.translator.multiplicity.ConstrainedMultiplicity;
12import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity; 12import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity;
13import tools.refinery.store.reasoning.translator.multiplicity.UnconstrainedMultiplicity; 13import tools.refinery.store.reasoning.translator.multiplicity.UnconstrainedMultiplicity;
14import tools.refinery.store.representation.TruthValue; 14import tools.refinery.logic.term.truthvalue.TruthValue;
15import tools.refinery.store.representation.cardinality.CardinalityInterval; 15import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
16 16
17public final class ReferenceInfoBuilder { 17public final class ReferenceInfoBuilder {
18 private boolean containment; 18 private boolean containment;
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 d8db4ec4..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
@@ -10,9 +10,9 @@ import tools.refinery.store.reasoning.ReasoningAdapter;
10import tools.refinery.store.reasoning.refinement.AbstractPartialInterpretationRefiner; 10import tools.refinery.store.reasoning.refinement.AbstractPartialInterpretationRefiner;
11import tools.refinery.store.reasoning.representation.PartialSymbol; 11import tools.refinery.store.reasoning.representation.PartialSymbol;
12import tools.refinery.store.representation.Symbol; 12import tools.refinery.store.representation.Symbol;
13import tools.refinery.store.representation.TruthValue; 13import tools.refinery.logic.term.truthvalue.TruthValue;
14import tools.refinery.store.representation.cardinality.CardinalityInterval; 14import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
15import tools.refinery.store.representation.cardinality.CardinalityIntervals; 15import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
16import tools.refinery.store.tuple.Tuple; 16import tools.refinery.store.tuple.Tuple;
17 17
18public class EqualsRefiner extends AbstractPartialInterpretationRefiner<TruthValue, Boolean> { 18public class EqualsRefiner extends AbstractPartialInterpretationRefiner<TruthValue, Boolean> {
@@ -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/EqualsRelationRewriter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/EqualsRelationRewriter.java
index 61b9488c..d4852f91 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/EqualsRelationRewriter.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/EqualsRelationRewriter.java
@@ -5,25 +5,25 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.multiobject; 6package tools.refinery.store.reasoning.translator.multiobject;
7 7
8import tools.refinery.store.query.dnf.Query; 8import tools.refinery.logic.dnf.Query;
9import tools.refinery.store.query.dnf.RelationalQuery; 9import tools.refinery.logic.dnf.RelationalQuery;
10import tools.refinery.store.query.literal.AbstractCallLiteral; 10import tools.refinery.logic.literal.AbstractCallLiteral;
11import tools.refinery.store.query.literal.CallLiteral; 11import tools.refinery.logic.literal.CallLiteral;
12import tools.refinery.store.query.literal.Literal; 12import tools.refinery.logic.literal.Literal;
13import tools.refinery.store.query.term.Variable; 13import tools.refinery.logic.term.Variable;
14import tools.refinery.logic.term.uppercardinality.UpperCardinalities;
15import tools.refinery.logic.term.uppercardinality.UpperCardinality;
14import tools.refinery.store.query.view.AnySymbolView; 16import tools.refinery.store.query.view.AnySymbolView;
15import tools.refinery.store.reasoning.interpretation.QueryBasedRelationRewriter; 17import tools.refinery.store.reasoning.interpretation.QueryBasedRelationRewriter;
16import tools.refinery.store.reasoning.literal.Concreteness; 18import tools.refinery.store.reasoning.literal.Concreteness;
17import tools.refinery.store.reasoning.literal.Modality; 19import tools.refinery.store.reasoning.literal.Modality;
18import tools.refinery.store.representation.cardinality.UpperCardinalities;
19import tools.refinery.store.representation.cardinality.UpperCardinality;
20 20
21import java.util.List; 21import java.util.List;
22import java.util.Set; 22import java.util.Set;
23 23
24import static tools.refinery.store.query.literal.Literals.check; 24import static tools.refinery.logic.literal.Literals.check;
25import static tools.refinery.store.query.term.uppercardinality.UpperCardinalityTerms.constant; 25import static tools.refinery.logic.term.uppercardinality.UpperCardinalityTerms.constant;
26import static tools.refinery.store.query.term.uppercardinality.UpperCardinalityTerms.lessEq; 26import static tools.refinery.logic.term.uppercardinality.UpperCardinalityTerms.lessEq;
27 27
28class EqualsRelationRewriter extends QueryBasedRelationRewriter { 28class EqualsRelationRewriter extends QueryBasedRelationRewriter {
29 private EqualsRelationRewriter(RelationalQuery may, RelationalQuery must) { 29 private EqualsRelationRewriter(RelationalQuery may, RelationalQuery must) {
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 f134fe92..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
@@ -10,9 +10,9 @@ import tools.refinery.store.reasoning.ReasoningAdapter;
10import tools.refinery.store.reasoning.refinement.AbstractPartialInterpretationRefiner; 10import tools.refinery.store.reasoning.refinement.AbstractPartialInterpretationRefiner;
11import tools.refinery.store.reasoning.representation.PartialSymbol; 11import tools.refinery.store.reasoning.representation.PartialSymbol;
12import tools.refinery.store.representation.Symbol; 12import tools.refinery.store.representation.Symbol;
13import tools.refinery.store.representation.TruthValue; 13import tools.refinery.logic.term.truthvalue.TruthValue;
14import tools.refinery.store.representation.cardinality.CardinalityInterval; 14import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
15import tools.refinery.store.representation.cardinality.CardinalityIntervals; 15import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
16import tools.refinery.store.tuple.Tuple; 16import tools.refinery.store.tuple.Tuple;
17 17
18public class ExistsRefiner extends AbstractPartialInterpretationRefiner<TruthValue, Boolean> { 18public class ExistsRefiner extends AbstractPartialInterpretationRefiner<TruthValue, Boolean> {
@@ -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/LowerCardinalityView.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/LowerCardinalityView.java
index 9873888c..5691b9e3 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/LowerCardinalityView.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/LowerCardinalityView.java
@@ -5,10 +5,10 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.multiobject; 6package tools.refinery.store.reasoning.translator.multiobject;
7 7
8import tools.refinery.store.query.term.Parameter; 8import tools.refinery.logic.term.Parameter;
9import tools.refinery.store.query.view.AbstractFunctionView; 9import tools.refinery.store.query.view.AbstractFunctionView;
10import tools.refinery.store.representation.Symbol; 10import tools.refinery.store.representation.Symbol;
11import tools.refinery.store.representation.cardinality.CardinalityInterval; 11import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
12 12
13class LowerCardinalityView extends AbstractFunctionView<CardinalityInterval> { 13class LowerCardinalityView extends AbstractFunctionView<CardinalityInterval> {
14 public LowerCardinalityView(Symbol<CardinalityInterval> symbol) { 14 public LowerCardinalityView(Symbol<CardinalityInterval> symbol) {
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 89918155..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
@@ -12,9 +12,9 @@ import tools.refinery.store.reasoning.refinement.PartialModelInitializer;
12import tools.refinery.store.reasoning.seed.ModelSeed; 12import tools.refinery.store.reasoning.seed.ModelSeed;
13import tools.refinery.store.reasoning.translator.TranslationException; 13import tools.refinery.store.reasoning.translator.TranslationException;
14import tools.refinery.store.representation.Symbol; 14import tools.refinery.store.representation.Symbol;
15import tools.refinery.store.representation.TruthValue; 15import tools.refinery.logic.term.truthvalue.TruthValue;
16import tools.refinery.store.representation.cardinality.CardinalityInterval; 16import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
17import tools.refinery.store.representation.cardinality.CardinalityIntervals; 17import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
18import tools.refinery.store.tuple.Tuple; 18import tools.refinery.store.tuple.Tuple;
19 19
20import java.util.Arrays; 20import java.util.Arrays;
@@ -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 e48934d8..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
@@ -9,8 +9,8 @@ import tools.refinery.store.model.Interpretation;
9import tools.refinery.store.model.Model; 9import tools.refinery.store.model.Model;
10import tools.refinery.store.reasoning.refinement.StorageRefiner; 10import tools.refinery.store.reasoning.refinement.StorageRefiner;
11import tools.refinery.store.representation.Symbol; 11import tools.refinery.store.representation.Symbol;
12import tools.refinery.store.representation.cardinality.CardinalityInterval; 12import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
13import tools.refinery.store.representation.cardinality.CardinalityIntervals; 13import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
14import tools.refinery.store.tuple.Tuple; 14import tools.refinery.store.tuple.Tuple;
15 15
16class MultiObjectStorageRefiner implements StorageRefiner { 16class MultiObjectStorageRefiner implements StorageRefiner {
@@ -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/multiobject/MultiObjectTranslator.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectTranslator.java
index 97fda9d5..be15b6d7 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectTranslator.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiObjectTranslator.java
@@ -5,17 +5,21 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.multiobject; 6package tools.refinery.store.reasoning.translator.multiobject;
7 7
8import tools.refinery.logic.dnf.Query;
9import tools.refinery.logic.literal.Literals;
10import tools.refinery.logic.term.Variable;
11import tools.refinery.logic.term.cardinalityinterval.CardinalityDomain;
12import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
13import tools.refinery.logic.term.int_.IntTerms;
14import tools.refinery.logic.term.uppercardinality.UpperCardinalities;
15import tools.refinery.logic.term.uppercardinality.UpperCardinality;
16import tools.refinery.logic.term.uppercardinality.UpperCardinalityTerms;
8import tools.refinery.store.dse.propagation.PropagationBuilder; 17import tools.refinery.store.dse.propagation.PropagationBuilder;
9import tools.refinery.store.dse.transition.Rule; 18import tools.refinery.store.dse.transition.Rule;
10import tools.refinery.store.dse.transition.objectives.Criteria; 19import tools.refinery.store.dse.transition.objectives.Criteria;
11import tools.refinery.store.dse.transition.objectives.Objectives; 20import tools.refinery.store.dse.transition.objectives.Objectives;
12import tools.refinery.store.model.ModelStoreBuilder; 21import tools.refinery.store.model.ModelStoreBuilder;
13import tools.refinery.store.model.ModelStoreConfiguration; 22import tools.refinery.store.model.ModelStoreConfiguration;
14import tools.refinery.store.query.dnf.Query;
15import tools.refinery.store.query.literal.Literals;
16import tools.refinery.store.query.term.Variable;
17import tools.refinery.store.query.term.int_.IntTerms;
18import tools.refinery.store.query.term.uppercardinality.UpperCardinalityTerms;
19import tools.refinery.store.query.view.AnySymbolView; 23import tools.refinery.store.query.view.AnySymbolView;
20import tools.refinery.store.reasoning.ReasoningAdapter; 24import tools.refinery.store.reasoning.ReasoningAdapter;
21import tools.refinery.store.reasoning.ReasoningBuilder; 25import tools.refinery.store.reasoning.ReasoningBuilder;
@@ -24,15 +28,11 @@ import tools.refinery.store.reasoning.representation.PartialFunction;
24import tools.refinery.store.reasoning.translator.PartialRelationTranslator; 28import tools.refinery.store.reasoning.translator.PartialRelationTranslator;
25import tools.refinery.store.reasoning.translator.RoundingMode; 29import tools.refinery.store.reasoning.translator.RoundingMode;
26import tools.refinery.store.representation.Symbol; 30import tools.refinery.store.representation.Symbol;
27import tools.refinery.store.representation.cardinality.CardinalityDomain;
28import tools.refinery.store.representation.cardinality.CardinalityInterval;
29import tools.refinery.store.representation.cardinality.UpperCardinalities;
30import tools.refinery.store.representation.cardinality.UpperCardinality;
31 31
32import java.util.List; 32import java.util.List;
33 33
34import static tools.refinery.store.query.literal.Literals.check; 34import static tools.refinery.logic.literal.Literals.check;
35import static tools.refinery.store.query.term.int_.IntTerms.*; 35import static tools.refinery.logic.term.int_.IntTerms.*;
36 36
37public class MultiObjectTranslator implements ModelStoreConfiguration { 37public class MultiObjectTranslator implements ModelStoreConfiguration {
38 public static final Symbol<CardinalityInterval> COUNT_STORAGE = Symbol.of("COUNT", 1, CardinalityInterval.class, 38 public static final Symbol<CardinalityInterval> COUNT_STORAGE = Symbol.of("COUNT", 1, CardinalityInterval.class,
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiView.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiView.java
index 498bcd83..d81274b3 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiView.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/MultiView.java
@@ -7,8 +7,8 @@ package tools.refinery.store.reasoning.translator.multiobject;
7 7
8import tools.refinery.store.query.view.TuplePreservingView; 8import tools.refinery.store.query.view.TuplePreservingView;
9import tools.refinery.store.representation.Symbol; 9import tools.refinery.store.representation.Symbol;
10import tools.refinery.store.representation.cardinality.CardinalityInterval; 10import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
11import tools.refinery.store.representation.cardinality.CardinalityIntervals; 11import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
12import tools.refinery.store.tuple.Tuple; 12import tools.refinery.store.tuple.Tuple;
13 13
14class MultiView extends TuplePreservingView<CardinalityInterval> { 14class MultiView extends TuplePreservingView<CardinalityInterval> {
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/UpperCardinalityView.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/UpperCardinalityView.java
index 6be6ae1b..5797c4b0 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/UpperCardinalityView.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiobject/UpperCardinalityView.java
@@ -5,11 +5,11 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.multiobject; 6package tools.refinery.store.reasoning.translator.multiobject;
7 7
8import tools.refinery.store.query.term.Parameter; 8import tools.refinery.logic.term.Parameter;
9import tools.refinery.store.query.view.AbstractFunctionView; 9import tools.refinery.store.query.view.AbstractFunctionView;
10import tools.refinery.store.representation.Symbol; 10import tools.refinery.store.representation.Symbol;
11import tools.refinery.store.representation.cardinality.CardinalityInterval; 11import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
12import tools.refinery.store.representation.cardinality.UpperCardinality; 12import tools.refinery.logic.term.uppercardinality.UpperCardinality;
13 13
14class UpperCardinalityView extends AbstractFunctionView<CardinalityInterval> { 14class UpperCardinalityView extends AbstractFunctionView<CardinalityInterval> {
15 public UpperCardinalityView(Symbol<CardinalityInterval> symbol) { 15 public UpperCardinalityView(Symbol<CardinalityInterval> symbol) {
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/ConstrainedMultiplicity.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/ConstrainedMultiplicity.java
index 9db9cc96..c327aac8 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/ConstrainedMultiplicity.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/ConstrainedMultiplicity.java
@@ -7,9 +7,9 @@ package tools.refinery.store.reasoning.translator.multiplicity;
7 7
8import tools.refinery.store.reasoning.representation.PartialRelation; 8import tools.refinery.store.reasoning.representation.PartialRelation;
9import tools.refinery.store.reasoning.translator.TranslationException; 9import tools.refinery.store.reasoning.translator.TranslationException;
10import tools.refinery.store.representation.cardinality.CardinalityInterval; 10import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
11import tools.refinery.store.representation.cardinality.CardinalityIntervals; 11import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
12import tools.refinery.store.representation.cardinality.NonEmptyCardinalityInterval; 12import tools.refinery.logic.term.cardinalityinterval.NonEmptyCardinalityInterval;
13 13
14public record ConstrainedMultiplicity(NonEmptyCardinalityInterval multiplicity, PartialRelation errorSymbol) 14public record ConstrainedMultiplicity(NonEmptyCardinalityInterval multiplicity, PartialRelation errorSymbol)
15 implements Multiplicity { 15 implements Multiplicity {
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/InvalidMultiplicityErrorTranslator.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/InvalidMultiplicityErrorTranslator.java
index a506d802..0ca6eac2 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/InvalidMultiplicityErrorTranslator.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/InvalidMultiplicityErrorTranslator.java
@@ -5,31 +5,26 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.multiplicity; 6package tools.refinery.store.reasoning.translator.multiplicity;
7 7
8import tools.refinery.logic.dnf.Query;
9import tools.refinery.logic.term.Variable;
10import tools.refinery.logic.term.uppercardinality.FiniteUpperCardinality;
11import tools.refinery.logic.term.uppercardinality.UpperCardinalities;
12import tools.refinery.logic.term.uppercardinality.UpperCardinality;
13import tools.refinery.logic.term.uppercardinality.UpperCardinalityTerms;
8import tools.refinery.store.dse.transition.objectives.Objectives; 14import tools.refinery.store.dse.transition.objectives.Objectives;
9import tools.refinery.store.model.ModelStoreBuilder; 15import tools.refinery.store.model.ModelStoreBuilder;
10import tools.refinery.store.model.ModelStoreConfiguration; 16import tools.refinery.store.model.ModelStoreConfiguration;
11import tools.refinery.store.query.dnf.Query;
12import tools.refinery.store.query.term.Variable;
13import tools.refinery.store.query.term.int_.IntTerms;
14import tools.refinery.store.reasoning.ReasoningAdapter; 17import tools.refinery.store.reasoning.ReasoningAdapter;
15import tools.refinery.store.reasoning.lifting.DnfLifter; 18import tools.refinery.store.reasoning.lifting.DnfLifter;
16import tools.refinery.store.reasoning.literal.*; 19import tools.refinery.store.reasoning.literal.*;
17import tools.refinery.store.reasoning.representation.PartialRelation; 20import tools.refinery.store.reasoning.representation.PartialRelation;
18import tools.refinery.store.reasoning.translator.PartialRelationTranslator; 21import tools.refinery.store.reasoning.translator.PartialRelationTranslator;
19import tools.refinery.store.reasoning.translator.TranslationException; 22import tools.refinery.store.reasoning.translator.TranslationException;
20import tools.refinery.store.representation.cardinality.FiniteUpperCardinality;
21import tools.refinery.store.representation.cardinality.UpperCardinalities;
22import tools.refinery.store.representation.cardinality.UpperCardinality;
23 23
24import java.util.List; 24import java.util.List;
25 25
26import static tools.refinery.store.query.literal.Literals.check; 26import static tools.refinery.logic.literal.Literals.check;
27import static tools.refinery.store.query.term.int_.IntTerms.INT_SUM; 27import static tools.refinery.logic.term.int_.IntTerms.*;
28import static tools.refinery.store.query.term.int_.IntTerms.constant;
29import static tools.refinery.store.query.term.int_.IntTerms.greater;
30import static tools.refinery.store.query.term.int_.IntTerms.sub;
31import static tools.refinery.store.query.term.uppercardinality.UpperCardinalityTerms.constant;
32import static tools.refinery.store.query.term.uppercardinality.UpperCardinalityTerms.less;
33import static tools.refinery.store.reasoning.literal.PartialLiterals.candidateMust; 28import static tools.refinery.store.reasoning.literal.PartialLiterals.candidateMust;
34import static tools.refinery.store.reasoning.literal.PartialLiterals.must; 29import static tools.refinery.store.reasoning.literal.PartialLiterals.must;
35 30
@@ -81,17 +76,18 @@ public class InvalidMultiplicityErrorTranslator implements ModelStoreConfigurati
81 mustBuilder.clause(UpperCardinality.class, existingContents -> List.of( 76 mustBuilder.clause(UpperCardinality.class, existingContents -> List.of(
82 must(nodeType.call(node)), 77 must(nodeType.call(node)),
83 new CountUpperBoundLiteral(existingContents, linkType, arguments), 78 new CountUpperBoundLiteral(existingContents, linkType, arguments),
84 check(less(existingContents, constant(lowerBoundCardinality))) 79 check(UpperCardinalityTerms.less(existingContents,
80 UpperCardinalityTerms.constant(lowerBoundCardinality)))
85 )); 81 ));
86 candidateMayBuilder.clause(Integer.class, existingContents -> List.of( 82 candidateMayBuilder.clause(Integer.class, existingContents -> List.of(
87 candidateMust(nodeType.call(node)), 83 candidateMust(nodeType.call(node)),
88 new CountCandidateLowerBoundLiteral(existingContents, linkType, arguments), 84 new CountCandidateLowerBoundLiteral(existingContents, linkType, arguments),
89 check(IntTerms.less(existingContents, constant(lowerBound))) 85 check(less(existingContents, constant(lowerBound)))
90 )); 86 ));
91 candidateMustBuilder.clause(Integer.class, existingContents -> List.of( 87 candidateMustBuilder.clause(Integer.class, existingContents -> List.of(
92 candidateMust(nodeType.call(node)), 88 candidateMust(nodeType.call(node)),
93 new CountCandidateUpperBoundLiteral(existingContents, linkType, arguments), 89 new CountCandidateUpperBoundLiteral(existingContents, linkType, arguments),
94 check(IntTerms.less(existingContents, constant(lowerBound))) 90 check(less(existingContents, constant(lowerBound)))
95 )); 91 ));
96 missingBuilder.clause(Integer.class, existingContents -> List.of( 92 missingBuilder.clause(Integer.class, existingContents -> List.of(
97 candidateMust(nodeType.call(node)), 93 candidateMust(nodeType.call(node)),
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/Multiplicity.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/Multiplicity.java
index d1d6dd1e..d6035781 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/Multiplicity.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/Multiplicity.java
@@ -5,7 +5,7 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.multiplicity; 6package tools.refinery.store.reasoning.translator.multiplicity;
7 7
8import tools.refinery.store.representation.cardinality.CardinalityInterval; 8import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
9 9
10public sealed interface Multiplicity permits ConstrainedMultiplicity, UnconstrainedMultiplicity { 10public sealed interface Multiplicity permits ConstrainedMultiplicity, UnconstrainedMultiplicity {
11 CardinalityInterval multiplicity(); 11 CardinalityInterval multiplicity();
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/UnconstrainedMultiplicity.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/UnconstrainedMultiplicity.java
index 2159b88c..fb669a79 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/UnconstrainedMultiplicity.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/multiplicity/UnconstrainedMultiplicity.java
@@ -5,8 +5,8 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.multiplicity; 6package tools.refinery.store.reasoning.translator.multiplicity;
7 7
8import tools.refinery.store.representation.cardinality.CardinalityInterval; 8import tools.refinery.logic.term.cardinalityinterval.CardinalityInterval;
9import tools.refinery.store.representation.cardinality.CardinalityIntervals; 9import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
10 10
11// Singleton implementation, because there is only a single complete interval. 11// Singleton implementation, because there is only a single complete interval.
12@SuppressWarnings("squid:S6548") 12@SuppressWarnings("squid:S6548")
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}
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeRelationTranslator.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeRelationTranslator.java
index 6e15a628..29abed7a 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeRelationTranslator.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/opposite/OppositeRelationTranslator.java
@@ -5,11 +5,11 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.opposite; 6package tools.refinery.store.reasoning.translator.opposite;
7 7
8import tools.refinery.logic.literal.AbstractCallLiteral;
9import tools.refinery.logic.literal.Literal;
10import tools.refinery.logic.term.Variable;
8import tools.refinery.store.model.ModelStoreBuilder; 11import tools.refinery.store.model.ModelStoreBuilder;
9import tools.refinery.store.model.ModelStoreConfiguration; 12import tools.refinery.store.model.ModelStoreConfiguration;
10import tools.refinery.store.query.literal.AbstractCallLiteral;
11import tools.refinery.store.query.literal.Literal;
12import tools.refinery.store.query.term.Variable;
13import tools.refinery.store.reasoning.interpretation.PartialRelationRewriter; 13import tools.refinery.store.reasoning.interpretation.PartialRelationRewriter;
14import tools.refinery.store.reasoning.literal.Concreteness; 14import tools.refinery.store.reasoning.literal.Concreteness;
15import tools.refinery.store.reasoning.literal.ModalConstraint; 15import tools.refinery.store.reasoning.literal.ModalConstraint;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/predicate/PredicateTranslator.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/predicate/PredicateTranslator.java
index b401118e..010ce977 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/predicate/PredicateTranslator.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/predicate/PredicateTranslator.java
@@ -5,13 +5,14 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.predicate; 6package tools.refinery.store.reasoning.translator.predicate;
7 7
8import tools.refinery.logic.dnf.Query;
9import tools.refinery.logic.dnf.RelationalQuery;
10import tools.refinery.logic.literal.Literal;
11import tools.refinery.logic.term.NodeVariable;
12import tools.refinery.logic.term.Variable;
13import tools.refinery.logic.term.truthvalue.TruthValue;
8import tools.refinery.store.model.ModelStoreBuilder; 14import tools.refinery.store.model.ModelStoreBuilder;
9import tools.refinery.store.model.ModelStoreConfiguration; 15import tools.refinery.store.model.ModelStoreConfiguration;
10import tools.refinery.store.query.dnf.Query;
11import tools.refinery.store.query.dnf.RelationalQuery;
12import tools.refinery.store.query.literal.Literal;
13import tools.refinery.store.query.term.NodeVariable;
14import tools.refinery.store.query.term.Variable;
15import tools.refinery.store.query.view.ForbiddenView; 16import tools.refinery.store.query.view.ForbiddenView;
16import tools.refinery.store.query.view.MayView; 17import tools.refinery.store.query.view.MayView;
17import tools.refinery.store.query.view.MustView; 18import tools.refinery.store.query.view.MustView;
@@ -19,9 +20,8 @@ import tools.refinery.store.reasoning.representation.PartialRelation;
19import tools.refinery.store.reasoning.translator.PartialRelationTranslator; 20import tools.refinery.store.reasoning.translator.PartialRelationTranslator;
20import tools.refinery.store.reasoning.translator.TranslationException; 21import tools.refinery.store.reasoning.translator.TranslationException;
21import tools.refinery.store.representation.Symbol; 22import tools.refinery.store.representation.Symbol;
22import tools.refinery.store.representation.TruthValue;
23 23
24import static tools.refinery.store.query.literal.Literals.not; 24import static tools.refinery.logic.literal.Literals.not;
25import static tools.refinery.store.reasoning.literal.PartialLiterals.may; 25import static tools.refinery.store.reasoning.literal.PartialLiterals.may;
26import static tools.refinery.store.reasoning.literal.PartialLiterals.must; 26import static tools.refinery.store.reasoning.literal.PartialLiterals.must;
27 27
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/proxy/PartialRelationTranslatorProxy.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/proxy/PartialRelationTranslatorProxy.java
index 45dc5bd2..50873993 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/proxy/PartialRelationTranslatorProxy.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/proxy/PartialRelationTranslatorProxy.java
@@ -5,11 +5,11 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.proxy; 6package tools.refinery.store.reasoning.translator.proxy;
7 7
8import tools.refinery.logic.literal.AbstractCallLiteral;
9import tools.refinery.logic.literal.Literal;
10import tools.refinery.logic.term.Variable;
8import tools.refinery.store.model.ModelStoreBuilder; 11import tools.refinery.store.model.ModelStoreBuilder;
9import tools.refinery.store.model.ModelStoreConfiguration; 12import tools.refinery.store.model.ModelStoreConfiguration;
10import tools.refinery.store.query.literal.AbstractCallLiteral;
11import tools.refinery.store.query.literal.Literal;
12import tools.refinery.store.query.term.Variable;
13import tools.refinery.store.reasoning.interpretation.PartialRelationRewriter; 13import tools.refinery.store.reasoning.interpretation.PartialRelationRewriter;
14import tools.refinery.store.reasoning.literal.Concreteness; 14import tools.refinery.store.reasoning.literal.Concreteness;
15import tools.refinery.store.reasoning.literal.ModalConstraint; 15import tools.refinery.store.reasoning.literal.ModalConstraint;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredTypeRefiner.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredTypeRefiner.java
index 40a7b3fa..257b9136 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredTypeRefiner.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredTypeRefiner.java
@@ -10,7 +10,7 @@ import tools.refinery.store.reasoning.ReasoningAdapter;
10import tools.refinery.store.reasoning.refinement.AbstractPartialInterpretationRefiner; 10import tools.refinery.store.reasoning.refinement.AbstractPartialInterpretationRefiner;
11import tools.refinery.store.reasoning.representation.PartialSymbol; 11import tools.refinery.store.reasoning.representation.PartialSymbol;
12import tools.refinery.store.representation.Symbol; 12import tools.refinery.store.representation.Symbol;
13import tools.refinery.store.representation.TruthValue; 13import tools.refinery.logic.term.truthvalue.TruthValue;
14import tools.refinery.store.tuple.Tuple; 14import tools.refinery.store.tuple.Tuple;
15 15
16class InferredTypeRefiner extends AbstractPartialInterpretationRefiner<TruthValue, Boolean> { 16class InferredTypeRefiner extends AbstractPartialInterpretationRefiner<TruthValue, Boolean> {
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisResult.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisResult.java
index ebe0d1b9..324e2b9e 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisResult.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisResult.java
@@ -6,7 +6,7 @@
6package tools.refinery.store.reasoning.translator.typehierarchy; 6package tools.refinery.store.reasoning.translator.typehierarchy;
7 7
8import tools.refinery.store.reasoning.representation.PartialRelation; 8import tools.refinery.store.reasoning.representation.PartialRelation;
9import tools.refinery.store.representation.TruthValue; 9import tools.refinery.logic.term.truthvalue.TruthValue;
10 10
11import java.util.*; 11import java.util.*;
12 12
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyInitializer.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyInitializer.java
index 233e43f0..aa76d927 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyInitializer.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyInitializer.java
@@ -10,7 +10,7 @@ import tools.refinery.store.reasoning.refinement.PartialModelInitializer;
10import tools.refinery.store.reasoning.representation.PartialRelation; 10import tools.refinery.store.reasoning.representation.PartialRelation;
11import tools.refinery.store.reasoning.seed.ModelSeed; 11import tools.refinery.store.reasoning.seed.ModelSeed;
12import tools.refinery.store.representation.Symbol; 12import tools.refinery.store.representation.Symbol;
13import tools.refinery.store.representation.TruthValue; 13import tools.refinery.logic.term.truthvalue.TruthValue;
14import tools.refinery.store.tuple.Tuple; 14import tools.refinery.store.tuple.Tuple;
15 15
16import java.util.Arrays; 16import java.util.Arrays;
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslator.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslator.java
index 37ea1448..700bbe88 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslator.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslator.java
@@ -5,11 +5,11 @@
5 */ 5 */
6package tools.refinery.store.reasoning.translator.typehierarchy; 6package tools.refinery.store.reasoning.translator.typehierarchy;
7 7
8import tools.refinery.logic.dnf.Query;
8import tools.refinery.store.dse.transition.Rule; 9import tools.refinery.store.dse.transition.Rule;
9import tools.refinery.store.dse.transition.actions.ActionLiteral; 10import tools.refinery.store.dse.transition.actions.ActionLiteral;
10import tools.refinery.store.model.ModelStoreBuilder; 11import tools.refinery.store.model.ModelStoreBuilder;
11import tools.refinery.store.model.ModelStoreConfiguration; 12import tools.refinery.store.model.ModelStoreConfiguration;
12import tools.refinery.store.query.dnf.Query;
13import tools.refinery.store.reasoning.ReasoningBuilder; 13import tools.refinery.store.reasoning.ReasoningBuilder;
14import tools.refinery.store.reasoning.actions.PartialActionLiterals; 14import tools.refinery.store.reasoning.actions.PartialActionLiterals;
15import tools.refinery.store.reasoning.literal.PartialLiterals; 15import tools.refinery.store.reasoning.literal.PartialLiterals;
@@ -21,7 +21,7 @@ import tools.refinery.store.representation.Symbol;
21 21
22import java.util.ArrayList; 22import java.util.ArrayList;
23 23
24import static tools.refinery.store.query.literal.Literals.not; 24import static tools.refinery.logic.literal.Literals.not;
25import static tools.refinery.store.reasoning.literal.PartialLiterals.candidateMust; 25import static tools.refinery.store.reasoning.literal.PartialLiterals.candidateMust;
26import static tools.refinery.store.reasoning.literal.PartialLiterals.may; 26import static tools.refinery.store.reasoning.literal.PartialLiterals.may;
27 27
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/PartialModelTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/PartialModelTest.java
index f8135102..2aa058a4 100644
--- a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/PartialModelTest.java
+++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/PartialModelTest.java
@@ -6,10 +6,11 @@
6package tools.refinery.store.reasoning; 6package tools.refinery.store.reasoning;
7 7
8import org.junit.jupiter.api.Test; 8import org.junit.jupiter.api.Test;
9import tools.refinery.logic.dnf.Query;
10import tools.refinery.logic.term.Variable;
11import tools.refinery.logic.term.truthvalue.TruthValue;
9import tools.refinery.store.model.ModelStore; 12import tools.refinery.store.model.ModelStore;
10import tools.refinery.store.query.ModelQueryAdapter; 13import tools.refinery.store.query.ModelQueryAdapter;
11import tools.refinery.store.query.dnf.Query;
12import tools.refinery.store.query.term.Variable;
13import tools.refinery.store.query.interpreter.QueryInterpreterAdapter; 14import tools.refinery.store.query.interpreter.QueryInterpreterAdapter;
14import tools.refinery.store.query.view.ForbiddenView; 15import tools.refinery.store.query.view.ForbiddenView;
15import tools.refinery.store.reasoning.literal.Concreteness; 16import tools.refinery.store.reasoning.literal.Concreteness;
@@ -18,14 +19,13 @@ import tools.refinery.store.reasoning.seed.ModelSeed;
18import tools.refinery.store.reasoning.translator.PartialRelationTranslator; 19import tools.refinery.store.reasoning.translator.PartialRelationTranslator;
19import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator; 20import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator;
20import tools.refinery.store.representation.Symbol; 21import tools.refinery.store.representation.Symbol;
21import tools.refinery.store.representation.TruthValue;
22import tools.refinery.store.tuple.Tuple; 22import tools.refinery.store.tuple.Tuple;
23 23
24import static org.hamcrest.MatcherAssert.assertThat; 24import static org.hamcrest.MatcherAssert.assertThat;
25import static org.hamcrest.Matchers.is; 25import static org.hamcrest.Matchers.is;
26import static org.hamcrest.Matchers.not; 26import static org.hamcrest.Matchers.not;
27import static org.hamcrest.Matchers.nullValue; 27import static org.hamcrest.Matchers.nullValue;
28import static tools.refinery.store.query.literal.Literals.not; 28import static tools.refinery.logic.literal.Literals.not;
29import static tools.refinery.store.reasoning.ReasoningAdapter.EQUALS_SYMBOL; 29import static tools.refinery.store.reasoning.ReasoningAdapter.EQUALS_SYMBOL;
30import static tools.refinery.store.reasoning.ReasoningAdapter.EXISTS_SYMBOL; 30import static tools.refinery.store.reasoning.ReasoningAdapter.EXISTS_SYMBOL;
31import static tools.refinery.store.reasoning.literal.PartialLiterals.may; 31import static tools.refinery.store.reasoning.literal.PartialLiterals.may;
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/lifting/DnfLifterTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/lifting/DnfLifterTest.java
index 793d1cec..f3e4d3b0 100644
--- a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/lifting/DnfLifterTest.java
+++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/lifting/DnfLifterTest.java
@@ -7,9 +7,10 @@ package tools.refinery.store.reasoning.lifting;
7 7
8import org.junit.jupiter.api.BeforeEach; 8import org.junit.jupiter.api.BeforeEach;
9import org.junit.jupiter.api.Test; 9import org.junit.jupiter.api.Test;
10import tools.refinery.store.query.dnf.Dnf; 10import tools.refinery.logic.dnf.Dnf;
11import tools.refinery.store.query.dnf.Query; 11import tools.refinery.logic.dnf.Query;
12import tools.refinery.store.query.term.ParameterDirection; 12import tools.refinery.logic.term.ParameterDirection;
13import tools.refinery.logic.term.truthvalue.TruthValue;
13import tools.refinery.store.query.view.AnySymbolView; 14import tools.refinery.store.query.view.AnySymbolView;
14import tools.refinery.store.query.view.FunctionView; 15import tools.refinery.store.query.view.FunctionView;
15import tools.refinery.store.query.view.MustView; 16import tools.refinery.store.query.view.MustView;
@@ -20,15 +21,14 @@ import tools.refinery.store.reasoning.literal.Modality;
20import tools.refinery.store.reasoning.representation.PartialRelation; 21import tools.refinery.store.reasoning.representation.PartialRelation;
21import tools.refinery.store.reasoning.representation.PartialSymbol; 22import tools.refinery.store.reasoning.representation.PartialSymbol;
22import tools.refinery.store.representation.Symbol; 23import tools.refinery.store.representation.Symbol;
23import tools.refinery.store.representation.TruthValue;
24 24
25import java.util.List; 25import java.util.List;
26 26
27import static org.hamcrest.MatcherAssert.assertThat; 27import static org.hamcrest.MatcherAssert.assertThat;
28import static tools.refinery.store.query.literal.Literals.check; 28import static tools.refinery.logic.literal.Literals.check;
29import static tools.refinery.store.query.literal.Literals.not; 29import static tools.refinery.logic.literal.Literals.not;
30import static tools.refinery.store.query.term.int_.IntTerms.*; 30import static tools.refinery.logic.term.int_.IntTerms.*;
31import static tools.refinery.store.query.tests.QueryMatchers.structurallyEqualTo; 31import static tools.refinery.logic.tests.QueryMatchers.structurallyEqualTo;
32 32
33class DnfLifterTest { 33class DnfLifterTest {
34 private static final Symbol<TruthValue> friendSymbol = Symbol.of("friend", 2, TruthValue.class, 34 private static final Symbol<TruthValue> friendSymbol = Symbol.of("friend", 2, TruthValue.class,
@@ -49,7 +49,7 @@ class DnfLifterTest {
49 @Test 49 @Test
50 void liftPartialRelationCallTest() { 50 void liftPartialRelationCallTest() {
51 var input = Query.of("Actual", (builder, p1) -> builder.clause((v1) -> List.of( 51 var input = Query.of("Actual", (builder, p1) -> builder.clause((v1) -> List.of(
52 friend.call(p1, v1) 52 friend.call(p1, v1)
53 ))).getDnf(); 53 ))).getDnf();
54 var actual = sut.lift(Modality.MUST, Concreteness.PARTIAL, input); 54 var actual = sut.lift(Modality.MUST, Concreteness.PARTIAL, input);
55 55
@@ -204,7 +204,7 @@ class DnfLifterTest {
204 204
205 @Test 205 @Test
206 void liftPartialRelationTransitiveCallTest() { 206 void liftPartialRelationTransitiveCallTest() {
207 var input = Query.of("Actual", (builder, p1, p2)-> builder.clause( 207 var input = Query.of("Actual", (builder, p1, p2) -> builder.clause(
208 friend.callTransitive(p1, p2), 208 friend.callTransitive(p1, p2),
209 not(person.call(p2)) 209 not(person.call(p2))
210 )).getDnf(); 210 )).getDnf();
@@ -233,7 +233,7 @@ class DnfLifterTest {
233 233
234 @Test 234 @Test
235 void liftPartialSymbolTransitiveCallTest() { 235 void liftPartialSymbolTransitiveCallTest() {
236 var input = Query.of("Actual", (builder, p1, p2)-> builder.clause( 236 var input = Query.of("Actual", (builder, p1, p2) -> builder.clause(
237 friendMustView.callTransitive(p1, p2), 237 friendMustView.callTransitive(p1, p2),
238 not(person.call(p2)) 238 not(person.call(p2))
239 )).getDnf(); 239 )).getDnf();
@@ -332,7 +332,8 @@ class DnfLifterTest {
332 332
333 var expected = Query.of("Expected", (builder, p1, p2) -> builder.clause( 333 var expected = Query.of("Expected", (builder, p1, p2) -> builder.clause(
334 ModalConstraint.of(Modality.MAY, Concreteness.PARTIAL, friend).call(p1, p2), 334 ModalConstraint.of(Modality.MAY, Concreteness.PARTIAL, friend).call(p1, p2),
335 not(ModalConstraint.of(Modality.MUST, Concreteness.PARTIAL, ReasoningAdapter.EQUALS_SYMBOL).call(p1, p2)) 335 not(ModalConstraint.of(Modality.MUST, Concreteness.PARTIAL, ReasoningAdapter.EQUALS_SYMBOL).call(p1,
336 p2))
336 )).getDnf(); 337 )).getDnf();
337 338
338 assertThat(actual, structurallyEqualTo(expected)); 339 assertThat(actual, structurallyEqualTo(expected));
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/containment/ContainmentHierarchyTranslatorTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/containment/ContainmentHierarchyTranslatorTest.java
index 1d0ac02d..e889b80d 100644
--- a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/containment/ContainmentHierarchyTranslatorTest.java
+++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/containment/ContainmentHierarchyTranslatorTest.java
@@ -18,8 +18,8 @@ import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslat
18import tools.refinery.store.reasoning.translator.multiplicity.UnconstrainedMultiplicity; 18import tools.refinery.store.reasoning.translator.multiplicity.UnconstrainedMultiplicity;
19import tools.refinery.store.reasoning.translator.typehierarchy.TypeHierarchy; 19import tools.refinery.store.reasoning.translator.typehierarchy.TypeHierarchy;
20import tools.refinery.store.reasoning.translator.typehierarchy.TypeHierarchyTranslator; 20import tools.refinery.store.reasoning.translator.typehierarchy.TypeHierarchyTranslator;
21import tools.refinery.store.representation.TruthValue; 21import tools.refinery.logic.term.truthvalue.TruthValue;
22import tools.refinery.store.representation.cardinality.CardinalityIntervals; 22import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
23import tools.refinery.store.tuple.Tuple; 23import tools.refinery.store.tuple.Tuple;
24 24
25import java.util.Map; 25import java.util.Map;
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilderTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilderTest.java
index ba6ba6da..e2b3f31e 100644
--- a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilderTest.java
+++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilderTest.java
@@ -8,7 +8,7 @@ package tools.refinery.store.reasoning.translator.metamodel;
8import org.junit.jupiter.api.Test; 8import org.junit.jupiter.api.Test;
9import tools.refinery.store.reasoning.representation.PartialRelation; 9import tools.refinery.store.reasoning.representation.PartialRelation;
10import tools.refinery.store.reasoning.translator.TranslationException; 10import tools.refinery.store.reasoning.translator.TranslationException;
11import tools.refinery.store.representation.cardinality.CardinalityIntervals; 11import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
12 12
13import static org.junit.jupiter.api.Assertions.assertThrows; 13import static org.junit.jupiter.api.Assertions.assertThrows;
14 14
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelTest.java
index 88e6a4d7..f8e9e1b5 100644
--- a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelTest.java
+++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelTest.java
@@ -16,8 +16,8 @@ import tools.refinery.store.reasoning.representation.PartialRelation;
16import tools.refinery.store.reasoning.seed.ModelSeed; 16import tools.refinery.store.reasoning.seed.ModelSeed;
17import tools.refinery.store.reasoning.translator.containment.ContainmentHierarchyTranslator; 17import tools.refinery.store.reasoning.translator.containment.ContainmentHierarchyTranslator;
18import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator; 18import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator;
19import tools.refinery.store.representation.TruthValue; 19import tools.refinery.logic.term.truthvalue.TruthValue;
20import tools.refinery.store.representation.cardinality.CardinalityIntervals; 20import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
21import tools.refinery.store.tuple.Tuple; 21import tools.refinery.store.tuple.Tuple;
22 22
23import static org.hamcrest.MatcherAssert.assertThat; 23import static org.hamcrest.MatcherAssert.assertThat;
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/multiobject/PartialCountTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/multiobject/PartialCountTest.java
index 48a046fc..5ef189d5 100644
--- a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/multiobject/PartialCountTest.java
+++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/multiobject/PartialCountTest.java
@@ -8,9 +8,9 @@ package tools.refinery.store.reasoning.translator.multiobject;
8import org.junit.jupiter.api.Test; 8import org.junit.jupiter.api.Test;
9import tools.refinery.store.model.ModelStore; 9import tools.refinery.store.model.ModelStore;
10import tools.refinery.store.query.ModelQueryAdapter; 10import tools.refinery.store.query.ModelQueryAdapter;
11import tools.refinery.store.query.dnf.Query; 11import tools.refinery.logic.dnf.Query;
12import tools.refinery.store.query.resultset.ResultSet; 12import tools.refinery.store.query.resultset.ResultSet;
13import tools.refinery.store.query.term.Variable; 13import tools.refinery.logic.term.Variable;
14import tools.refinery.store.query.interpreter.QueryInterpreterAdapter; 14import tools.refinery.store.query.interpreter.QueryInterpreterAdapter;
15import tools.refinery.store.reasoning.ReasoningAdapter; 15import tools.refinery.store.reasoning.ReasoningAdapter;
16import tools.refinery.store.reasoning.ReasoningStoreAdapter; 16import tools.refinery.store.reasoning.ReasoningStoreAdapter;
@@ -20,17 +20,17 @@ import tools.refinery.store.reasoning.representation.PartialRelation;
20import tools.refinery.store.reasoning.seed.ModelSeed; 20import tools.refinery.store.reasoning.seed.ModelSeed;
21import tools.refinery.store.reasoning.translator.PartialRelationTranslator; 21import tools.refinery.store.reasoning.translator.PartialRelationTranslator;
22import tools.refinery.store.representation.Symbol; 22import tools.refinery.store.representation.Symbol;
23import tools.refinery.store.representation.TruthValue; 23import tools.refinery.logic.term.truthvalue.TruthValue;
24import tools.refinery.store.representation.cardinality.CardinalityIntervals; 24import tools.refinery.logic.term.cardinalityinterval.CardinalityIntervals;
25import tools.refinery.store.representation.cardinality.UpperCardinalities; 25import tools.refinery.logic.term.uppercardinality.UpperCardinalities;
26import tools.refinery.store.representation.cardinality.UpperCardinality; 26import tools.refinery.logic.term.uppercardinality.UpperCardinality;
27import tools.refinery.store.tuple.Tuple; 27import tools.refinery.store.tuple.Tuple;
28 28
29import java.util.List; 29import java.util.List;
30 30
31import static org.hamcrest.MatcherAssert.assertThat; 31import static org.hamcrest.MatcherAssert.assertThat;
32import static org.hamcrest.Matchers.is; 32import static org.hamcrest.Matchers.is;
33import static tools.refinery.store.query.literal.Literals.not; 33import static tools.refinery.logic.literal.Literals.not;
34import static tools.refinery.store.reasoning.literal.PartialLiterals.must; 34import static tools.refinery.store.reasoning.literal.PartialLiterals.must;
35 35
36class PartialCountTest { 36class PartialCountTest {
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/ConcreteSupertypeTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/ConcreteSupertypeTest.java
index 4bef9d8e..b9edcf75 100644
--- a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/ConcreteSupertypeTest.java
+++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/ConcreteSupertypeTest.java
@@ -14,7 +14,7 @@ import tools.refinery.store.reasoning.ReasoningStoreAdapter;
14import tools.refinery.store.reasoning.literal.Concreteness; 14import tools.refinery.store.reasoning.literal.Concreteness;
15import tools.refinery.store.reasoning.representation.PartialRelation; 15import tools.refinery.store.reasoning.representation.PartialRelation;
16import tools.refinery.store.reasoning.seed.ModelSeed; 16import tools.refinery.store.reasoning.seed.ModelSeed;
17import tools.refinery.store.representation.TruthValue; 17import tools.refinery.logic.term.truthvalue.TruthValue;
18import tools.refinery.store.tuple.Tuple; 18import tools.refinery.store.tuple.Tuple;
19 19
20import static org.hamcrest.MatcherAssert.assertThat; 20import static org.hamcrest.MatcherAssert.assertThat;
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisExampleHierarchyTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisExampleHierarchyTest.java
index d9a5477e..d860c7d6 100644
--- a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisExampleHierarchyTest.java
+++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisExampleHierarchyTest.java
@@ -9,7 +9,7 @@ import org.hamcrest.Matchers;
9import org.junit.jupiter.api.BeforeEach; 9import org.junit.jupiter.api.BeforeEach;
10import org.junit.jupiter.api.Test; 10import org.junit.jupiter.api.Test;
11import tools.refinery.store.reasoning.representation.PartialRelation; 11import tools.refinery.store.reasoning.representation.PartialRelation;
12import tools.refinery.store.representation.TruthValue; 12import tools.refinery.logic.term.truthvalue.TruthValue;
13 13
14import java.util.Set; 14import java.util.Set;
15 15
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyPartialModelTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyPartialModelTest.java
index 5af725bb..e87b2684 100644
--- a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyPartialModelTest.java
+++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyPartialModelTest.java
@@ -16,7 +16,7 @@ import tools.refinery.store.reasoning.ReasoningStoreAdapter;
16import tools.refinery.store.reasoning.literal.Concreteness; 16import tools.refinery.store.reasoning.literal.Concreteness;
17import tools.refinery.store.reasoning.representation.PartialRelation; 17import tools.refinery.store.reasoning.representation.PartialRelation;
18import tools.refinery.store.reasoning.seed.ModelSeed; 18import tools.refinery.store.reasoning.seed.ModelSeed;
19import tools.refinery.store.representation.TruthValue; 19import tools.refinery.logic.term.truthvalue.TruthValue;
20import tools.refinery.store.tuple.Tuple; 20import tools.refinery.store.tuple.Tuple;
21 21
22import static org.hamcrest.MatcherAssert.assertThat; 22import static org.hamcrest.MatcherAssert.assertThat;
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTest.java
index 931c62dd..b7c99d2d 100644
--- a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTest.java
+++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTest.java
@@ -9,7 +9,7 @@ import org.hamcrest.Matchers;
9import org.junit.jupiter.api.Test; 9import org.junit.jupiter.api.Test;
10import tools.refinery.store.reasoning.representation.PartialRelation; 10import tools.refinery.store.reasoning.representation.PartialRelation;
11import tools.refinery.store.reasoning.translator.TranslationException; 11import tools.refinery.store.reasoning.translator.TranslationException;
12import tools.refinery.store.representation.TruthValue; 12import tools.refinery.logic.term.truthvalue.TruthValue;
13 13
14import java.util.Set; 14import java.util.Set;
15 15