aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java
diff options
context:
space:
mode:
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.java16
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}