aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/logic/src/main/java/tools/refinery/logic/term/cardinalityinterval/CardinalityDomain.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/logic/src/main/java/tools/refinery/logic/term/cardinalityinterval/CardinalityDomain.java')
-rw-r--r--subprojects/logic/src/main/java/tools/refinery/logic/term/cardinalityinterval/CardinalityDomain.java39
1 files changed, 6 insertions, 33 deletions
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/cardinalityinterval/CardinalityDomain.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/cardinalityinterval/CardinalityDomain.java
index 508a454b..29775615 100644
--- a/subprojects/logic/src/main/java/tools/refinery/logic/term/cardinalityinterval/CardinalityDomain.java
+++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/cardinalityinterval/CardinalityDomain.java
@@ -5,11 +5,8 @@
5 */ 5 */
6package tools.refinery.logic.term.cardinalityinterval; 6package tools.refinery.logic.term.cardinalityinterval;
7 7
8import tools.refinery.logic.term.uppercardinality.FiniteUpperCardinality;
9import tools.refinery.logic.AbstractDomain; 8import tools.refinery.logic.AbstractDomain;
10 9
11import java.util.Optional;
12
13// Singleton pattern, because there is only one domain for truth values. 10// Singleton pattern, because there is only one domain for truth values.
14@SuppressWarnings("squid:S6548") 11@SuppressWarnings("squid:S6548")
15public class CardinalityDomain implements AbstractDomain<CardinalityInterval, Integer> { 12public class CardinalityDomain implements AbstractDomain<CardinalityInterval, Integer> {
@@ -29,41 +26,17 @@ public class CardinalityDomain implements AbstractDomain<CardinalityInterval, In
29 } 26 }
30 27
31 @Override 28 @Override
32 public CardinalityInterval toAbstract(Integer concreteValue) { 29 public CardinalityInterval unknown() {
33 return CardinalityIntervals.exactly(concreteValue); 30 return CardinalityIntervals.SET;
34 }
35
36 @Override
37 public Optional<Integer> toConcrete(CardinalityInterval abstractValue) {
38 return isConcrete(abstractValue) ? Optional.of(abstractValue.lowerBound()) : Optional.empty();
39 }
40
41 @Override
42 public boolean isConcrete(CardinalityInterval abstractValue) {
43 if (!(abstractValue instanceof NonEmptyCardinalityInterval nonEmptyValue) ||
44 !((nonEmptyValue.upperBound()) instanceof FiniteUpperCardinality finiteUpperCardinality)) {
45 return false;
46 }
47 return nonEmptyValue.lowerBound() == finiteUpperCardinality.finiteUpperBound();
48 }
49
50 @Override
51 public CardinalityInterval commonRefinement(CardinalityInterval leftValue, CardinalityInterval rightValue) {
52 return leftValue.meet(rightValue);
53 }
54
55 @Override
56 public CardinalityInterval commonAncestor(CardinalityInterval leftValue, CardinalityInterval rightValue) {
57 return leftValue.join(rightValue);
58 } 31 }
59 32
60 @Override 33 @Override
61 public CardinalityInterval unknown() { 34 public CardinalityInterval error() {
62 return CardinalityIntervals.SET; 35 return CardinalityIntervals.ERROR;
63 } 36 }
64 37
65 @Override 38 @Override
66 public boolean isError(CardinalityInterval abstractValue) { 39 public CardinalityInterval toAbstract(Integer concreteValue) {
67 return abstractValue.isEmpty(); 40 return CardinalityIntervals.exactly(concreteValue);
68 } 41 }
69} 42}