diff options
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.java | 39 |
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 | */ |
6 | package tools.refinery.logic.term.cardinalityinterval; | 6 | package tools.refinery.logic.term.cardinalityinterval; |
7 | 7 | ||
8 | import tools.refinery.logic.term.uppercardinality.FiniteUpperCardinality; | ||
9 | import tools.refinery.logic.AbstractDomain; | 8 | import tools.refinery.logic.AbstractDomain; |
10 | 9 | ||
11 | import 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") |
15 | public class CardinalityDomain implements AbstractDomain<CardinalityInterval, Integer> { | 12 | public 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 | } |