diff options
author | Kristóf Marussy <marussy@mit.bme.hu> | 2023-06-18 18:04:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-18 18:04:43 +0200 |
commit | a0619c0fbf1fab2304ca683343803d1f37c2ef7c (patch) | |
tree | 6d6e342b019a1f3ad0baae710cf520a5dffe4b9e /subprojects/store-reasoning/src/main | |
parent | Merge pull request #24 from kris7t/partial-interpretation (diff) | |
parent | chore(deps): bump dependencies (diff) | |
download | refinery-a0619c0fbf1fab2304ca683343803d1f37c2ef7c.tar.gz refinery-a0619c0fbf1fab2304ca683343803d1f37c2ef7c.tar.zst refinery-a0619c0fbf1fab2304ca683343803d1f37c2ef7c.zip |
Merge pull request #26 from kris7t/query-refactor
Query refactor
Diffstat (limited to 'subprojects/store-reasoning/src/main')
44 files changed, 277 insertions, 94 deletions
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/AnyPartialInterpretation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/AnyPartialInterpretation.java index ebe82c8b..000171a1 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/AnyPartialInterpretation.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/AnyPartialInterpretation.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning; | 6 | package tools.refinery.store.reasoning; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.representation.AnyPartialSymbol; | 8 | import tools.refinery.store.reasoning.representation.AnyPartialSymbol; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/MergeResult.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/MergeResult.java index 0d51598b..d3a216d8 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/MergeResult.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/MergeResult.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning; | 6 | package tools.refinery.store.reasoning; |
2 | 7 | ||
3 | public enum MergeResult { | 8 | public enum MergeResult { |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/PartialInterpretation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/PartialInterpretation.java index 4f195e97..4140d640 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/PartialInterpretation.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/PartialInterpretation.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning; | 6 | package tools.refinery.store.reasoning; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.representation.PartialSymbol; | 8 | import tools.refinery.store.reasoning.representation.PartialSymbol; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/Reasoning.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/Reasoning.java deleted file mode 100644 index d7d0a999..00000000 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/Reasoning.java +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | package tools.refinery.store.reasoning; | ||
2 | |||
3 | import tools.refinery.store.reasoning.internal.ReasoningBuilderImpl; | ||
4 | import tools.refinery.store.adapter.ModelAdapterBuilderFactory; | ||
5 | import tools.refinery.store.model.ModelStoreBuilder; | ||
6 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
7 | |||
8 | public final class Reasoning extends ModelAdapterBuilderFactory<ReasoningAdapter, | ||
9 | ReasoningStoreAdapter, ReasoningBuilder> { | ||
10 | public static final Reasoning ADAPTER = new Reasoning(); | ||
11 | |||
12 | public static final PartialRelation EXISTS = new PartialRelation("exists", 1); | ||
13 | |||
14 | public static final PartialRelation EQUALS = new PartialRelation("equals", 1); | ||
15 | |||
16 | private Reasoning() { | ||
17 | super(ReasoningAdapter.class, ReasoningStoreAdapter.class, ReasoningBuilder.class); | ||
18 | } | ||
19 | |||
20 | @Override | ||
21 | public ReasoningBuilder createBuilder(ModelStoreBuilder storeBuilder) { | ||
22 | return new ReasoningBuilderImpl(storeBuilder); | ||
23 | } | ||
24 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningAdapter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningAdapter.java index de039dd9..8f319242 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningAdapter.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningAdapter.java | |||
@@ -1,12 +1,20 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning; | 6 | package tools.refinery.store.reasoning; |
2 | 7 | ||
3 | import tools.refinery.store.adapter.ModelAdapter; | 8 | import tools.refinery.store.adapter.ModelAdapter; |
9 | import tools.refinery.store.query.ResultSet; | ||
10 | import tools.refinery.store.query.dnf.Dnf; | ||
4 | import tools.refinery.store.reasoning.representation.AnyPartialSymbol; | 11 | import tools.refinery.store.reasoning.representation.AnyPartialSymbol; |
12 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
5 | import tools.refinery.store.reasoning.representation.PartialSymbol; | 13 | import tools.refinery.store.reasoning.representation.PartialSymbol; |
6 | import tools.refinery.store.query.dnf.Dnf; | ||
7 | import tools.refinery.store.query.ResultSet; | ||
8 | 14 | ||
9 | public interface ReasoningAdapter extends ModelAdapter { | 15 | public interface ReasoningAdapter extends ModelAdapter { |
16 | PartialRelation EXISTS = new PartialRelation("exists", 1); | ||
17 | |||
10 | @Override | 18 | @Override |
11 | ReasoningStoreAdapter getStoreAdapter(); | 19 | ReasoningStoreAdapter getStoreAdapter(); |
12 | 20 | ||
@@ -18,5 +26,5 @@ public interface ReasoningAdapter extends ModelAdapter { | |||
18 | 26 | ||
19 | <A, C> PartialInterpretation<A, C> getPartialInterpretation(PartialSymbol<A, C> partialSymbol); | 27 | <A, C> PartialInterpretation<A, C> getPartialInterpretation(PartialSymbol<A, C> partialSymbol); |
20 | 28 | ||
21 | ResultSet getLiftedResultSet(Dnf query); | 29 | ResultSet<Boolean> getLiftedResultSet(Dnf query); |
22 | } | 30 | } |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningBuilder.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningBuilder.java index 4030d296..d3a337e8 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningBuilder.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningBuilder.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning; | 6 | package tools.refinery.store.reasoning; |
2 | 7 | ||
3 | import tools.refinery.store.adapter.ModelAdapterBuilder; | 8 | import tools.refinery.store.adapter.ModelAdapterBuilder; |
@@ -24,5 +29,5 @@ public interface ReasoningBuilder extends ModelAdapterBuilder { | |||
24 | Dnf lift(Modality modality, Dnf query); | 29 | Dnf lift(Modality modality, Dnf query); |
25 | 30 | ||
26 | @Override | 31 | @Override |
27 | ReasoningStoreAdapter createStoreAdapter(ModelStore store); | 32 | ReasoningStoreAdapter build(ModelStore store); |
28 | } | 33 | } |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningStoreAdapter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningStoreAdapter.java index f6a6e414..c9795255 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningStoreAdapter.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningStoreAdapter.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning; | 6 | package tools.refinery.store.reasoning; |
2 | 7 | ||
3 | import tools.refinery.store.adapter.ModelStoreAdapter; | 8 | import tools.refinery.store.adapter.ModelStoreAdapter; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningAdapterImpl.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningAdapterImpl.java index 0acf0d49..33b6f3c6 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningAdapterImpl.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningAdapterImpl.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.internal; | 6 | package tools.refinery.store.reasoning.internal; |
2 | 7 | ||
3 | import tools.refinery.store.model.Model; | 8 | import tools.refinery.store.model.Model; |
@@ -32,7 +37,7 @@ public class ReasoningAdapterImpl implements ReasoningAdapter { | |||
32 | } | 37 | } |
33 | 38 | ||
34 | @Override | 39 | @Override |
35 | public ResultSet getLiftedResultSet(Dnf query) { | 40 | public ResultSet<Boolean> getLiftedResultSet(Dnf query) { |
36 | return null; | 41 | return null; |
37 | } | 42 | } |
38 | } | 43 | } |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningBuilderImpl.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningBuilderImpl.java index e11b14bf..aa71496c 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningBuilderImpl.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningBuilderImpl.java | |||
@@ -1,17 +1,18 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.internal; | 6 | package tools.refinery.store.reasoning.internal; |
2 | 7 | ||
3 | import tools.refinery.store.adapter.AbstractModelAdapterBuilder; | 8 | import tools.refinery.store.adapter.AbstractModelAdapterBuilder; |
4 | import tools.refinery.store.model.ModelStore; | 9 | import tools.refinery.store.model.ModelStore; |
5 | import tools.refinery.store.model.ModelStoreBuilder; | 10 | import tools.refinery.store.query.dnf.Dnf; |
6 | import tools.refinery.store.reasoning.ReasoningBuilder; | 11 | import tools.refinery.store.reasoning.ReasoningBuilder; |
7 | import tools.refinery.store.reasoning.literal.Modality; | 12 | import tools.refinery.store.reasoning.literal.Modality; |
8 | import tools.refinery.store.query.dnf.Dnf; | ||
9 | |||
10 | public class ReasoningBuilderImpl extends AbstractModelAdapterBuilder implements ReasoningBuilder { | ||
11 | public ReasoningBuilderImpl(ModelStoreBuilder storeBuilder) { | ||
12 | super(storeBuilder); | ||
13 | } | ||
14 | 13 | ||
14 | public class ReasoningBuilderImpl extends AbstractModelAdapterBuilder<ReasoningStoreAdapterImpl> | ||
15 | implements ReasoningBuilder { | ||
15 | @Override | 16 | @Override |
16 | public ReasoningBuilder liftedQuery(Dnf liftedQuery) { | 17 | public ReasoningBuilder liftedQuery(Dnf liftedQuery) { |
17 | return null; | 18 | return null; |
@@ -19,11 +20,12 @@ public class ReasoningBuilderImpl extends AbstractModelAdapterBuilder implements | |||
19 | 20 | ||
20 | @Override | 21 | @Override |
21 | public Dnf lift(Modality modality, Dnf query) { | 22 | public Dnf lift(Modality modality, Dnf query) { |
23 | checkNotConfigured(); | ||
22 | return null; | 24 | return null; |
23 | } | 25 | } |
24 | 26 | ||
25 | @Override | 27 | @Override |
26 | public ReasoningStoreAdapterImpl createStoreAdapter(ModelStore store) { | 28 | public ReasoningStoreAdapterImpl doBuild(ModelStore store) { |
27 | return null; | 29 | return null; |
28 | } | 30 | } |
29 | } | 31 | } |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningStoreAdapterImpl.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningStoreAdapterImpl.java index ac06e68b..cdddd8d6 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningStoreAdapterImpl.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningStoreAdapterImpl.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.internal; | 6 | package tools.refinery.store.reasoning.internal; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.ReasoningStoreAdapter; | 8 | import tools.refinery.store.reasoning.ReasoningStoreAdapter; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/DnfLifter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/DnfLifter.java index 2b0e0f08..ac41d170 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/DnfLifter.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/DnfLifter.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.lifting; | 6 | package tools.refinery.store.reasoning.lifting; |
2 | 7 | ||
3 | import org.jetbrains.annotations.Nullable; | 8 | import org.jetbrains.annotations.Nullable; |
@@ -7,16 +12,16 @@ import tools.refinery.store.query.dnf.DnfClause; | |||
7 | import tools.refinery.store.query.literal.CallLiteral; | 12 | import tools.refinery.store.query.literal.CallLiteral; |
8 | import tools.refinery.store.query.literal.CallPolarity; | 13 | import tools.refinery.store.query.literal.CallPolarity; |
9 | import tools.refinery.store.query.literal.Literal; | 14 | import tools.refinery.store.query.literal.Literal; |
10 | import tools.refinery.store.query.term.DataVariable; | 15 | import tools.refinery.store.query.term.NodeVariable; |
11 | import tools.refinery.store.query.term.Variable; | 16 | import tools.refinery.store.query.term.Variable; |
12 | import tools.refinery.store.reasoning.Reasoning; | 17 | import tools.refinery.store.reasoning.ReasoningAdapter; |
13 | import tools.refinery.store.reasoning.literal.ModalConstraint; | 18 | import tools.refinery.store.reasoning.literal.ModalConstraint; |
14 | import tools.refinery.store.reasoning.literal.Modality; | 19 | import tools.refinery.store.reasoning.literal.Modality; |
15 | import tools.refinery.store.reasoning.literal.PartialLiterals; | 20 | import tools.refinery.store.reasoning.literal.PartialLiterals; |
16 | import tools.refinery.store.util.CycleDetectingMapper; | 21 | import tools.refinery.store.util.CycleDetectingMapper; |
17 | 22 | ||
18 | import java.util.ArrayList; | 23 | import java.util.ArrayList; |
19 | import java.util.HashSet; | 24 | import java.util.LinkedHashSet; |
20 | import java.util.List; | 25 | import java.util.List; |
21 | 26 | ||
22 | public class DnfLifter { | 27 | public class DnfLifter { |
@@ -31,10 +36,10 @@ public class DnfLifter { | |||
31 | var modality = modalDnf.modality(); | 36 | var modality = modalDnf.modality(); |
32 | var dnf = modalDnf.dnf(); | 37 | var dnf = modalDnf.dnf(); |
33 | var builder = Dnf.builder(); | 38 | var builder = Dnf.builder(); |
34 | builder.parameters(dnf.getParameters()); | 39 | builder.symbolicParameters(dnf.getSymbolicParameters()); |
35 | boolean changed = false; | 40 | boolean changed = false; |
36 | for (var clause : dnf.getClauses()) { | 41 | for (var clause : dnf.getClauses()) { |
37 | if (liftClause(modality, clause, builder)) { | 42 | if (liftClause(modality, dnf, clause, builder)) { |
38 | changed = true; | 43 | changed = true; |
39 | } | 44 | } |
40 | } | 45 | } |
@@ -44,12 +49,9 @@ public class DnfLifter { | |||
44 | return dnf; | 49 | return dnf; |
45 | } | 50 | } |
46 | 51 | ||
47 | private boolean liftClause(Modality modality, DnfClause clause, DnfBuilder builder) { | 52 | private boolean liftClause(Modality modality, Dnf originalDnf, DnfClause clause, DnfBuilder builder) { |
48 | boolean changed = false; | 53 | boolean changed = false; |
49 | var quantifiedVariables = new HashSet<>(clause.boundVariables() | 54 | var quantifiedVariables = getQuantifiedDataVariables(originalDnf, clause); |
50 | .stream() | ||
51 | .filter(DataVariable.class::isInstance) | ||
52 | .toList()); | ||
53 | var literals = clause.literals(); | 55 | var literals = clause.literals(); |
54 | var liftedLiterals = new ArrayList<Literal>(literals.size()); | 56 | var liftedLiterals = new ArrayList<Literal>(literals.size()); |
55 | for (var literal : literals) { | 57 | for (var literal : literals) { |
@@ -69,20 +71,30 @@ public class DnfLifter { | |||
69 | } | 71 | } |
70 | for (var quantifiedVariable : quantifiedVariables) { | 72 | for (var quantifiedVariable : quantifiedVariables) { |
71 | // Quantify over data variables that are not already quantified with the expected modality. | 73 | // Quantify over data variables that are not already quantified with the expected modality. |
72 | liftedLiterals.add(new CallLiteral(CallPolarity.POSITIVE, new ModalConstraint(modality, Reasoning.EXISTS), | 74 | liftedLiterals.add(new CallLiteral(CallPolarity.POSITIVE, |
73 | List.of(quantifiedVariable))); | 75 | new ModalConstraint(modality, ReasoningAdapter.EXISTS), List.of(quantifiedVariable))); |
74 | } | 76 | } |
75 | builder.clause(liftedLiterals); | 77 | builder.clause(liftedLiterals); |
76 | return changed || !quantifiedVariables.isEmpty(); | 78 | return changed || !quantifiedVariables.isEmpty(); |
77 | } | 79 | } |
78 | 80 | ||
81 | private static LinkedHashSet<Variable> getQuantifiedDataVariables(Dnf originalDnf, DnfClause clause) { | ||
82 | var quantifiedVariables = new LinkedHashSet<>(clause.positiveVariables()); | ||
83 | for (var symbolicParameter : originalDnf.getSymbolicParameters()) { | ||
84 | // The existence of parameters will be checked outside this DNF. | ||
85 | quantifiedVariables.remove(symbolicParameter.getVariable()); | ||
86 | } | ||
87 | quantifiedVariables.removeIf(variable -> !(variable instanceof NodeVariable)); | ||
88 | return quantifiedVariables; | ||
89 | } | ||
90 | |||
79 | @Nullable | 91 | @Nullable |
80 | private Variable isExistsLiteralForVariable(Modality modality, Literal literal) { | 92 | private Variable isExistsLiteralForVariable(Modality modality, Literal literal) { |
81 | if (literal instanceof CallLiteral callLiteral && | 93 | if (literal instanceof CallLiteral callLiteral && |
82 | callLiteral.getPolarity() == CallPolarity.POSITIVE && | 94 | callLiteral.getPolarity() == CallPolarity.POSITIVE && |
83 | callLiteral.getTarget() instanceof ModalConstraint modalConstraint && | 95 | callLiteral.getTarget() instanceof ModalConstraint modalConstraint && |
84 | modalConstraint.modality() == modality && | 96 | modalConstraint.modality() == modality && |
85 | modalConstraint.constraint().equals(Reasoning.EXISTS)) { | 97 | modalConstraint.constraint().equals(ReasoningAdapter.EXISTS)) { |
86 | return callLiteral.getArguments().get(0); | 98 | return callLiteral.getArguments().get(0); |
87 | } | 99 | } |
88 | return null; | 100 | return null; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/ModalDnf.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/ModalDnf.java index ec381bb8..16fb8fbf 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/ModalDnf.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/ModalDnf.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.lifting; | 6 | package tools.refinery.store.reasoning.lifting; |
2 | 7 | ||
3 | import tools.refinery.store.query.dnf.Dnf; | 8 | import tools.refinery.store.query.dnf.Dnf; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/ModalConstraint.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/ModalConstraint.java index 2fbb4607..5ad1d5f8 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/ModalConstraint.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/ModalConstraint.java | |||
@@ -1,9 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.literal; | 6 | package tools.refinery.store.reasoning.literal; |
2 | 7 | ||
3 | import tools.refinery.store.query.Constraint; | 8 | import tools.refinery.store.query.Constraint; |
4 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | 9 | import tools.refinery.store.query.equality.LiteralEqualityHelper; |
5 | import tools.refinery.store.query.literal.LiteralReduction; | 10 | import tools.refinery.store.query.Reduction; |
6 | import tools.refinery.store.query.term.Sort; | 11 | import tools.refinery.store.query.term.Parameter; |
7 | 12 | ||
8 | import java.util.List; | 13 | import java.util.List; |
9 | 14 | ||
@@ -16,12 +21,12 @@ public record ModalConstraint(Modality modality, Constraint constraint) implemen | |||
16 | } | 21 | } |
17 | 22 | ||
18 | @Override | 23 | @Override |
19 | public List<Sort> getSorts() { | 24 | public List<Parameter> getParameters() { |
20 | return constraint.getSorts(); | 25 | return constraint.getParameters(); |
21 | } | 26 | } |
22 | 27 | ||
23 | @Override | 28 | @Override |
24 | public LiteralReduction getReduction() { | 29 | public Reduction getReduction() { |
25 | return constraint.getReduction(); | 30 | return constraint.getReduction(); |
26 | } | 31 | } |
27 | 32 | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/Modality.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/Modality.java index f0cb59de..96466d5c 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/Modality.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/Modality.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.literal; | 6 | package tools.refinery.store.reasoning.literal; |
2 | 7 | ||
3 | import tools.refinery.store.query.literal.CallPolarity; | 8 | import tools.refinery.store.query.literal.CallPolarity; |
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 f991f87f..0e46a795 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 | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.literal; | 6 | package tools.refinery.store.reasoning.literal; |
2 | 7 | ||
3 | import tools.refinery.store.query.literal.CallLiteral; | 8 | import tools.refinery.store.query.literal.CallLiteral; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialFunction.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialFunction.java index e74cd58b..8d2cb5cf 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialFunction.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialFunction.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.representation; | 6 | package tools.refinery.store.reasoning.representation; |
2 | 7 | ||
3 | public sealed interface AnyPartialFunction extends AnyPartialSymbol permits PartialFunction { | 8 | public sealed interface AnyPartialFunction extends AnyPartialSymbol permits PartialFunction { |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialSymbol.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialSymbol.java index 6ff5031b..788eef73 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialSymbol.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialSymbol.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.representation; | 6 | package tools.refinery.store.reasoning.representation; |
2 | 7 | ||
3 | import tools.refinery.store.representation.AnyAbstractDomain; | 8 | import tools.refinery.store.representation.AnyAbstractDomain; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialFunction.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialFunction.java index 59eeeefe..d58d026f 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialFunction.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialFunction.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.representation; | 6 | package tools.refinery.store.reasoning.representation; |
2 | 7 | ||
3 | import tools.refinery.store.representation.AbstractDomain; | 8 | import tools.refinery.store.representation.AbstractDomain; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialRelation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialRelation.java index 9bae53a9..6b2f050b 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialRelation.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialRelation.java | |||
@@ -1,8 +1,12 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.representation; | 6 | package tools.refinery.store.reasoning.representation; |
2 | 7 | ||
3 | import tools.refinery.store.query.Constraint; | 8 | import tools.refinery.store.query.Constraint; |
4 | import tools.refinery.store.query.term.NodeSort; | 9 | import tools.refinery.store.query.term.Parameter; |
5 | import tools.refinery.store.query.term.Sort; | ||
6 | import tools.refinery.store.representation.AbstractDomain; | 10 | import tools.refinery.store.representation.AbstractDomain; |
7 | import tools.refinery.store.representation.TruthValue; | 11 | import tools.refinery.store.representation.TruthValue; |
8 | import tools.refinery.store.representation.TruthValueDomain; | 12 | import tools.refinery.store.representation.TruthValueDomain; |
@@ -27,10 +31,10 @@ public record PartialRelation(String name, int arity) implements PartialSymbol<T | |||
27 | } | 31 | } |
28 | 32 | ||
29 | @Override | 33 | @Override |
30 | public List<Sort> getSorts() { | 34 | public List<Parameter> getParameters() { |
31 | var sorts = new Sort[arity()]; | 35 | var parameters = new Parameter[arity]; |
32 | Arrays.fill(sorts, NodeSort.INSTANCE); | 36 | Arrays.fill(parameters, Parameter.NODE_OUT); |
33 | return List.of(sorts); | 37 | return List.of(parameters); |
34 | } | 38 | } |
35 | 39 | ||
36 | @Override | 40 | @Override |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialSymbol.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialSymbol.java index 1af11f2e..3a08bdd8 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialSymbol.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialSymbol.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.representation; | 6 | package tools.refinery.store.reasoning.representation; |
2 | 7 | ||
3 | import tools.refinery.store.representation.AbstractDomain; | 8 | import tools.refinery.store.representation.AbstractDomain; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RelationRefinementAction.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RelationRefinementAction.java index e8ed05a3..0beee248 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RelationRefinementAction.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RelationRefinementAction.java | |||
@@ -1,6 +1,11 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.rule; | 6 | package tools.refinery.store.reasoning.rule; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.Reasoning; | 8 | import tools.refinery.store.reasoning.ReasoningAdapter; |
4 | import tools.refinery.store.reasoning.representation.PartialRelation; | 9 | import tools.refinery.store.reasoning.representation.PartialRelation; |
5 | import tools.refinery.store.model.Model; | 10 | import tools.refinery.store.model.Model; |
6 | import tools.refinery.store.query.term.Variable; | 11 | import tools.refinery.store.query.term.Variable; |
@@ -23,7 +28,7 @@ public record RelationRefinementAction(PartialRelation target, List<Variable> ar | |||
23 | 28 | ||
24 | @Override | 29 | @Override |
25 | public RuleActionExecutor createExecutor(int[] argumentIndices, Model model) { | 30 | public RuleActionExecutor createExecutor(int[] argumentIndices, Model model) { |
26 | var targetInterpretation = model.getAdapter(Reasoning.ADAPTER).getPartialInterpretation(target); | 31 | var targetInterpretation = model.getAdapter(ReasoningAdapter.class).getPartialInterpretation(target); |
27 | return activationTuple -> { | 32 | return activationTuple -> { |
28 | int arity = argumentIndices.length; | 33 | int arity = argumentIndices.length; |
29 | var arguments = new int[arity]; | 34 | var arguments = new int[arity]; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/Rule.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/Rule.java index c7b16d47..45b0f02e 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/Rule.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/Rule.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.rule; | 6 | package tools.refinery.store.reasoning.rule; |
2 | 7 | ||
3 | import tools.refinery.store.model.Model; | 8 | import tools.refinery.store.model.Model; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleAction.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleAction.java index 4753b8bc..97ea7313 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleAction.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleAction.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.rule; | 6 | package tools.refinery.store.reasoning.rule; |
2 | 7 | ||
3 | import tools.refinery.store.model.Model; | 8 | import tools.refinery.store.model.Model; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java index 80bfa6f8..5d743869 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java | |||
@@ -1,9 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.rule; | 6 | package tools.refinery.store.reasoning.rule; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.MergeResult; | 8 | import tools.refinery.store.reasoning.MergeResult; |
4 | import tools.refinery.store.tuple.TupleLike; | 9 | import tools.refinery.store.tuple.Tuple; |
5 | 10 | ||
6 | @FunctionalInterface | 11 | @FunctionalInterface |
7 | public interface RuleActionExecutor { | 12 | public interface RuleActionExecutor { |
8 | MergeResult execute(TupleLike activationTuple); | 13 | MergeResult execute(Tuple activationTuple); |
9 | } | 14 | } |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java index 1e5322b4..32cf13ea 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java | |||
@@ -1,8 +1,13 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.rule; | 6 | package tools.refinery.store.reasoning.rule; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.MergeResult; | ||
4 | import tools.refinery.store.model.Model; | 8 | import tools.refinery.store.model.Model; |
5 | import tools.refinery.store.tuple.TupleLike; | 9 | import tools.refinery.store.reasoning.MergeResult; |
10 | import tools.refinery.store.tuple.Tuple; | ||
6 | 11 | ||
7 | import java.util.List; | 12 | import java.util.List; |
8 | 13 | ||
@@ -24,7 +29,8 @@ public final class RuleExecutor { | |||
24 | public Model getModel() { | 29 | public Model getModel() { |
25 | return model; | 30 | return model; |
26 | } | 31 | } |
27 | public MergeResult execute(TupleLike activationTuple) { | 32 | |
33 | public MergeResult execute(Tuple activationTuple) { | ||
28 | MergeResult mergeResult = MergeResult.UNCHANGED; | 34 | MergeResult mergeResult = MergeResult.UNCHANGED; |
29 | for (var actionExecutor : actionExecutors) { | 35 | for (var actionExecutor : actionExecutors) { |
30 | mergeResult = mergeResult.andAlso(actionExecutor.execute(activationTuple)); | 36 | mergeResult = mergeResult.andAlso(actionExecutor.execute(activationTuple)); |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/Seed.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/Seed.java index 90633495..08079f12 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/Seed.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/Seed.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.seed; | 6 | package tools.refinery.store.reasoning.seed; |
2 | 7 | ||
3 | import tools.refinery.store.map.Cursor; | 8 | import tools.refinery.store.map.Cursor; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/UniformSeed.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/UniformSeed.java index a030f6ea..451d1513 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/UniformSeed.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/UniformSeed.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.seed; | 6 | package tools.refinery.store.reasoning.seed; |
2 | 7 | ||
3 | import tools.refinery.store.map.Cursor; | 8 | import tools.refinery.store.map.Cursor; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/Advice.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/Advice.java index 5cdfedf7..d6a9e02c 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/Advice.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/Advice.java | |||
@@ -1,10 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator; | 6 | package tools.refinery.store.reasoning.translator; |
2 | 7 | ||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
3 | import tools.refinery.store.reasoning.representation.AnyPartialSymbol; | 9 | import tools.refinery.store.reasoning.representation.AnyPartialSymbol; |
4 | import tools.refinery.store.reasoning.representation.PartialRelation; | 10 | import tools.refinery.store.reasoning.representation.PartialRelation; |
5 | import tools.refinery.store.query.term.Variable; | 11 | import tools.refinery.store.query.term.Variable; |
6 | import tools.refinery.store.query.literal.Literal; | 12 | import tools.refinery.store.query.literal.Literal; |
7 | import tools.refinery.store.query.substitution.Substitutions; | ||
8 | 13 | ||
9 | import java.util.*; | 14 | import java.util.*; |
10 | 15 | ||
@@ -61,14 +66,9 @@ public final class Advice { | |||
61 | public List<Literal> substitute(List<Variable> substituteParameters) { | 66 | public List<Literal> substitute(List<Variable> substituteParameters) { |
62 | checkArity(substituteParameters); | 67 | checkArity(substituteParameters); |
63 | markProcessed(); | 68 | markProcessed(); |
64 | int arity = parameters.size(); | ||
65 | var variableMap = new HashMap<Variable, Variable>(arity); | ||
66 | for (int i = 0; i < arity; i++) { | ||
67 | variableMap.put(parameters.get(i), substituteParameters.get(i)); | ||
68 | } | ||
69 | // Use a renewing substitution to remove any non-parameter variables and avoid clashed between variables | 69 | // Use a renewing substitution to remove any non-parameter variables and avoid clashed between variables |
70 | // coming from different advice in the same clause. | 70 | // coming from different advice in the same clause. |
71 | var substitution = Substitutions.renewing(variableMap); | 71 | var substitution = Substitution.builder().putManyChecked(parameters, substituteParameters).renewing().build(); |
72 | return literals.stream().map(literal -> literal.substitute(substitution)).toList(); | 72 | return literals.stream().map(literal -> literal.substitute(substitution)).toList(); |
73 | } | 73 | } |
74 | 74 | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/AdviceSlot.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/AdviceSlot.java index f3bd9c5e..bab20340 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/AdviceSlot.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/AdviceSlot.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator; | 6 | package tools.refinery.store.reasoning.translator; |
2 | 7 | ||
3 | import tools.refinery.store.representation.TruthValue; | 8 | import tools.refinery.store.representation.TruthValue; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslatedRelation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslatedRelation.java index 9bab80c9..4a5a8843 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslatedRelation.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslatedRelation.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator; | 6 | package tools.refinery.store.reasoning.translator; |
2 | 7 | ||
3 | import tools.refinery.store.model.Model; | 8 | import tools.refinery.store.model.Model; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslationUnit.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslationUnit.java index 24b93911..6e44a7d7 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslationUnit.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslationUnit.java | |||
@@ -1,7 +1,11 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator; | 6 | package tools.refinery.store.reasoning.translator; |
2 | 7 | ||
3 | import tools.refinery.store.model.Model; | 8 | import tools.refinery.store.model.Model; |
4 | import tools.refinery.store.model.ModelStoreBuilder; | ||
5 | import tools.refinery.store.reasoning.ReasoningBuilder; | 9 | import tools.refinery.store.reasoning.ReasoningBuilder; |
6 | 10 | ||
7 | import java.util.Collection; | 11 | import java.util.Collection; |
@@ -18,10 +22,6 @@ public abstract class TranslationUnit { | |||
18 | configureReasoningBuilder(); | 22 | configureReasoningBuilder(); |
19 | } | 23 | } |
20 | 24 | ||
21 | protected ModelStoreBuilder getModelStoreBuilder() { | ||
22 | return reasoningBuilder.getStoreBuilder(); | ||
23 | } | ||
24 | |||
25 | protected void configureReasoningBuilder() { | 25 | protected void configureReasoningBuilder() { |
26 | // Nothing to configure by default. | 26 | // Nothing to configure by default. |
27 | } | 27 | } |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionInterpretation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionInterpretation.java index b703f142..e7b67ae4 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionInterpretation.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionInterpretation.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.base; | 6 | package tools.refinery.store.reasoning.translator.base; |
2 | 7 | ||
3 | import tools.refinery.store.map.Cursor; | 8 | import tools.refinery.store.map.Cursor; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionTranslationUnit.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionTranslationUnit.java index 36e2782a..a1e4b816 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionTranslationUnit.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionTranslationUnit.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.base; | 6 | package tools.refinery.store.reasoning.translator.base; |
2 | 7 | ||
3 | import tools.refinery.store.model.Model; | 8 | import tools.refinery.store.model.Model; |
@@ -24,7 +29,7 @@ public class BaseDecisionTranslationUnit extends TranslationUnit { | |||
24 | } | 29 | } |
25 | this.partialRelation = partialRelation; | 30 | this.partialRelation = partialRelation; |
26 | this.seed = seed; | 31 | this.seed = seed; |
27 | symbol = new Symbol<>(partialRelation.name(), partialRelation.arity(), TruthValue.class, TruthValue.UNKNOWN); | 32 | symbol = Symbol.of(partialRelation.name(), partialRelation.arity(), TruthValue.class, TruthValue.UNKNOWN); |
28 | } | 33 | } |
29 | 34 | ||
30 | public BaseDecisionTranslationUnit(PartialRelation partialRelation) { | 35 | public BaseDecisionTranslationUnit(PartialRelation partialRelation) { |
@@ -32,11 +37,6 @@ public class BaseDecisionTranslationUnit extends TranslationUnit { | |||
32 | } | 37 | } |
33 | 38 | ||
34 | @Override | 39 | @Override |
35 | protected void configureReasoningBuilder() { | ||
36 | getModelStoreBuilder().symbol(symbol); | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public Collection<TranslatedRelation> getTranslatedRelations() { | 40 | public Collection<TranslatedRelation> getTranslatedRelations() { |
41 | return List.of(new TranslatedBaseDecision(getReasoningBuilder(), partialRelation, symbol)); | 41 | return List.of(new TranslatedBaseDecision(getReasoningBuilder(), partialRelation, symbol)); |
42 | } | 42 | } |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/TranslatedBaseDecision.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/TranslatedBaseDecision.java index 2294b4fd..4782eb46 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/TranslatedBaseDecision.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/TranslatedBaseDecision.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.base; | 6 | package tools.refinery.store.reasoning.translator.base; |
2 | 7 | ||
3 | import tools.refinery.store.model.Model; | 8 | import tools.refinery.store.model.Model; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/EliminatedType.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/EliminatedType.java index 1b8d7cc9..6e4728db 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/EliminatedType.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/EliminatedType.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.typehierarchy; | 6 | package tools.refinery.store.reasoning.translator.typehierarchy; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.representation.PartialRelation; | 8 | import tools.refinery.store.reasoning.representation.PartialRelation; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/ExtendedTypeInfo.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/ExtendedTypeInfo.java index 43b8e1dd..7a917dcf 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/ExtendedTypeInfo.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/ExtendedTypeInfo.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.typehierarchy; | 6 | package tools.refinery.store.reasoning.translator.typehierarchy; |
2 | 7 | ||
3 | import org.jetbrains.annotations.NotNull; | 8 | import org.jetbrains.annotations.NotNull; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMayTypeRelationView.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMayTypeView.java index 12c37c86..ce2d6ff3 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMayTypeRelationView.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMayTypeView.java | |||
@@ -1,13 +1,18 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.typehierarchy; | 6 | package tools.refinery.store.reasoning.translator.typehierarchy; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.representation.PartialRelation; | 8 | import tools.refinery.store.reasoning.representation.PartialRelation; |
4 | import tools.refinery.store.query.view.TuplePreservingRelationView; | 9 | import tools.refinery.store.query.view.TuplePreservingView; |
5 | import tools.refinery.store.tuple.Tuple; | 10 | import tools.refinery.store.tuple.Tuple; |
6 | 11 | ||
7 | class InferredMayTypeRelationView extends TuplePreservingRelationView<InferredType> { | 12 | class InferredMayTypeView extends TuplePreservingView<InferredType> { |
8 | private final PartialRelation type; | 13 | private final PartialRelation type; |
9 | 14 | ||
10 | InferredMayTypeRelationView(PartialRelation type) { | 15 | InferredMayTypeView(PartialRelation type) { |
11 | super(TypeHierarchyTranslationUnit.INFERRED_TYPE_SYMBOL, "%s#may".formatted(type)); | 16 | super(TypeHierarchyTranslationUnit.INFERRED_TYPE_SYMBOL, "%s#may".formatted(type)); |
12 | this.type = type; | 17 | this.type = type; |
13 | } | 18 | } |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMustTypeRelationView.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMustTypeView.java index 975f627e..beda1796 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMustTypeRelationView.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMustTypeView.java | |||
@@ -1,13 +1,18 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.typehierarchy; | 6 | package tools.refinery.store.reasoning.translator.typehierarchy; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.representation.PartialRelation; | 8 | import tools.refinery.store.reasoning.representation.PartialRelation; |
4 | import tools.refinery.store.query.view.TuplePreservingRelationView; | 9 | import tools.refinery.store.query.view.TuplePreservingView; |
5 | import tools.refinery.store.tuple.Tuple; | 10 | import tools.refinery.store.tuple.Tuple; |
6 | 11 | ||
7 | class InferredMustTypeRelationView extends TuplePreservingRelationView<InferredType> { | 12 | class InferredMustTypeView extends TuplePreservingView<InferredType> { |
8 | private final PartialRelation type; | 13 | private final PartialRelation type; |
9 | 14 | ||
10 | InferredMustTypeRelationView(PartialRelation type) { | 15 | InferredMustTypeView(PartialRelation type) { |
11 | super(TypeHierarchyTranslationUnit.INFERRED_TYPE_SYMBOL, "%s#must".formatted(type)); | 16 | super(TypeHierarchyTranslationUnit.INFERRED_TYPE_SYMBOL, "%s#must".formatted(type)); |
12 | this.type = type; | 17 | this.type = type; |
13 | } | 18 | } |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredType.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredType.java index a366e262..fd05158b 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredType.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredType.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.typehierarchy; | 6 | package tools.refinery.store.reasoning.translator.typehierarchy; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.representation.PartialRelation; | 8 | import tools.refinery.store.reasoning.representation.PartialRelation; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/PreservedType.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/PreservedType.java index 63dba964..0696f4c3 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/PreservedType.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/PreservedType.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.typehierarchy; | 6 | package tools.refinery.store.reasoning.translator.typehierarchy; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.representation.PartialRelation; | 8 | import tools.refinery.store.reasoning.representation.PartialRelation; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisResult.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisResult.java index 4f915108..fbf8a7c9 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisResult.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisResult.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.typehierarchy; | 6 | package tools.refinery.store.reasoning.translator.typehierarchy; |
2 | 7 | ||
3 | sealed interface TypeAnalysisResult permits EliminatedType, PreservedType { | 8 | sealed interface TypeAnalysisResult permits EliminatedType, PreservedType { |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzer.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzer.java index 62f8e750..e97ce954 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzer.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzer.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.typehierarchy; | 6 | package tools.refinery.store.reasoning.translator.typehierarchy; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.representation.PartialRelation; | 8 | import tools.refinery.store.reasoning.representation.PartialRelation; |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslationUnit.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslationUnit.java index 4b0761f2..06e3c05f 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslationUnit.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslationUnit.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.typehierarchy; | 6 | package tools.refinery.store.reasoning.translator.typehierarchy; |
2 | 7 | ||
3 | import tools.refinery.store.model.Model; | 8 | import tools.refinery.store.model.Model; |
@@ -11,8 +16,8 @@ import java.util.List; | |||
11 | import java.util.Map; | 16 | import java.util.Map; |
12 | 17 | ||
13 | public class TypeHierarchyTranslationUnit extends TranslationUnit { | 18 | public class TypeHierarchyTranslationUnit extends TranslationUnit { |
14 | static final Symbol<InferredType> INFERRED_TYPE_SYMBOL = new Symbol<>("inferredType", 1, | 19 | static final Symbol<InferredType> INFERRED_TYPE_SYMBOL = Symbol.of( |
15 | InferredType.class, InferredType.UNTYPED); | 20 | "inferredType", 1, InferredType.class, InferredType.UNTYPED); |
16 | 21 | ||
17 | private final TypeAnalyzer typeAnalyzer; | 22 | private final TypeAnalyzer typeAnalyzer; |
18 | 23 | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeInfo.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeInfo.java index 313df4df..9f897e46 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeInfo.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeInfo.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.reasoning.translator.typehierarchy; | 6 | package tools.refinery.store.reasoning.translator.typehierarchy; |
2 | 7 | ||
3 | import tools.refinery.store.reasoning.representation.PartialRelation; | 8 | import tools.refinery.store.reasoning.representation.PartialRelation; |