Skip to content

Commit abfb233

Browse files
committed
Merge branch 'trivial-distinct' into 'master'
2 parents 333a3f6 + 8ea9556 commit abfb233

5 files changed

+30
-7
lines changed

src/org/sosy_lab/java_smt/solvers/cvc4/CVC4NumeralFormulaManager.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,12 @@ protected Expr lessOrEquals(Expr pParam1, Expr pParam2) {
178178

179179
@Override
180180
protected Expr distinctImpl(List<Expr> pParam) {
181-
vectorExpr param = new vectorExpr();
182-
pParam.forEach(param::add);
183-
return exprManager.mkExpr(Kind.DISTINCT, param);
181+
if (pParam.size() < 2) {
182+
return exprManager.mkConst(true);
183+
} else {
184+
vectorExpr param = new vectorExpr();
185+
pParam.forEach(param::add);
186+
return exprManager.mkExpr(Kind.DISTINCT, param);
187+
}
184188
}
185189
}

src/org/sosy_lab/java_smt/solvers/cvc5/CVC5NumeralFormulaManager.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,10 @@ protected Term lessOrEquals(Term pParam1, Term pParam2) {
188188

189189
@Override
190190
protected Term distinctImpl(List<Term> pParam) {
191-
return solver.mkTerm(Kind.DISTINCT, pParam.toArray(new Term[0]));
191+
if (pParam.size() < 2) {
192+
return solver.mkTrue();
193+
} else {
194+
return solver.mkTerm(Kind.DISTINCT, pParam.toArray(new Term[0]));
195+
}
192196
}
193197
}

src/org/sosy_lab/java_smt/solvers/smtinterpol/SmtInterpolNumeralFormulaManager.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,11 @@ public Term equal(Term pNumber1, Term pNumber2) {
148148

149149
@Override
150150
public Term distinctImpl(List<Term> pNumbers) {
151-
return env.term("distinct", pNumbers.toArray(new Term[0]));
151+
if (pNumbers.size() < 2) {
152+
return env.getTheory().mTrue;
153+
} else {
154+
return env.term("distinct", pNumbers.toArray(new Term[0]));
155+
}
152156
}
153157

154158
@Override

src/org/sosy_lab/java_smt/solvers/yices2/Yices2NumeralFormulaManager.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import static org.sosy_lab.java_smt.solvers.yices2.Yices2NativeApi.yices_parse_rational;
2525
import static org.sosy_lab.java_smt.solvers.yices2.Yices2NativeApi.yices_sub;
2626
import static org.sosy_lab.java_smt.solvers.yices2.Yices2NativeApi.yices_term_constructor;
27+
import static org.sosy_lab.java_smt.solvers.yices2.Yices2NativeApi.yices_true;
2728

2829
import com.google.common.primitives.Ints;
2930
import java.math.BigInteger;
@@ -104,8 +105,11 @@ public Integer equal(Integer pParam1, Integer pParam2) {
104105

105106
@Override
106107
public Integer distinctImpl(List<Integer> pNumbers) {
107-
int[] numberTerms = Ints.toArray(pNumbers);
108-
return yices_distinct(numberTerms.length, numberTerms);
108+
if (pNumbers.size() < 2) {
109+
return yices_true();
110+
} else {
111+
return yices_distinct(pNumbers.size(), Ints.toArray(pNumbers));
112+
}
109113
}
110114

111115
@Override

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

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

72+
@Test
73+
public void trivialDistinctTest() throws SolverException, InterruptedException {
74+
requireIntegers();
75+
assertThatFormula(imgr.distinct(ImmutableList.of())).isTautological();
76+
assertThatFormula(imgr.distinct(ImmutableList.of(imgr.makeVariable("a")))).isTautological();
77+
}
78+
7279
@Test
7380
public void trivialSumTest() throws SolverException, InterruptedException {
7481
requireIntegers();

0 commit comments

Comments
 (0)