diff options
author | 2023-07-18 20:18:48 +0200 | |
---|---|---|
committer | 2023-07-20 15:54:49 +0200 | |
commit | bc742b20fa187200def2809e5aef71547f75c65a (patch) | |
tree | f12e0344805501118410520ee8a60905a6541210 /subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java | |
parent | feat: use base index for local search (diff) | |
download | refinery-bc742b20fa187200def2809e5aef71547f75c65a.tar.gz refinery-bc742b20fa187200def2809e5aef71547f75c65a.tar.zst refinery-bc742b20fa187200def2809e5aef71547f75c65a.zip |
feat: basic partial interpretation infrastructure
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 | } |