From c9831b31ebb4788e38af7047e8cf58c348fcabeb Mon Sep 17 00:00:00 2001 From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch> Date: Thu, 21 Apr 2016 13:37:56 +0200 Subject: [PATCH] Remove unused file --- .../regression/synthesis/SynthesisSuite.scala | 349 ------------------ 1 file changed, 349 deletions(-) delete mode 100644 src/test/scala/leon/regression/synthesis/SynthesisSuite.scala diff --git a/src/test/scala/leon/regression/synthesis/SynthesisSuite.scala b/src/test/scala/leon/regression/synthesis/SynthesisSuite.scala deleted file mode 100644 index 3615b0340..000000000 --- a/src/test/scala/leon/regression/synthesis/SynthesisSuite.scala +++ /dev/null @@ -1,349 +0,0 @@ -/* Copyright 2009-2016 EPFL, Lausanne */ - -package leon.regression.synthesis - -import leon.test._ -import leon._ -import leon.synthesis._ -import leon.synthesis.graph._ -import leon.synthesis.utils._ -import leon.utils.PreprocessingPhase - -/* -class SynthesisSuite extends LeonRegressionSuite { - private var counter : Int = 0 - private def nextInt() : Int = { - counter += 1 - counter - } - - abstract class SynStrat(val ruleName: String) - - case class Decomp(n: String, sub: Seq[SynStrat]) extends SynStrat(n) - - case class Close(n: String) extends SynStrat(n) - - - class TestSearch(ctx: LeonContext, - ci: SourceInfo, - p: Problem, - strat: SynStrat) extends SimpleSearch(ctx, ci, p, CostModels.default, None) { - - def synthesizeFrom(sctx: SynthesisContext, from: Node, strat: SynStrat): Boolean = { - from match { - case an: AndNode => - an.expand(SearchContext(sctx, ci, an, this)) - - if (an.isSolved) { - true - } else if (an.isDeadEnd) { - false - } else { - strat match { - case Decomp(_, sub) => - (an.descendants zip sub).forall { - case (n, strat) => synthesizeFrom(sctx, n, strat) - } - case _ => - fail("Got non-conclusive reply without Decomp strat") - false - } - } - - case on: OrNode => - on.expand(SearchContext(sctx, ci, on, this)) - val ns = on.descendants.filter { - case an: AndNode => matchingDesc(an.ri, strat.ruleName) - case _ => false - } - - if (ns.isEmpty) { - fail("Failed to find rule name: "+strat.ruleName) - } else if (ns.size > 1) { - fail("Ambiguous rule name: "+strat.ruleName) - } else { - synthesizeFrom(sctx, ns.head, strat) - } - } - } - - override def search(sctx: SynthesisContext): Stream[Solution] = { - if (synthesizeFrom(sctx, g.root, strat)) { - g.root.generateSolutions() - } else { - Stream.empty - } - } - - def matchingDesc(app: RuleInstantiation, n: String): Boolean = { - import java.util.regex.Pattern - val pattern = Pattern.quote(n).replace("*", "\\E.*\\Q") - app.asString(ctx).matches(pattern) - } - - } - - def forProgram(title: String, opts: Seq[String] = Nil)(content: String)(strats: PartialFunction[String, SynStrat]) { - test(f"Synthesizing ${nextInt()}%3d: [$title]") { - val ctx = createLeonContext(opts: _*) - - val pipeline = leon.utils.TemporaryInputPhase andThen - leon.frontends.scalac.ExtractionPhase andThen - new PreprocessingPhase andThen - SynthesisProblemExtractionPhase - - val (ctx2, (program, results)) = pipeline.run(ctx, (List(content), Nil)) - - for ((f,cis) <- results; ci <- cis) { - info(f"${ci.fd.id.toString}%-20s") - - val sctx = SynthesisContext(ctx2, - SynthesisSettings(), - ci.fd, - program) - - val p = ci.problem - - if (strats.isDefinedAt(f.id.name)) { - val search = new TestSearch(ctx2, ci, p, strats(f.id.name)) - - val sols = search.search(sctx) - - sctx.solverFactory.shutdown() - - if(sols.isEmpty) { - fail("No solution") - } - } - } - } - } - - forProgram("Ground Enum", Seq("--solvers=enum"))( - """ -import leon.annotation._ -import leon.lang._ -import leon.lang.synthesis._ - -object Injection { - sealed abstract class List - case class Cons(tail: List) extends List - case class Nil() extends List - - // proved with unrolling=0 - def size(l: List) : BigInt = (l match { - case Nil() => BigInt(0) - case Cons(t) => 1 + size(t) - }) ensuring(res => res >= 0) - - def simple() = choose{out: List => size(out) == BigInt(2) } -} - """ - ) { - case "simple" => Close("Ground") - } - - forProgram("Cegis 1")( - """ -import leon.annotation._ -import leon.lang._ -import leon.lang.synthesis._ - -object Injection { - sealed abstract class List - case class Cons(tail: List) extends List - case class Nil() extends List - - // proved with unrolling=0 - def size(l: List) : BigInt = (l match { - case Nil() => BigInt(0) - case Cons(t) => BigInt(1) + size(t) - }) ensuring(res => res >= 0) - - def simple(in: List) = choose{out: List => size(out) == size(in) } -} - """ - ) { - case "simple" => Close("CEGIS") - } - - forProgram("Cegis 2")( - """ -import leon.annotation._ -import leon.lang._ -import leon.lang.synthesis._ - -object Injection { - sealed abstract class List - case class Cons(head: Int, tail: List) extends List - case class Nil() extends List - - // simulates input/output spec. - def tail(in: List) = choose { - (out: List) => - (in != Cons(0, Nil()) || out == Nil()) && - (in != Cons(0, Cons(1, Nil())) || out == Cons(1, Nil())) && - (in != Cons(0, Cons(1, Cons(2, Nil()))) || out == Cons(1, Cons(2, Nil()))) - } -} - """ - ) { - case "tail" => - Decomp("ADT Split on 'in*'", Seq( - Close("CEGIS"), - Close("CEGIS") - )) - } - - - forProgram("Lists")(""" -import leon.lang._ -import leon.lang.synthesis._ - -object SortedList { - sealed abstract class List - case class Cons(head: BigInt, tail: List) extends List - case class Nil() extends List - - def size(l: List) : BigInt = (l match { - case Nil() => BigInt(0) - case Cons(_, t) => 1 + size(t) - }) ensuring(res => res >= 0) - - def content(l: List): Set[BigInt] = l match { - case Nil() => Set.empty[BigInt] - case Cons(i, t) => Set(i) ++ content(t) - } - - def isSorted(l: List): Boolean = l match { - case Nil() => true - case Cons(x, Nil()) => true - case Cons(x, Cons(y, ys)) => x <= y && isSorted(Cons(y, ys)) - } - - def concat(in1: List, in2: List) = choose { - (out : List) => - content(out) == content(in1) ++ content(in2) - } - - def insert(in1: List, v: BigInt) = choose { - (out : List) => - content(out) == content(in1) ++ Set(v) - } - - def insertSorted(in1: List, v: BigInt) = choose { - (out : List) => - isSorted(in1) && content(out) == content(in1) ++ Set(v) && isSorted(out) - } -} - """) { - case "concat" => - Decomp("ADT Split on 'in1'", List( - Close("CEGIS"), - Close("CEGIS") - )) - - case "insert" => - Decomp("ADT Split on 'in1'", List( - Close("CEGIS"), - Close("CEGIS") - )) - - case "insertSorted" => - Decomp("Assert isSorted(in1)", List( - Decomp("ADT Split on 'in1'", List( - Close("CEGIS"), - Decomp("Ineq. Split on 'head*' and 'v*'", List( - Close("CEGIS"), - Decomp("Equivalent Inputs *", List( - Decomp("Unused *", List( - Close("CEGIS") - )) - )), - Close("CEGIS") - )) - )) - )) - } - - forProgram("Church")(""" -import leon.lang._ -import leon.lang.synthesis._ - -object ChurchNumerals { - sealed abstract class Num - case object Z extends Num - case class S(pred: Num) extends Num - - def value(n:Num) : BigInt = { - n match { - case Z => BigInt(0) - case S(p) => BigInt(1) + value(p) - } - } ensuring (_ >= 0) - - // def add(x : Num, y : Num) : Num = (x match { - // case Z => y - // case S(p) => add(p, S(y)) - // }) ensuring (value(_) == value(x) + value(y)) - - def add(x: Num, y: Num): Num = { - choose { (r : Num) => - value(r) == value(x) + value(y) - } - } -} - """) { - case "add" => - Decomp("ADT Split on 'y'", List( - Close("CEGIS"), - Close("CEGIS") - )) - } - - forProgram("Church")(""" -import leon.lang._ -import leon.lang.synthesis._ - -object ChurchNumerals { - sealed abstract class Num - case object Z extends Num - case class S(pred: Num) extends Num - - def value(n:Num) : BigInt = { - n match { - case Z => BigInt(0) - case S(p) => BigInt(1) + value(p) - } - } ensuring (_ >= 0) - - def add(x : Num, y : Num) : Num = (x match { - case Z => y - case S(p) => add(p, S(y)) - }) ensuring (value(_) == value(x) + value(y)) - - //def distinct(x : Num, y : Num) : Num = (x match { - // case Z => - // S(y) - - // case S(p) => - // y match { - // case Z => - // S(x) - // case S(p) => - // Z - // } - //}) ensuring (res => res != x && res != y) - - def distinct(x: Num, y: Num): Num = { - choose { (r : Num) => - r != x && r != y - } - } -} - """) { - case "distinct" => - Close("CEGIS") - } -} -*/ -- GitLab