From 5325bc8b3520e6262e5bc89d8e8001e1f89b39f1 Mon Sep 17 00:00:00 2001 From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch> Date: Tue, 3 May 2016 15:36:27 +0200 Subject: [PATCH] QEB.flatMapIns should still return EB --- src/main/scala/leon/synthesis/ExamplesBank.scala | 16 ++++++++-------- .../scala/leon/synthesis/rules/ADTSplit.scala | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/scala/leon/synthesis/ExamplesBank.scala b/src/main/scala/leon/synthesis/ExamplesBank.scala index 9d48defd5..913ae4376 100644 --- a/src/main/scala/leon/synthesis/ExamplesBank.scala +++ b/src/main/scala/leon/synthesis/ExamplesBank.scala @@ -185,16 +185,16 @@ case class QualifiedExamplesBank(as: List[Identifier], xs: List[Identifier], eb: QualifiedExamplesBank(nas, xs, eb flatMapIns { (in: Seq[Expr]) => List(toKeep.map(in)) }) } + def evalIns: QualifiedExamplesBank = copy( eb = flatMapIns { mapping => + val evalAs = evaluator.evalEnv(mapping) + List(as map evalAs) + }) + /** Filter inputs through expr which is an expression evaluating to a boolean */ def filterIns(expr: Expr): QualifiedExamplesBank = { filterIns(m => evaluator.eval(expr, m).result.contains(BooleanLiteral(true))) } - def evalIns: QualifiedExamplesBank = flatMapIns { mapping => - val evalAs = evaluator.evalEnv(mapping) - List(as map evalAs) - } - /** Filters inputs through the predicate pred, with an assignment of input variables to expressions. */ def filterIns(pred: Map[Identifier, Expr] => Boolean): QualifiedExamplesBank = { QualifiedExamplesBank(as, xs, @@ -212,14 +212,14 @@ case class QualifiedExamplesBank(as: List[Identifier], xs: List[Identifier], eb: /** Maps inputs through the function f * * @return A new ExampleBank */ - def flatMapIns(f: Seq[(Identifier, Expr)] => List[Seq[Expr]]): QualifiedExamplesBank = { - copy(eb = eb flatMap { + def flatMapIns(f: Seq[(Identifier, Expr)] => List[Seq[Expr]]): ExamplesBank = { + eb flatMap { case InExample(in) => f(as zip in).map(InExample) case InOutExample(in, out) => f(as zip in).map(InOutExample(_, out)) - }) + } } } diff --git a/src/main/scala/leon/synthesis/rules/ADTSplit.scala b/src/main/scala/leon/synthesis/rules/ADTSplit.scala index 379eaf59f..0c2e1e7e8 100644 --- a/src/main/scala/leon/synthesis/rules/ADTSplit.scala +++ b/src/main/scala/leon/synthesis/rules/ADTSplit.scala @@ -100,7 +100,7 @@ case object ADTSplit extends Rule("ADT Split.") { } } } else { - p.qeb + p.eb } } val newAs = if (isInputVar) args ::: oas else p.as -- GitLab