Skip to content

Commit cd9632a

Browse files
authored
Merge pull request #142 from jad-hamza/let-choose
Add let case in ChooseEncoder
2 parents c37411d + 228ba05 commit cd9632a

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

src/it/scala/inox/tip/TipTestSuite.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class TipTestSuite extends TestSuite with ResourceUtils {
3939
ctx.options.findOptionOrDefault(optSelectedSolvers).headOption match {
4040
case Some(solver) => (solver, file.getName) match {
4141
// Z3 binary will predictably segfault on certain permutations of this problem
42-
case ("smt-z3", "MergeSort2.scala-1.tip") => Ignore
42+
case ("no-inc:smt-z3" | "smt-z3", "MergeSort2.scala-1.tip") => Ignore
4343
// use non-linear operators that aren't supported in CVC4
4444
case ("smt-cvc4", "Instantiation.scala-0.tip") => Skip
4545
case ("smt-cvc4", "LetsInForall.tip") => Skip

src/main/scala/inox/solvers/unrolling/ChooseEncoder.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ trait ChooseEncoder extends transformers.ProgramTransformer {
2525

2626
val newFds = sourceProgram.symbols.functions.values.toList.map { fd =>
2727
def rec(e: Expr, params: Seq[ValDef]): Expr = e match {
28-
case l: Lambda =>
29-
val free = exprOps.variablesOf(l)
30-
l.copy(body = rec(l.body, params.filter(vd => free(vd.toVariable)) ++ l.params)).copiedFrom(l)
28+
case l: Let => l.copy(body = rec(l.body, params :+ l.vd)).copiedFrom(l)
29+
30+
case l: Lambda => l.copy(body = rec(l.body, params ++ l.params)).copiedFrom(l)
3131

3232
case c: Choose =>
3333
val (substMap, freshParams) = params.foldLeft((Map[ValDef, Expr](), Seq[ValDef]())) {
@@ -37,7 +37,7 @@ trait ChooseEncoder extends transformers.ProgramTransformer {
3737
(substMap + (vd -> nvd.toVariable), vds :+ nvd)
3838
}
3939

40-
val newPred = exprOps.replaceFromSymbols(substMap, rec(c.pred, params))
40+
val newPred = exprOps.replaceFromSymbols(substMap, rec(c.pred, params :+ c.res))
4141
val returnType = typeOps.replaceFromSymbols(substMap, c.res.tpe)
4242

4343
val newFd = new FunDef(

0 commit comments

Comments
 (0)