diff options
Diffstat (limited to 'subprojects/store/src/main/java/tools/refinery/store/representation/TruthValueDomain.java')
-rw-r--r-- | subprojects/store/src/main/java/tools/refinery/store/representation/TruthValueDomain.java | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/TruthValueDomain.java b/subprojects/store/src/main/java/tools/refinery/store/representation/TruthValueDomain.java index 89f8dd19..61696dca 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/TruthValueDomain.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/TruthValueDomain.java | |||
@@ -7,6 +7,8 @@ package tools.refinery.store.representation; | |||
7 | 7 | ||
8 | import java.util.Optional; | 8 | import java.util.Optional; |
9 | 9 | ||
10 | // Singleton pattern, because there is only one domain for truth values. | ||
11 | @SuppressWarnings("squid:S6548") | ||
10 | public final class TruthValueDomain implements AbstractDomain<TruthValue, Boolean> { | 12 | public final class TruthValueDomain implements AbstractDomain<TruthValue, Boolean> { |
11 | public static final TruthValueDomain INSTANCE = new TruthValueDomain(); | 13 | public static final TruthValueDomain INSTANCE = new TruthValueDomain(); |
12 | 14 | ||
@@ -15,51 +17,50 @@ public final class TruthValueDomain implements AbstractDomain<TruthValue, Boolea | |||
15 | 17 | ||
16 | @Override | 18 | @Override |
17 | public Class<TruthValue> abstractType() { | 19 | public Class<TruthValue> abstractType() { |
18 | return null; | 20 | return TruthValue.class; |
19 | } | 21 | } |
20 | 22 | ||
21 | @Override | 23 | @Override |
22 | public Class<Boolean> concreteType() { | 24 | public Class<Boolean> concreteType() { |
23 | return null; | 25 | return Boolean.class; |
24 | } | 26 | } |
25 | 27 | ||
26 | @Override | 28 | @Override |
27 | public TruthValue toAbstract(Boolean concreteValue) { | 29 | public TruthValue toAbstract(Boolean concreteValue) { |
28 | return null; | 30 | return TruthValue.toTruthValue(concreteValue); |
29 | } | 31 | } |
30 | 32 | ||
31 | @Override | 33 | @Override |
32 | public Optional<Boolean> toConcrete(TruthValue abstractValue) { | 34 | public Optional<Boolean> toConcrete(TruthValue abstractValue) { |
33 | return Optional.empty(); | 35 | return switch (abstractValue) { |
36 | case TRUE -> Optional.of(true); | ||
37 | case FALSE -> Optional.of(false); | ||
38 | default -> Optional.empty(); | ||
39 | }; | ||
34 | } | 40 | } |
35 | 41 | ||
36 | @Override | 42 | @Override |
37 | public boolean isConcrete(TruthValue abstractValue) { | 43 | public boolean isConcrete(TruthValue abstractValue) { |
38 | return AbstractDomain.super.isConcrete(abstractValue); | 44 | return abstractValue.isConcrete(); |
39 | } | ||
40 | |||
41 | @Override | ||
42 | public boolean isRefinement(TruthValue originalValue, TruthValue refinedValue) { | ||
43 | return false; | ||
44 | } | 45 | } |
45 | 46 | ||
46 | @Override | 47 | @Override |
47 | public TruthValue commonRefinement(TruthValue leftValue, TruthValue rightValue) { | 48 | public TruthValue commonRefinement(TruthValue leftValue, TruthValue rightValue) { |
48 | return null; | 49 | return leftValue.merge(rightValue); |
49 | } | 50 | } |
50 | 51 | ||
51 | @Override | 52 | @Override |
52 | public TruthValue commonAncestor(TruthValue leftValue, TruthValue rightValue) { | 53 | public TruthValue commonAncestor(TruthValue leftValue, TruthValue rightValue) { |
53 | return null; | 54 | return leftValue.join(rightValue); |
54 | } | 55 | } |
55 | 56 | ||
56 | @Override | 57 | @Override |
57 | public TruthValue unknown() { | 58 | public TruthValue unknown() { |
58 | return null; | 59 | return TruthValue.UNKNOWN; |
59 | } | 60 | } |
60 | 61 | ||
61 | @Override | 62 | @Override |
62 | public boolean isError(TruthValue abstractValue) { | 63 | public boolean isError(TruthValue abstractValue) { |
63 | return false; | 64 | return !abstractValue.isConsistent(); |
64 | } | 65 | } |
65 | } | 66 | } |