diff options
Diffstat (limited to 'subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java')
-rw-r--r-- | subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java | 16 |
1 files changed, 12 insertions, 4 deletions
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 4f07f17d..2c879397 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 | |||
@@ -13,20 +13,28 @@ public final class PartialLiterals { | |||
13 | } | 13 | } |
14 | 14 | ||
15 | public static CallLiteral may(CallLiteral literal) { | 15 | public static CallLiteral may(CallLiteral literal) { |
16 | return addModality(literal, Modality.MAY); | 16 | return addModality(literal, Modality.MAY, Concreteness.PARTIAL); |
17 | } | 17 | } |
18 | 18 | ||
19 | public static CallLiteral must(CallLiteral literal) { | 19 | public static CallLiteral must(CallLiteral literal) { |
20 | return addModality(literal, Modality.MUST); | 20 | return addModality(literal, Modality.MUST, Concreteness.PARTIAL); |
21 | } | 21 | } |
22 | 22 | ||
23 | public static CallLiteral addModality(CallLiteral literal, Modality modality) { | 23 | public static CallLiteral candidateMay(CallLiteral literal) { |
24 | return addModality(literal, Modality.MAY, Concreteness.CANDIDATE); | ||
25 | } | ||
26 | |||
27 | public static CallLiteral candidateMust(CallLiteral literal) { | ||
28 | return addModality(literal, Modality.MUST, Concreteness.CANDIDATE); | ||
29 | } | ||
30 | |||
31 | public static CallLiteral addModality(CallLiteral literal, Modality modality, Concreteness concreteness) { | ||
24 | var target = literal.getTarget(); | 32 | var target = literal.getTarget(); |
25 | if (target instanceof ModalConstraint) { | 33 | if (target instanceof ModalConstraint) { |
26 | throw new IllegalArgumentException("Literal %s already has modality".formatted(literal)); | 34 | throw new IllegalArgumentException("Literal %s already has modality".formatted(literal)); |
27 | } | 35 | } |
28 | var polarity = literal.getPolarity(); | 36 | var polarity = literal.getPolarity(); |
29 | var modalTarget = new ModalConstraint(modality.commute(polarity), target); | 37 | var modalTarget = new ModalConstraint(modality.commute(polarity), concreteness, target); |
30 | return new CallLiteral(polarity, modalTarget, literal.getArguments()); | 38 | return new CallLiteral(polarity, modalTarget, literal.getArguments()); |
31 | } | 39 | } |
32 | } | 40 | } |