Skip to content

Commit d344e3a

Browse files
committed
simplify API inheritance by using default methods.
1 parent d4f7227 commit d344e3a

11 files changed

+23
-127
lines changed

src/org/sosy_lab/java_smt/api/BitvectorFormulaManager.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,4 +413,8 @@ default BitvectorFormula extract(BitvectorFormula number, int msb, int lsb, bool
413413

414414
/** All given bitvectors are pairwise unequal. */
415415
BooleanFormula distinct(List<BitvectorFormula> pBits);
416+
417+
default BooleanFormula distinct(BitvectorFormula... pBits) {
418+
return distinct(List.of(pBits));
419+
}
416420
}

src/org/sosy_lab/java_smt/api/BooleanFormulaManager.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import com.google.errorprone.annotations.CanIgnoreReturnValue;
1212
import java.util.Collection;
13+
import java.util.List;
1314
import java.util.Set;
1415
import java.util.stream.Collector;
1516
import org.sosy_lab.java_smt.api.visitors.BooleanFormulaTransformationVisitor;
@@ -111,7 +112,9 @@ default BooleanFormula makeBoolean(boolean value) {
111112
/**
112113
* @see #and(BooleanFormula, BooleanFormula)
113114
*/
114-
BooleanFormula and(BooleanFormula... bits);
115+
default BooleanFormula and(BooleanFormula... bits) {
116+
return and(List.of(bits));
117+
}
115118

116119
/** Return a stream {@link Collector} that creates a conjunction of all elements in the stream. */
117120
Collector<BooleanFormula, ?, BooleanFormula> toConjunction();
@@ -133,7 +136,9 @@ default BooleanFormula makeBoolean(boolean value) {
133136
/**
134137
* @see #or(BooleanFormula, BooleanFormula)
135138
*/
136-
BooleanFormula or(BooleanFormula... bits);
139+
default BooleanFormula or(BooleanFormula... bits) {
140+
return or(List.of(bits));
141+
}
137142

138143
/** Return a stream {@link Collector} that creates a disjunction of all elements in the stream. */
139144
Collector<BooleanFormula, ?, BooleanFormula> toDisjunction();

src/org/sosy_lab/java_smt/api/UFManager.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// an API wrapper for a collection of SMT solvers:
33
// https://github.com/sosy-lab/java-smt
44
//
5-
// SPDX-FileCopyrightText: 2020 Dirk Beyer <https://www.sosy-lab.org>
5+
// SPDX-FileCopyrightText: 2025 Dirk Beyer <https://www.sosy-lab.org>
66
//
77
// SPDX-License-Identifier: Apache-2.0
88

@@ -18,8 +18,10 @@ <T extends Formula> FunctionDeclaration<T> declareUF(
1818
String name, FormulaType<T> returnType, List<FormulaType<?>> args);
1919

2020
/** Declare an uninterpreted function. */
21-
<T extends Formula> FunctionDeclaration<T> declareUF(
22-
String name, FormulaType<T> returnType, FormulaType<?>... args);
21+
default <T extends Formula> FunctionDeclaration<T> declareUF(
22+
String name, FormulaType<T> returnType, FormulaType<?>... args) {
23+
return declareUF(name, returnType, List.of(args));
24+
}
2325

2426
/**
2527
* Create an uninterpreted function call.
@@ -35,7 +37,9 @@ <T extends Formula> FunctionDeclaration<T> declareUF(
3537
/**
3638
* @see #callUF(FunctionDeclaration, List)
3739
*/
38-
<T extends Formula> T callUF(FunctionDeclaration<T> funcType, Formula... args);
40+
default <T extends Formula> T callUF(FunctionDeclaration<T> funcType, Formula... args) {
41+
return callUF(funcType, List.of(args));
42+
}
3943

4044
/**
4145
* Declares and calls an uninterpreted function with exactly the given name.
@@ -52,5 +56,8 @@ <T extends Formula> T declareAndCallUF(
5256
/**
5357
* @see #declareAndCallUF(String, FormulaType, List)
5458
*/
55-
<T extends Formula> T declareAndCallUF(String name, FormulaType<T> pReturnType, Formula... pArgs);
59+
default <T extends Formula> T declareAndCallUF(
60+
String name, FormulaType<T> pReturnType, Formula... pArgs) {
61+
return declareAndCallUF(name, pReturnType, List.of(pArgs));
62+
}
5663
}

src/org/sosy_lab/java_smt/basicimpl/AbstractBooleanFormulaManager.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import com.google.common.collect.ImmutableSet;
1818
import com.google.common.collect.Iterables;
1919
import java.util.ArrayDeque;
20-
import java.util.Arrays;
2120
import java.util.Collection;
2221
import java.util.Deque;
2322
import java.util.HashMap;
@@ -117,11 +116,6 @@ public BooleanFormula and(Collection<BooleanFormula> pBits) {
117116
}
118117
}
119118

120-
@Override
121-
public BooleanFormula and(BooleanFormula... pBits) {
122-
return and(Arrays.asList(pBits));
123-
}
124-
125119
/**
126120
* Create an n-ary conjunction. The default implementation delegates to {@link #and(Object,
127121
* Object)} and assumes that all simplifications are done by that method. This method can be
@@ -154,11 +148,6 @@ public BooleanFormula or(BooleanFormula pBits1, BooleanFormula pBits2) {
154148
return wrap(or(param1, param2));
155149
}
156150

157-
@Override
158-
public BooleanFormula or(BooleanFormula... pBits) {
159-
return or(Arrays.asList(pBits));
160-
}
161-
162151
protected abstract TFormulaInfo or(TFormulaInfo pParam1, TFormulaInfo pParam2);
163152

164153
@Override

src/org/sosy_lab/java_smt/basicimpl/AbstractUFManager.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,6 @@ public final <T extends Formula> FunctionDeclaration<T> declareUF(
4949
formulaCreator.declareUFImpl(pName, toSolverType(pReturnType), argTypes));
5050
}
5151

52-
@Override
53-
public <T extends Formula> FunctionDeclaration<T> declareUF(
54-
String pName, FormulaType<T> pReturnType, FormulaType<?>... pArgs) {
55-
checkVariableName(pName);
56-
return declareUF(pName, pReturnType, Arrays.asList(pArgs));
57-
}
58-
59-
@Override
60-
public <T extends Formula> T callUF(FunctionDeclaration<T> funcType, Formula... args) {
61-
return formulaCreator.callFunction(funcType, Arrays.asList(args));
62-
}
63-
6452
@Override
6553
public final <T extends Formula> T callUF(
6654
FunctionDeclaration<T> pFunc, List<? extends Formula> pArgs) {

src/org/sosy_lab/java_smt/delegate/debugging/DebuggingBooleanFormulaManager.java

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -129,17 +129,6 @@ public BooleanFormula and(Collection<BooleanFormula> bits) {
129129
return result;
130130
}
131131

132-
@Override
133-
public BooleanFormula and(BooleanFormula... bits) {
134-
debugging.assertThreadLocal();
135-
for (BooleanFormula f : bits) {
136-
debugging.assertFormulaInContext(f);
137-
}
138-
BooleanFormula result = delegate.and(bits);
139-
debugging.addFormulaTerm(result);
140-
return result;
141-
}
142-
143132
@Override
144133
public Collector<BooleanFormula, ?, BooleanFormula> toConjunction() {
145134
return Collectors.collectingAndThen(
@@ -175,17 +164,6 @@ public BooleanFormula or(Collection<BooleanFormula> bits) {
175164
return result;
176165
}
177166

178-
@Override
179-
public BooleanFormula or(BooleanFormula... bits) {
180-
debugging.assertThreadLocal();
181-
for (BooleanFormula f : bits) {
182-
debugging.assertFormulaInContext(f);
183-
}
184-
BooleanFormula result = delegate.or(bits);
185-
debugging.addFormulaTerm(result);
186-
return result;
187-
}
188-
189167
@Override
190168
public Collector<BooleanFormula, ?, BooleanFormula> toDisjunction() {
191169
return Collectors.collectingAndThen(

src/org/sosy_lab/java_smt/delegate/debugging/DebuggingUFManager.java

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,6 @@ public <T extends Formula> FunctionDeclaration<T> declareUF(
3434
return result;
3535
}
3636

37-
@Override
38-
public <T extends Formula> FunctionDeclaration<T> declareUF(
39-
String name, FormulaType<T> returnType, FormulaType<?>... args) {
40-
debugging.assertThreadLocal();
41-
FunctionDeclaration<T> result = delegate.declareUF(name, returnType, args);
42-
debugging.addFunctionDeclaration(result);
43-
return result;
44-
}
45-
4637
@Override
4738
public <T extends Formula> T callUF(
4839
FunctionDeclaration<T> funcType, List<? extends Formula> args) {
@@ -56,18 +47,6 @@ public <T extends Formula> T callUF(
5647
return result;
5748
}
5849

59-
@Override
60-
public <T extends Formula> T callUF(FunctionDeclaration<T> funcType, Formula... args) {
61-
debugging.assertThreadLocal();
62-
debugging.assertDeclarationInContext(funcType);
63-
for (Formula t : args) {
64-
debugging.assertFormulaInContext(t);
65-
}
66-
T result = delegate.callUF(funcType, args);
67-
debugging.addFormulaTerm(result);
68-
return result;
69-
}
70-
7150
@Override
7251
public <T extends Formula> T declareAndCallUF(
7352
String name, FormulaType<T> pReturnType, List<Formula> pArgs) {

src/org/sosy_lab/java_smt/delegate/statistics/StatisticsBooleanFormulaManager.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,6 @@ public BooleanFormula and(Collection<BooleanFormula> pBits) {
9797
return delegate.and(pBits);
9898
}
9999

100-
@Override
101-
public BooleanFormula and(BooleanFormula... pBits) {
102-
stats.booleanOperations.getAndIncrement();
103-
return delegate.and(pBits);
104-
}
105-
106100
@Override
107101
public Collector<BooleanFormula, ?, BooleanFormula> toConjunction() {
108102
return Collectors.collectingAndThen(Collectors.toList(), this::and);
@@ -120,12 +114,6 @@ public BooleanFormula or(Collection<BooleanFormula> pBits) {
120114
return delegate.or(pBits);
121115
}
122116

123-
@Override
124-
public BooleanFormula or(BooleanFormula... pBits) {
125-
stats.booleanOperations.getAndIncrement();
126-
return delegate.or(pBits);
127-
}
128-
129117
@Override
130118
public Collector<BooleanFormula, ?, BooleanFormula> toDisjunction() {
131119
return Collectors.collectingAndThen(Collectors.toList(), this::or);

src/org/sosy_lab/java_smt/delegate/statistics/StatisticsUFManager.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,13 @@ public <T extends Formula> FunctionDeclaration<T> declareUF(
3333
return delegate.declareUF(pName, pReturnType, pArgs);
3434
}
3535

36-
@Override
37-
public <T extends Formula> FunctionDeclaration<T> declareUF(
38-
String pName, FormulaType<T> pReturnType, FormulaType<?>... pArgs) {
39-
stats.ufOperations.getAndIncrement();
40-
return delegate.declareUF(pName, pReturnType, pArgs);
41-
}
42-
4336
@Override
4437
public <T extends Formula> T callUF(
4538
FunctionDeclaration<T> pFuncType, List<? extends Formula> pArgs) {
4639
stats.ufOperations.getAndIncrement();
4740
return delegate.callUF(pFuncType, pArgs);
4841
}
4942

50-
@Override
51-
public <T extends Formula> T callUF(FunctionDeclaration<T> pFuncType, Formula... pArgs) {
52-
stats.ufOperations.getAndIncrement();
53-
return delegate.callUF(pFuncType, pArgs);
54-
}
55-
5643
@Override
5744
public <T extends Formula> T declareAndCallUF(
5845
String pName, FormulaType<T> pReturnType, List<Formula> pArgs) {

src/org/sosy_lab/java_smt/delegate/synchronize/SynchronizedBooleanFormulaManager.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,6 @@ public BooleanFormula and(Collection<BooleanFormula> pBits) {
116116
}
117117
}
118118

119-
@Override
120-
public BooleanFormula and(BooleanFormula... pBits) {
121-
synchronized (sync) {
122-
return delegate.and(pBits);
123-
}
124-
}
125-
126119
@Override
127120
public Collector<BooleanFormula, ?, BooleanFormula> toConjunction() {
128121
return Collectors.collectingAndThen(Collectors.toList(), this::and);
@@ -142,13 +135,6 @@ public BooleanFormula or(Collection<BooleanFormula> pBits) {
142135
}
143136
}
144137

145-
@Override
146-
public BooleanFormula or(BooleanFormula... pBits) {
147-
synchronized (sync) {
148-
return delegate.or(pBits);
149-
}
150-
}
151-
152138
@Override
153139
public Collector<BooleanFormula, ?, BooleanFormula> toDisjunction() {
154140
return Collectors.collectingAndThen(Collectors.toList(), this::or);

0 commit comments

Comments
 (0)