diff options
Diffstat (limited to 'subprojects/logic/src/main/java/tools/refinery/logic/AbstractDomain.java')
-rw-r--r-- | subprojects/logic/src/main/java/tools/refinery/logic/AbstractDomain.java | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/AbstractDomain.java b/subprojects/logic/src/main/java/tools/refinery/logic/AbstractDomain.java index 607caa48..0b4d87d2 100644 --- a/subprojects/logic/src/main/java/tools/refinery/logic/AbstractDomain.java +++ b/subprojects/logic/src/main/java/tools/refinery/logic/AbstractDomain.java | |||
@@ -1,37 +1,20 @@ | |||
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 | */ |
6 | package tools.refinery.logic; | 6 | package tools.refinery.logic; |
7 | 7 | ||
8 | import java.util.Objects; | 8 | public non-sealed interface AbstractDomain<A extends AbstractValue<A, C>, C> extends AnyAbstractDomain { |
9 | import java.util.Optional; | ||
10 | |||
11 | public non-sealed interface AbstractDomain<A, C> extends AnyAbstractDomain { | ||
12 | @Override | 9 | @Override |
13 | Class<A> abstractType(); | 10 | Class<A> abstractType(); |
14 | 11 | ||
15 | @Override | 12 | @Override |
16 | Class<C> concreteType(); | 13 | Class<C> concreteType(); |
17 | 14 | ||
18 | A toAbstract(C concreteValue); | ||
19 | |||
20 | Optional<C> toConcrete(A abstractValue); | ||
21 | |||
22 | default boolean isConcrete(A abstractValue) { | ||
23 | return toConcrete(abstractValue).isPresent(); | ||
24 | } | ||
25 | |||
26 | default boolean isRefinement(A originalValue, A refinedValue) { | ||
27 | return Objects.equals(commonRefinement(originalValue, refinedValue), refinedValue); | ||
28 | } | ||
29 | |||
30 | A commonRefinement(A leftValue, A rightValue); | ||
31 | |||
32 | A commonAncestor(A leftValue, A rightValue); | ||
33 | |||
34 | A unknown(); | 15 | A unknown(); |
35 | 16 | ||
36 | boolean isError(A abstractValue); | 17 | A error(); |
18 | |||
19 | A toAbstract(C concreteValue); | ||
37 | } | 20 | } |