aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/logic/src/main/java/tools/refinery/logic/term/int_/IntTerms.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/logic/src/main/java/tools/refinery/logic/term/int_/IntTerms.java')
-rw-r--r--subprojects/logic/src/main/java/tools/refinery/logic/term/int_/IntTerms.java95
1 files changed, 95 insertions, 0 deletions
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/int_/IntTerms.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/int_/IntTerms.java
new file mode 100644
index 00000000..b152a138
--- /dev/null
+++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/int_/IntTerms.java
@@ -0,0 +1,95 @@
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.int_;
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.*;
13import tools.refinery.logic.term.comparable.*;
14
15import java.util.Comparator;
16
17public final class IntTerms {
18 public static final Aggregator<Integer, Integer> INT_SUM = IntSumAggregator.INSTANCE;
19 public static final Aggregator<Integer, Integer> INT_MIN = new ExtremeValueAggregator<>(Integer.class,
20 Integer.MAX_VALUE);
21 public static final Aggregator<Integer, Integer> INT_MAX = new ExtremeValueAggregator<>(Integer.class,
22 Integer.MIN_VALUE, Comparator.reverseOrder());
23
24 private IntTerms() {
25 throw new IllegalArgumentException("This is a static utility class and should not be instantiated directly");
26 }
27
28 public static Term<Integer> constant(Integer value) {
29 return new ConstantTerm<>(Integer.class, value);
30 }
31
32 public static Term<Integer> plus(Term<Integer> body) {
33 return new IntPlusTerm(body);
34 }
35
36 public static Term<Integer> minus(Term<Integer> body) {
37 return new IntMinusTerm(body);
38 }
39
40 public static Term<Integer> add(Term<Integer> left, Term<Integer> right) {
41 return new IntAddTerm(left, right);
42 }
43
44 public static Term<Integer> sub(Term<Integer> left, Term<Integer> right) {
45 return new IntSubTerm(left, right);
46 }
47
48 public static Term<Integer> mul(Term<Integer> left, Term<Integer> right) {
49 return new IntMulTerm(left, right);
50 }
51
52 public static Term<Integer> div(Term<Integer> left, Term<Integer> right) {
53 return new IntDivTerm(left, right);
54 }
55
56 public static Term<Integer> pow(Term<Integer> left, Term<Integer> right) {
57 return new IntPowTerm(left, right);
58 }
59
60 public static Term<Integer> min(Term<Integer> left, Term<Integer> right) {
61 return new IntMinTerm(left, right);
62 }
63
64 public static Term<Integer> max(Term<Integer> left, Term<Integer> right) {
65 return new IntMaxTerm(left, right);
66 }
67
68 public static Term<Boolean> eq(Term<Integer> left, Term<Integer> right) {
69 return new EqTerm<>(Integer.class, left, right);
70 }
71
72 public static Term<Boolean> notEq(Term<Integer> left, Term<Integer> right) {
73 return new NotEqTerm<>(Integer.class, left, right);
74 }
75
76 public static Term<Boolean> less(Term<Integer> left, Term<Integer> right) {
77 return new LessTerm<>(Integer.class, left, right);
78 }
79
80 public static Term<Boolean> lessEq(Term<Integer> left, Term<Integer> right) {
81 return new LessEqTerm<>(Integer.class, left, right);
82 }
83
84 public static Term<Boolean> greater(Term<Integer> left, Term<Integer> right) {
85 return new GreaterTerm<>(Integer.class, left, right);
86 }
87
88 public static Term<Boolean> greaterEq(Term<Integer> left, Term<Integer> right) {
89 return new GreaterEqTerm<>(Integer.class, left, right);
90 }
91
92 public static Term<Integer> asInt(Term<Double> body) {
93 return new RealToIntTerm(body);
94 }
95}