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.java19
1 files changed, 12 insertions, 7 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 0e46a795..2614c26e 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
@@ -5,6 +5,7 @@
5 */ 5 */
6package tools.refinery.store.reasoning.literal; 6package tools.refinery.store.reasoning.literal;
7 7
8import tools.refinery.store.query.InvalidQueryException;
8import tools.refinery.store.query.literal.CallLiteral; 9import tools.refinery.store.query.literal.CallLiteral;
9 10
10public final class PartialLiterals { 11public final class PartialLiterals {
@@ -13,24 +14,28 @@ public final class PartialLiterals {
13 } 14 }
14 15
15 public static CallLiteral may(CallLiteral literal) { 16 public static CallLiteral may(CallLiteral literal) {
16 return addModality(literal, Modality.MAY); 17 return addModality(literal, Modality.MAY, Concreteness.PARTIAL);
17 } 18 }
18 19
19 public static CallLiteral must(CallLiteral literal) { 20 public static CallLiteral must(CallLiteral literal) {
20 return addModality(literal, Modality.MUST); 21 return addModality(literal, Modality.MUST, Concreteness.PARTIAL);
21 } 22 }
22 23
23 public static CallLiteral current(CallLiteral literal) { 24 public static CallLiteral candidateMay(CallLiteral literal) {
24 return addModality(literal, Modality.CURRENT); 25 return addModality(literal, Modality.MAY, Concreteness.CANDIDATE);
25 } 26 }
26 27
27 public static CallLiteral addModality(CallLiteral literal, Modality modality) { 28 public static CallLiteral candidateMust(CallLiteral literal) {
29 return addModality(literal, Modality.MUST, Concreteness.CANDIDATE);
30 }
31
32 public static CallLiteral addModality(CallLiteral literal, Modality modality, Concreteness concreteness) {
28 var target = literal.getTarget(); 33 var target = literal.getTarget();
29 if (target instanceof ModalConstraint) { 34 if (target instanceof ModalConstraint) {
30 throw new IllegalArgumentException("Literal %s already has modality".formatted(literal)); 35 throw new InvalidQueryException("Literal %s already has modality".formatted(literal));
31 } 36 }
32 var polarity = literal.getPolarity(); 37 var polarity = literal.getPolarity();
33 var modalTarget = new ModalConstraint(modality.commute(polarity), target); 38 var modalTarget = new ModalConstraint(modality.commute(polarity), concreteness, target);
34 return new CallLiteral(polarity, modalTarget, literal.getArguments()); 39 return new CallLiteral(polarity, modalTarget, literal.getArguments());
35 } 40 }
36} 41}