aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UpperCardinalityTerms.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UpperCardinalityTerms.java')
-rw-r--r--subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UpperCardinalityTerms.java71
1 files changed, 71 insertions, 0 deletions
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UpperCardinalityTerms.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UpperCardinalityTerms.java
new file mode 100644
index 00000000..7ec61cac
--- /dev/null
+++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UpperCardinalityTerms.java
@@ -0,0 +1,71 @@
1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6package tools.refinery.logic.term.uppercardinality;
7
8import tools.refinery.logic.term.Aggregator;
9import tools.refinery.logic.term.ConstantTerm;
10import tools.refinery.logic.term.ExtremeValueAggregator;
11import tools.refinery.logic.term.Term;
12import tools.refinery.logic.term.comparable.*;
13
14import java.util.Comparator;
15
16public final class UpperCardinalityTerms {
17 public static final Aggregator<UpperCardinality, UpperCardinality> UPPER_CARDINALITY_SUM =
18 UpperCardinalitySumAggregator.INSTANCE;
19 public static final Aggregator<UpperCardinality, UpperCardinality> UPPER_CARDINALITY_MIN =
20 new ExtremeValueAggregator<>(UpperCardinality.class, UpperCardinalities.UNBOUNDED);
21 public static final Aggregator<UpperCardinality, UpperCardinality> UPPER_CARDINALITY_MAX =
22 new ExtremeValueAggregator<>(UpperCardinality.class, UpperCardinalities.ZERO, Comparator.reverseOrder());
23
24 private UpperCardinalityTerms() {
25 throw new IllegalStateException("This is a static utility class and should not be instantiated directly");
26 }
27
28 public static Term<UpperCardinality> constant(UpperCardinality value) {
29 return new ConstantTerm<>(UpperCardinality.class, value);
30 }
31
32 public static Term<UpperCardinality> add(Term<UpperCardinality> left, Term<UpperCardinality> right) {
33 return new UpperCardinalityAddTerm(left, right);
34 }
35
36 public static Term<UpperCardinality> mul(Term<UpperCardinality> left, Term<UpperCardinality> right) {
37 return new UpperCardinalityMulTerm(left, right);
38 }
39
40 public static Term<UpperCardinality> min(Term<UpperCardinality> left, Term<UpperCardinality> right) {
41 return new UpperCardinalityMinTerm(left, right);
42 }
43
44 public static Term<UpperCardinality> max(Term<UpperCardinality> left, Term<UpperCardinality> right) {
45 return new UpperCardinalityMaxTerm(left, right);
46 }
47
48 public static Term<Boolean> eq(Term<UpperCardinality> left, Term<UpperCardinality> right) {
49 return new EqTerm<>(UpperCardinality.class, left, right);
50 }
51
52 public static Term<Boolean> notEq(Term<UpperCardinality> left, Term<UpperCardinality> right) {
53 return new NotEqTerm<>(UpperCardinality.class, left, right);
54 }
55
56 public static Term<Boolean> less(Term<UpperCardinality> left, Term<UpperCardinality> right) {
57 return new LessTerm<>(UpperCardinality.class, left, right);
58 }
59
60 public static Term<Boolean> lessEq(Term<UpperCardinality> left, Term<UpperCardinality> right) {
61 return new LessEqTerm<>(UpperCardinality.class, left, right);
62 }
63
64 public static Term<Boolean> greater(Term<UpperCardinality> left, Term<UpperCardinality> right) {
65 return new GreaterTerm<>(UpperCardinality.class, left, right);
66 }
67
68 public static Term<Boolean> greaterEq(Term<UpperCardinality> left, Term<UpperCardinality> right) {
69 return new GreaterEqTerm<>(UpperCardinality.class, left, right);
70 }
71}