Skip to content

Commit 333a3f6

Browse files
authored
Merge pull request #464 from sosy-lab/empty-sum-z3
Fix empty sums in Z3
2 parents 5900232 + 9d18f01 commit 333a3f6

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/org/sosy_lab/java_smt/solvers/z3/Z3NumeralFormulaManager.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,11 @@ protected Long add(Long pNumber1, Long pNumber2) {
7272

7373
@Override
7474
protected Long sumImpl(List<Long> operands) {
75-
return Native.mkAdd(z3context, operands.size(), Longs.toArray(operands));
75+
if (operands.isEmpty()) {
76+
return makeNumberImpl(0);
77+
} else {
78+
return Native.mkAdd(z3context, operands.size(), Longs.toArray(operands));
79+
}
7680
}
7781

7882
@Override

src/org/sosy_lab/java_smt/test/NumeralFormulaManagerTest.java

+10
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,16 @@ public void distinctTest3() throws SolverException, InterruptedException {
6969
assertThatFormula(bmgr.and(imgr.distinct(symbols), bmgr.and(constraints))).isUnsatisfiable();
7070
}
7171

72+
@Test
73+
public void trivialSumTest() throws SolverException, InterruptedException {
74+
requireIntegers();
75+
assertThatFormula(imgr.equal(imgr.sum(ImmutableList.of()), imgr.makeNumber(0)))
76+
.isTautological();
77+
assertThatFormula(
78+
imgr.equal(imgr.sum(ImmutableList.of(imgr.makeVariable("a"))), imgr.makeVariable("a")))
79+
.isTautological();
80+
}
81+
7282
@SuppressWarnings("CheckReturnValue")
7383
@Test
7484
public void failOnInvalidStringInteger() {

0 commit comments

Comments
 (0)