From 21422e5d62ac2e3a5548407931a2cb5ab5e64cae Mon Sep 17 00:00:00 2001 From: Etienne Kneuss <ekneuss@gmail.com> Date: Tue, 21 Apr 2015 18:57:15 +0200 Subject: [PATCH] Make sure that all non-graveyard testcases at least compile, test it --- src/test/resources/regression/testcases | 1 + src/test/scala/leon/test/LeonTestSuite.scala | 14 ++- src/test/scala/leon/test/LeonTests.scala | 5 +- .../test/testcases/TestCasesCompile.scala | 53 +++++++++++ .../insynth-leon-tests/BubbleSortBug.scala | 0 .../CaseClassSelectExample.scala | 0 .../insynth-leon-tests/Hole.scala | 0 .../ListOperationsHole.scala | 0 .../insynth-leon-tests/RedBlackTreeFull.scala | 0 .../insynth-synthesis-tests/Hole.scala | 0 .../insynth-synthesis-tests/LocalScope.scala | 0 .../verification/graph/MST/SpanningTree.scala | 2 - .../verification/graph/SetIteration.scala | 2 - .../graph/dijkstras/DijkstrasSet.scala | 2 - .../graph/dijkstras/DijkstrasSetToVisit.scala | 2 - .../vmcai2011-testcases/CADE07.scala | 2 +- .../vmcai2011-testcases/CADE07Hard.scala | 2 +- .../vmcai2011-testcases/Giuliano.scala | 2 +- .../vmcai2011-testcases/JustFormulas.scala | 2 +- .../vmcai2011-testcases/ListProperties.scala | 2 +- .../vmcai2011-testcases/PaperExamples.scala | 2 +- .../vmcai2011-testcases/SanityChecks.scala | 2 +- .../verification/xlang/BubbleSort.scala | 0 .../xlang/NonDeterministicList.scala | 0 .../verification/xlang/QuickSortImp.scala | 0 .../verification/xlang/buggyEpsilon.scala | 0 .../master-thesis-regis/ArrayBubbleSort.scala | 0 .../master-thesis-regis/ArrayOperations.scala | 0 .../master-thesis-regis/Constraints.scala | 0 .../verification/xlang/xplusone.scala | 0 testcases/repair/Heap/Heap.scala | 2 +- testcases/repair/Heap/Heap1.scala | 2 +- testcases/repair/Heap/Heap10.scala | 2 +- testcases/repair/Heap/Heap2.scala | 2 +- testcases/repair/Heap/Heap3.scala | 2 +- testcases/repair/Heap/Heap4.scala | 2 +- testcases/repair/Heap/Heap5.scala | 2 +- testcases/repair/Heap/Heap6.scala | 2 +- testcases/repair/Heap/Heap7.scala | 2 +- testcases/repair/Heap/Heap8.scala | 2 +- testcases/repair/Heap/Heap9.scala | 2 +- testcases/repair/List/List.scala | 1 + testcases/repair/List/List1.scala | 1 + testcases/repair/List/List10.scala | 1 + testcases/repair/List/List11.scala | 1 + testcases/repair/List/List12.scala | 1 + testcases/repair/List/List13.scala | 1 + testcases/repair/List/List2.scala | 1 + testcases/repair/List/List3.scala | 1 + testcases/repair/List/List4.scala | 1 + testcases/repair/List/List5.scala | 1 + testcases/repair/List/List6.scala | 1 + testcases/repair/List/List7.scala | 1 + testcases/repair/List/List8.scala | 1 + testcases/repair/List/List9.scala | 1 + testcases/repair/MergeSort/MergeSort1.scala | 2 + .../repair/RedBlackTree/RedBlackTree.scala | 4 +- .../repair/RedBlackTree/RedBlackTree1.scala | 4 +- .../repair/RedBlackTree/RedBlackTree2.scala | 4 +- .../repair/RedBlackTree/RedBlackTree3.scala | 4 +- .../repair/RedBlackTree/RedBlackTree6.scala | 4 +- testcases/repair/inria/FirstIndexOf.scala | 4 +- testcases/repair/inria/HeapSort.scala | 2 +- testcases/synthesis/NewYearsSong.scala | 28 ------ .../BatchedQueue/BatchedQueue.scala | 3 +- .../BatchedQueue/BatchedQueueFull.scala | 3 +- .../BinarySearchTreeFull.scala | 1 - .../condabd/benchmarks/List/ListSearch.scala | 50 ---------- .../benchmarks/MergeSort/MergeSortMerge.scala | 2 +- .../insynth-leon-tests/Arguments.scala | 13 --- testcases/synthesis/io-examples/List.scala | 10 +- testcases/synthesis/io-examples/Lists.scala | 20 ++-- testcases/synthesis/io-examples/Math.scala | 28 ++---- .../BatchedQueue/BatchedQueueFull.scala | 91 ------------------- .../oopsla2013/InsertionSort/Complete.scala | 48 ---------- .../oopsla2013/MergeSort/Complete.scala | 2 - .../oopsla2013/SortedList/Batch.scala | 4 +- .../oopsla2013/SparseVector/Complete.scala | 2 +- testcases/verification/Addresses.scala | 1 - .../datastructures/BinarySearchTree.scala | 3 + .../BinarySearchTreeSorted.scala | 2 +- .../datastructures/InsertionSort.scala | 1 - .../datastructures/ListWithSize.scala | 1 - .../datastructures/MergeSort.scala | 2 +- .../datastructures/QuickSort.scala | 2 +- .../datastructures/RedBlackTree.scala | 3 +- .../datastructures/SortedList.scala | 1 - .../datastructures/TreeListSetNoDup.scala | 1 - testcases/verification/graph/MST/MSTMap.scala | 2 - .../verification/graph/SortedNDList.scala | 2 - testcases/verification/graph/Subgraph.scala | 2 - .../verification/graph/SubgraphMap.scala | 2 - .../verification/graph/TreeEquivalence.scala | 2 - .../graph/TreeEquivalenceMap.scala | 2 - .../graph/dijkstras/DijkstrasSortedList.scala | 2 - .../higher-order/invalid/Continuations1.scala | 1 + .../higher-order/invalid/HOInvocations.scala | 1 + .../higher-order/invalid/Lists1.scala | 1 + .../higher-order/invalid/Lists2.scala | 2 - .../higher-order/invalid/ParBalance.scala | 2 +- .../higher-order/invalid/PositiveMap.scala | 1 + .../higher-order/invalid/Sets1.scala | 1 + .../higher-order/invalid/Transformation.scala | 2 +- .../pldi2011-testcases/AssociativeList.scala | 1 - .../pldi2011-testcases/ForElimination.scala | 1 - .../pldi2011-testcases/InsertionSort.scala | 1 - .../pldi2011-testcases/LambdaEval.scala | 1 - .../pldi2011-testcases/ListTree.scala | 2 +- .../pldi2011-testcases/MergeSort.scala | 2 +- .../PropositionalLogic.scala | 1 - .../pldi2011-testcases/QuickSort.scala | 1 - .../pldi2011-testcases/RedBlackTree.scala | 1 - .../RedBlackTreeDeletion.scala | 4 +- .../SemanticsPreservation.scala | 1 - .../pldi2011-testcases/TreeMap.scala | 1 - .../sas2011-testcases/AmortizedQueue.scala | 1 - .../sas2011-testcases/AssociativeList.scala | 1 - .../sas2011-testcases/InsertionSort.scala | 1 - .../sas2011-testcases/ListOperations.scala | 1 - .../PropositionalLogic.scala | 1 - .../sas2011-testcases/RedBlackTree.scala | 1 - .../sas2011-testcases/SearchLinkedList.scala | 1 - .../scala2013/AmortizedQueue.scala | 1 - .../scala2013/AmortizedQueueImp.scala | 1 - .../scala2013/AssociativeList.scala | 1 - .../scala2013/AssociativeListImp.scala | 1 - .../scala2013/ListOperations.scala | 1 - .../scala2013/PropositionalLogic.scala | 1 - .../verification/scala2013/RedBlackTree.scala | 1 - .../scala2013/SearchLinkedList.scala | 1 - .../vstte10competition/AmortizedQueue.scala | 1 - .../vstte10competition/Injection.scala | 78 ---------------- .../vstte10competition/SearchLinkedList.scala | 1 - .../verification/xlang/BinaryTreeImp.scala | 1 - testcases/verification/xlang/BubbleFun.scala | 2 + .../verification/xlang/InsertionSortImp.scala | 1 - .../verification/xlang/IntOperations.scala | 2 + 137 files changed, 171 insertions(+), 453 deletions(-) create mode 120000 src/test/resources/regression/testcases create mode 100644 src/test/scala/leon/test/testcases/TestCasesCompile.scala rename testcases/{synthesis => graveyard}/insynth-leon-tests/BubbleSortBug.scala (100%) rename testcases/{synthesis => graveyard}/insynth-leon-tests/CaseClassSelectExample.scala (100%) rename testcases/{synthesis => graveyard}/insynth-leon-tests/Hole.scala (100%) rename testcases/{synthesis => graveyard}/insynth-leon-tests/ListOperationsHole.scala (100%) rename testcases/{synthesis => graveyard}/insynth-leon-tests/RedBlackTreeFull.scala (100%) rename testcases/{synthesis => graveyard}/insynth-synthesis-tests/Hole.scala (100%) rename testcases/{synthesis => graveyard}/insynth-synthesis-tests/LocalScope.scala (100%) rename testcases/{ => graveyard}/verification/graph/MST/SpanningTree.scala (99%) rename testcases/{ => graveyard}/verification/graph/SetIteration.scala (98%) rename testcases/{ => graveyard}/verification/graph/dijkstras/DijkstrasSet.scala (99%) rename testcases/{ => graveyard}/verification/graph/dijkstras/DijkstrasSetToVisit.scala (99%) rename testcases/{ => graveyard}/verification/vmcai2011-testcases/CADE07.scala (99%) rename testcases/{ => graveyard}/verification/vmcai2011-testcases/CADE07Hard.scala (99%) rename testcases/{ => graveyard}/verification/vmcai2011-testcases/Giuliano.scala (95%) rename testcases/{ => graveyard}/verification/vmcai2011-testcases/JustFormulas.scala (98%) rename testcases/{ => graveyard}/verification/vmcai2011-testcases/ListProperties.scala (98%) rename testcases/{ => graveyard}/verification/vmcai2011-testcases/PaperExamples.scala (96%) rename testcases/{ => graveyard}/verification/vmcai2011-testcases/SanityChecks.scala (98%) rename testcases/{ => graveyard}/verification/xlang/BubbleSort.scala (100%) rename testcases/{ => graveyard}/verification/xlang/NonDeterministicList.scala (100%) rename testcases/{ => graveyard}/verification/xlang/QuickSortImp.scala (100%) rename testcases/{ => graveyard}/verification/xlang/buggyEpsilon.scala (100%) rename testcases/{ => graveyard}/verification/xlang/master-thesis-regis/ArrayBubbleSort.scala (100%) rename testcases/{ => graveyard}/verification/xlang/master-thesis-regis/ArrayOperations.scala (100%) rename testcases/{ => graveyard}/verification/xlang/master-thesis-regis/Constraints.scala (100%) rename testcases/{ => graveyard}/verification/xlang/xplusone.scala (100%) delete mode 100644 testcases/synthesis/NewYearsSong.scala delete mode 100644 testcases/synthesis/condabd/benchmarks/List/ListSearch.scala delete mode 100644 testcases/synthesis/insynth-leon-tests/Arguments.scala delete mode 100644 testcases/synthesis/oopsla2013/BatchedQueue/BatchedQueueFull.scala delete mode 100644 testcases/synthesis/oopsla2013/InsertionSort/Complete.scala delete mode 100644 testcases/verification/vstte10competition/Injection.scala diff --git a/src/test/resources/regression/testcases b/src/test/resources/regression/testcases new file mode 120000 index 000000000..a8cc08a50 --- /dev/null +++ b/src/test/resources/regression/testcases @@ -0,0 +1 @@ +../../../../testcases/ \ No newline at end of file diff --git a/src/test/scala/leon/test/LeonTestSuite.scala b/src/test/scala/leon/test/LeonTestSuite.scala index c43e597a6..c5e3c7f40 100644 --- a/src/test/scala/leon/test/LeonTestSuite.scala +++ b/src/test/scala/leon/test/LeonTestSuite.scala @@ -152,7 +152,17 @@ trait LeonTestSuite extends FunSuite with Timeouts with BeforeAndAfterEach { - def filesInResourceDir(dir : String, filter : String=>Boolean = all) : Iterable[File] = { + def scanFilesIn(f: File, filter: String=>Boolean = all, recursive: Boolean = false): Iterable[File] = { + f.listFiles().flatMap{f => + if (f.isDirectory && recursive) { + scanFilesIn(f, filter, recursive) + } else { + List(f) + } + }.filter(f => filter(f.getPath)) + } + + def filesInResourceDir(dir : String, filter : String=>Boolean = all, recursive: Boolean = false) : Iterable[File] = { val d = this.getClass.getClassLoader.getResource(dir) @@ -161,6 +171,6 @@ trait LeonTestSuite extends FunSuite with Timeouts with BeforeAndAfterEach { new File(resourceDirHard + dir) } else new File(d.toURI) - asFile.listFiles().filter(f => filter(f.getPath)) + scanFilesIn(asFile, filter, recursive) } } diff --git a/src/test/scala/leon/test/LeonTests.scala b/src/test/scala/leon/test/LeonTests.scala index d7db5f39e..5650ab907 100644 --- a/src/test/scala/leon/test/LeonTests.scala +++ b/src/test/scala/leon/test/LeonTests.scala @@ -30,9 +30,12 @@ class LeonFunTests extends Suites( new SynthesisSuite, new SynthesisRegressionSuite, + new LibraryVerificationRegression, new PureScalaVerificationRegression, - new XLangVerificationRegression + new XLangVerificationRegression, + + new TestCasesCompile ) class LeonUnitTests extends Suites( diff --git a/src/test/scala/leon/test/testcases/TestCasesCompile.scala b/src/test/scala/leon/test/testcases/TestCasesCompile.scala new file mode 100644 index 000000000..c6aad47db --- /dev/null +++ b/src/test/scala/leon/test/testcases/TestCasesCompile.scala @@ -0,0 +1,53 @@ +/* Copyright 2009-2015 EPFL, Lausanne */ + +package leon.test.frontends + +import leon._ +import test.LeonTestSuite +import purescala.Definitions.Program +import java.io.File + +class TestCasesCompile extends LeonTestSuite { + // Hard-code output directory, for Eclipse purposes + + val pipeline = frontends.scalac.ExtractionPhase andThen utils.PreprocessingPhase + + def testFrontend(f: File, strip: Int) = { + val name = f.getAbsolutePath.split("/").toList.drop(strip).mkString("/") + + test("Compiling testcase " + name) { + val ctx = createLeonContext() + try { + pipeline.run(ctx)(List(f.getAbsolutePath)) + } catch { + case _: LeonFatalError => + fail("Failed to compile.") + } + } + } + + private def forEachFileIn(path : String)(block : File => Unit) { + val fs = filesInResourceDir(path, _.endsWith(".scala"), recursive=true) + + for(f <- fs.toSeq.sortBy(_.getAbsolutePath)) { + block(f) + } + } + + val baseDir = "regression/testcases/" + + val slashes = resourceDir(baseDir).getAbsolutePath.split("/").toList.size + + forEachFileIn(baseDir+"repair/") { f => + testFrontend(f, slashes) + } + forEachFileIn(baseDir+"runtime/") { f => + testFrontend(f, slashes) + } + forEachFileIn(baseDir+"synthesis/") { f => + testFrontend(f, slashes) + } + forEachFileIn(baseDir+"verification/") { f => + testFrontend(f, slashes) + } +} diff --git a/testcases/synthesis/insynth-leon-tests/BubbleSortBug.scala b/testcases/graveyard/insynth-leon-tests/BubbleSortBug.scala similarity index 100% rename from testcases/synthesis/insynth-leon-tests/BubbleSortBug.scala rename to testcases/graveyard/insynth-leon-tests/BubbleSortBug.scala diff --git a/testcases/synthesis/insynth-leon-tests/CaseClassSelectExample.scala b/testcases/graveyard/insynth-leon-tests/CaseClassSelectExample.scala similarity index 100% rename from testcases/synthesis/insynth-leon-tests/CaseClassSelectExample.scala rename to testcases/graveyard/insynth-leon-tests/CaseClassSelectExample.scala diff --git a/testcases/synthesis/insynth-leon-tests/Hole.scala b/testcases/graveyard/insynth-leon-tests/Hole.scala similarity index 100% rename from testcases/synthesis/insynth-leon-tests/Hole.scala rename to testcases/graveyard/insynth-leon-tests/Hole.scala diff --git a/testcases/synthesis/insynth-leon-tests/ListOperationsHole.scala b/testcases/graveyard/insynth-leon-tests/ListOperationsHole.scala similarity index 100% rename from testcases/synthesis/insynth-leon-tests/ListOperationsHole.scala rename to testcases/graveyard/insynth-leon-tests/ListOperationsHole.scala diff --git a/testcases/synthesis/insynth-leon-tests/RedBlackTreeFull.scala b/testcases/graveyard/insynth-leon-tests/RedBlackTreeFull.scala similarity index 100% rename from testcases/synthesis/insynth-leon-tests/RedBlackTreeFull.scala rename to testcases/graveyard/insynth-leon-tests/RedBlackTreeFull.scala diff --git a/testcases/synthesis/insynth-synthesis-tests/Hole.scala b/testcases/graveyard/insynth-synthesis-tests/Hole.scala similarity index 100% rename from testcases/synthesis/insynth-synthesis-tests/Hole.scala rename to testcases/graveyard/insynth-synthesis-tests/Hole.scala diff --git a/testcases/synthesis/insynth-synthesis-tests/LocalScope.scala b/testcases/graveyard/insynth-synthesis-tests/LocalScope.scala similarity index 100% rename from testcases/synthesis/insynth-synthesis-tests/LocalScope.scala rename to testcases/graveyard/insynth-synthesis-tests/LocalScope.scala diff --git a/testcases/verification/graph/MST/SpanningTree.scala b/testcases/graveyard/verification/graph/MST/SpanningTree.scala similarity index 99% rename from testcases/verification/graph/MST/SpanningTree.scala rename to testcases/graveyard/verification/graph/MST/SpanningTree.scala index 0b564b62d..3d421f6dc 100644 --- a/testcases/verification/graph/MST/SpanningTree.scala +++ b/testcases/graveyard/verification/graph/MST/SpanningTree.scala @@ -1,5 +1,3 @@ -import scala.collection.immutable._ - import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/graph/SetIteration.scala b/testcases/graveyard/verification/graph/SetIteration.scala similarity index 98% rename from testcases/verification/graph/SetIteration.scala rename to testcases/graveyard/verification/graph/SetIteration.scala index f272a48a4..47eb20aa7 100644 --- a/testcases/verification/graph/SetIteration.scala +++ b/testcases/graveyard/verification/graph/SetIteration.scala @@ -1,5 +1,3 @@ -import scala.collection.immutable._ - import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/graph/dijkstras/DijkstrasSet.scala b/testcases/graveyard/verification/graph/dijkstras/DijkstrasSet.scala similarity index 99% rename from testcases/verification/graph/dijkstras/DijkstrasSet.scala rename to testcases/graveyard/verification/graph/dijkstras/DijkstrasSet.scala index 711eff745..96571c95f 100644 --- a/testcases/verification/graph/dijkstras/DijkstrasSet.scala +++ b/testcases/graveyard/verification/graph/dijkstras/DijkstrasSet.scala @@ -1,5 +1,3 @@ -import scala.collection.immutable._ - import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/graph/dijkstras/DijkstrasSetToVisit.scala b/testcases/graveyard/verification/graph/dijkstras/DijkstrasSetToVisit.scala similarity index 99% rename from testcases/verification/graph/dijkstras/DijkstrasSetToVisit.scala rename to testcases/graveyard/verification/graph/dijkstras/DijkstrasSetToVisit.scala index eb954e7ca..3664d99da 100644 --- a/testcases/verification/graph/dijkstras/DijkstrasSetToVisit.scala +++ b/testcases/graveyard/verification/graph/dijkstras/DijkstrasSetToVisit.scala @@ -1,5 +1,3 @@ -import scala.collection.immutable._ - import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/vmcai2011-testcases/CADE07.scala b/testcases/graveyard/verification/vmcai2011-testcases/CADE07.scala similarity index 99% rename from testcases/verification/vmcai2011-testcases/CADE07.scala rename to testcases/graveyard/verification/vmcai2011-testcases/CADE07.scala index e1e697140..0af2fdd49 100644 --- a/testcases/verification/vmcai2011-testcases/CADE07.scala +++ b/testcases/graveyard/verification/vmcai2011-testcases/CADE07.scala @@ -1,4 +1,4 @@ -import scala.collection.immutable.Set +import leon.lang._ object CADE07 { def vc1(listContent: Set[Int]) : Boolean = { diff --git a/testcases/verification/vmcai2011-testcases/CADE07Hard.scala b/testcases/graveyard/verification/vmcai2011-testcases/CADE07Hard.scala similarity index 99% rename from testcases/verification/vmcai2011-testcases/CADE07Hard.scala rename to testcases/graveyard/verification/vmcai2011-testcases/CADE07Hard.scala index 9b4206bdc..e6e9aa062 100644 --- a/testcases/verification/vmcai2011-testcases/CADE07Hard.scala +++ b/testcases/graveyard/verification/vmcai2011-testcases/CADE07Hard.scala @@ -1,4 +1,4 @@ -import scala.collection.immutable.Set +import leon.lang._ object CADE07Hard { def vc6a(l1 : Int, nul : Int, ths : Int, tmp357 : Int, list : Set[Int], objct : Set[Int], objAlloc : Set[Int], objAlloc16 : Set[Int], objAlloc30 : Set[Int], objAlloc45 : Set[Int], objAlloc60 : Set[Int], objAlloc74 : Set[Int], listContent : Set[Int], listContent59 : Set[Int], listContent73 : Set[Int], s241 : Set[Int], s142 : Set[Int], tmp171 : Boolean) : Set[Int] = { diff --git a/testcases/verification/vmcai2011-testcases/Giuliano.scala b/testcases/graveyard/verification/vmcai2011-testcases/Giuliano.scala similarity index 95% rename from testcases/verification/vmcai2011-testcases/Giuliano.scala rename to testcases/graveyard/verification/vmcai2011-testcases/Giuliano.scala index 51ed40b0a..b69f09485 100644 --- a/testcases/verification/vmcai2011-testcases/Giuliano.scala +++ b/testcases/graveyard/verification/vmcai2011-testcases/Giuliano.scala @@ -1,4 +1,4 @@ -import scala.collection.immutable.Set +import leon.lang._ object Giuliano { sealed abstract class List diff --git a/testcases/verification/vmcai2011-testcases/JustFormulas.scala b/testcases/graveyard/verification/vmcai2011-testcases/JustFormulas.scala similarity index 98% rename from testcases/verification/vmcai2011-testcases/JustFormulas.scala rename to testcases/graveyard/verification/vmcai2011-testcases/JustFormulas.scala index bb902f0d5..f8c9b84a0 100644 --- a/testcases/verification/vmcai2011-testcases/JustFormulas.scala +++ b/testcases/graveyard/verification/vmcai2011-testcases/JustFormulas.scala @@ -1,4 +1,4 @@ -import scala.collection.immutable.Set +import leon.lang._ object JustFormulas { // These are just to provide some "uninterpreted function symbols" diff --git a/testcases/verification/vmcai2011-testcases/ListProperties.scala b/testcases/graveyard/verification/vmcai2011-testcases/ListProperties.scala similarity index 98% rename from testcases/verification/vmcai2011-testcases/ListProperties.scala rename to testcases/graveyard/verification/vmcai2011-testcases/ListProperties.scala index 45b2ad1e1..aaa830d37 100644 --- a/testcases/verification/vmcai2011-testcases/ListProperties.scala +++ b/testcases/graveyard/verification/vmcai2011-testcases/ListProperties.scala @@ -1,4 +1,4 @@ -import scala.collection.immutable.Set +import leon.lang._ object IntListProperties { sealed abstract class IntList diff --git a/testcases/verification/vmcai2011-testcases/PaperExamples.scala b/testcases/graveyard/verification/vmcai2011-testcases/PaperExamples.scala similarity index 96% rename from testcases/verification/vmcai2011-testcases/PaperExamples.scala rename to testcases/graveyard/verification/vmcai2011-testcases/PaperExamples.scala index 5f5329fb8..9ee07e0b4 100644 --- a/testcases/verification/vmcai2011-testcases/PaperExamples.scala +++ b/testcases/graveyard/verification/vmcai2011-testcases/PaperExamples.scala @@ -1,4 +1,4 @@ -import scala.collection.immutable.Set +import leon.lang._ object PaperExamples { sealed abstract class List diff --git a/testcases/verification/vmcai2011-testcases/SanityChecks.scala b/testcases/graveyard/verification/vmcai2011-testcases/SanityChecks.scala similarity index 98% rename from testcases/verification/vmcai2011-testcases/SanityChecks.scala rename to testcases/graveyard/verification/vmcai2011-testcases/SanityChecks.scala index 5ee5f3d96..df1f6582c 100644 --- a/testcases/verification/vmcai2011-testcases/SanityChecks.scala +++ b/testcases/graveyard/verification/vmcai2011-testcases/SanityChecks.scala @@ -1,4 +1,4 @@ -import scala.collection.immutable.Set +import leon.lang._ object SanityChecks { // These are just to provide some "uninterpreted function symbols" diff --git a/testcases/verification/xlang/BubbleSort.scala b/testcases/graveyard/verification/xlang/BubbleSort.scala similarity index 100% rename from testcases/verification/xlang/BubbleSort.scala rename to testcases/graveyard/verification/xlang/BubbleSort.scala diff --git a/testcases/verification/xlang/NonDeterministicList.scala b/testcases/graveyard/verification/xlang/NonDeterministicList.scala similarity index 100% rename from testcases/verification/xlang/NonDeterministicList.scala rename to testcases/graveyard/verification/xlang/NonDeterministicList.scala diff --git a/testcases/verification/xlang/QuickSortImp.scala b/testcases/graveyard/verification/xlang/QuickSortImp.scala similarity index 100% rename from testcases/verification/xlang/QuickSortImp.scala rename to testcases/graveyard/verification/xlang/QuickSortImp.scala diff --git a/testcases/verification/xlang/buggyEpsilon.scala b/testcases/graveyard/verification/xlang/buggyEpsilon.scala similarity index 100% rename from testcases/verification/xlang/buggyEpsilon.scala rename to testcases/graveyard/verification/xlang/buggyEpsilon.scala diff --git a/testcases/verification/xlang/master-thesis-regis/ArrayBubbleSort.scala b/testcases/graveyard/verification/xlang/master-thesis-regis/ArrayBubbleSort.scala similarity index 100% rename from testcases/verification/xlang/master-thesis-regis/ArrayBubbleSort.scala rename to testcases/graveyard/verification/xlang/master-thesis-regis/ArrayBubbleSort.scala diff --git a/testcases/verification/xlang/master-thesis-regis/ArrayOperations.scala b/testcases/graveyard/verification/xlang/master-thesis-regis/ArrayOperations.scala similarity index 100% rename from testcases/verification/xlang/master-thesis-regis/ArrayOperations.scala rename to testcases/graveyard/verification/xlang/master-thesis-regis/ArrayOperations.scala diff --git a/testcases/verification/xlang/master-thesis-regis/Constraints.scala b/testcases/graveyard/verification/xlang/master-thesis-regis/Constraints.scala similarity index 100% rename from testcases/verification/xlang/master-thesis-regis/Constraints.scala rename to testcases/graveyard/verification/xlang/master-thesis-regis/Constraints.scala diff --git a/testcases/verification/xlang/xplusone.scala b/testcases/graveyard/verification/xlang/xplusone.scala similarity index 100% rename from testcases/verification/xlang/xplusone.scala rename to testcases/graveyard/verification/xlang/xplusone.scala diff --git a/testcases/repair/Heap/Heap.scala b/testcases/repair/Heap/Heap.scala index 5ceed2228..46be0f31a 100644 --- a/testcases/repair/Heap/Heap.scala +++ b/testcases/repair/Heap/Heap.scala @@ -4,8 +4,8 @@ * Date: 20.11.2013 **/ +import leon.lang._ import leon.collection._ -import leon._ object HeapSort { diff --git a/testcases/repair/Heap/Heap1.scala b/testcases/repair/Heap/Heap1.scala index b5d5b22d0..61ec4ac0f 100644 --- a/testcases/repair/Heap/Heap1.scala +++ b/testcases/repair/Heap/Heap1.scala @@ -4,8 +4,8 @@ * Date: 20.11.2013 **/ +import leon.lang._ import leon.collection._ -import leon._ object HeapSort { diff --git a/testcases/repair/Heap/Heap10.scala b/testcases/repair/Heap/Heap10.scala index 27a75d344..6847ed8cd 100644 --- a/testcases/repair/Heap/Heap10.scala +++ b/testcases/repair/Heap/Heap10.scala @@ -4,8 +4,8 @@ * Date: 20.11.2013 **/ +import leon.lang._ import leon.collection._ -import leon._ object HeapSort { diff --git a/testcases/repair/Heap/Heap2.scala b/testcases/repair/Heap/Heap2.scala index df7e82458..914fb0971 100644 --- a/testcases/repair/Heap/Heap2.scala +++ b/testcases/repair/Heap/Heap2.scala @@ -4,8 +4,8 @@ * Date: 20.11.2013 **/ +import leon.lang._ import leon.collection._ -import leon._ object HeapSort { diff --git a/testcases/repair/Heap/Heap3.scala b/testcases/repair/Heap/Heap3.scala index ebe8c85f2..2adde538b 100644 --- a/testcases/repair/Heap/Heap3.scala +++ b/testcases/repair/Heap/Heap3.scala @@ -4,8 +4,8 @@ * Date: 20.11.2013 **/ +import leon.lang._ import leon.collection._ -import leon._ object HeapSort { diff --git a/testcases/repair/Heap/Heap4.scala b/testcases/repair/Heap/Heap4.scala index a19ff6c20..ff78b3700 100644 --- a/testcases/repair/Heap/Heap4.scala +++ b/testcases/repair/Heap/Heap4.scala @@ -4,8 +4,8 @@ * Date: 20.11.2013 **/ +import leon.lang._ import leon.collection._ -import leon._ object HeapSort { diff --git a/testcases/repair/Heap/Heap5.scala b/testcases/repair/Heap/Heap5.scala index 33a3ff5aa..17777f85c 100644 --- a/testcases/repair/Heap/Heap5.scala +++ b/testcases/repair/Heap/Heap5.scala @@ -4,8 +4,8 @@ * Date: 20.11.2013 **/ +import leon.lang._ import leon.collection._ -import leon._ object HeapSort { diff --git a/testcases/repair/Heap/Heap6.scala b/testcases/repair/Heap/Heap6.scala index c9bf9d61a..a434b70c8 100644 --- a/testcases/repair/Heap/Heap6.scala +++ b/testcases/repair/Heap/Heap6.scala @@ -4,8 +4,8 @@ * Date: 20.11.2013 **/ +import leon.lang._ import leon.collection._ -import leon._ object HeapSort { diff --git a/testcases/repair/Heap/Heap7.scala b/testcases/repair/Heap/Heap7.scala index d4de52fe4..9de2a20b6 100644 --- a/testcases/repair/Heap/Heap7.scala +++ b/testcases/repair/Heap/Heap7.scala @@ -4,8 +4,8 @@ * Date: 20.11.2013 **/ +import leon.lang._ import leon.collection._ -import leon._ object HeapSort { diff --git a/testcases/repair/Heap/Heap8.scala b/testcases/repair/Heap/Heap8.scala index 83a75b7ae..6ee493600 100644 --- a/testcases/repair/Heap/Heap8.scala +++ b/testcases/repair/Heap/Heap8.scala @@ -4,8 +4,8 @@ * Date: 20.11.2013 **/ +import leon.lang._ import leon.collection._ -import leon._ object HeapSort { diff --git a/testcases/repair/Heap/Heap9.scala b/testcases/repair/Heap/Heap9.scala index 6846a9cae..55520379e 100644 --- a/testcases/repair/Heap/Heap9.scala +++ b/testcases/repair/Heap/Heap9.scala @@ -4,8 +4,8 @@ * Date: 20.11.2013 **/ +import leon.lang._ import leon.collection._ -import leon._ object HeapSort { diff --git a/testcases/repair/List/List.scala b/testcases/repair/List/List.scala index 19cf5ed3f..caa4aa0d3 100644 --- a/testcases/repair/List/List.scala +++ b/testcases/repair/List/List.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List1.scala b/testcases/repair/List/List1.scala index 1e18ca898..9f600f728 100644 --- a/testcases/repair/List/List1.scala +++ b/testcases/repair/List/List1.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List10.scala b/testcases/repair/List/List10.scala index 6ef82201b..1c4b0016a 100644 --- a/testcases/repair/List/List10.scala +++ b/testcases/repair/List/List10.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List11.scala b/testcases/repair/List/List11.scala index ce946496e..7fe816b46 100644 --- a/testcases/repair/List/List11.scala +++ b/testcases/repair/List/List11.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List12.scala b/testcases/repair/List/List12.scala index 63c1da6be..19f2d779e 100644 --- a/testcases/repair/List/List12.scala +++ b/testcases/repair/List/List12.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List13.scala b/testcases/repair/List/List13.scala index 4dc3f2177..b585f3ef1 100644 --- a/testcases/repair/List/List13.scala +++ b/testcases/repair/List/List13.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List2.scala b/testcases/repair/List/List2.scala index 5a000adc8..f83d1d222 100644 --- a/testcases/repair/List/List2.scala +++ b/testcases/repair/List/List2.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List3.scala b/testcases/repair/List/List3.scala index 87a1214c7..1ad7ef0fd 100644 --- a/testcases/repair/List/List3.scala +++ b/testcases/repair/List/List3.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List4.scala b/testcases/repair/List/List4.scala index 6bee40d15..0b641cd80 100644 --- a/testcases/repair/List/List4.scala +++ b/testcases/repair/List/List4.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List5.scala b/testcases/repair/List/List5.scala index 46e6e4d50..34ae1877d 100644 --- a/testcases/repair/List/List5.scala +++ b/testcases/repair/List/List5.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List6.scala b/testcases/repair/List/List6.scala index 028f94109..2e1297cb4 100644 --- a/testcases/repair/List/List6.scala +++ b/testcases/repair/List/List6.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List7.scala b/testcases/repair/List/List7.scala index 3faa418ba..069dd35d2 100644 --- a/testcases/repair/List/List7.scala +++ b/testcases/repair/List/List7.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List8.scala b/testcases/repair/List/List8.scala index f7c431cfe..bf99c2e75 100644 --- a/testcases/repair/List/List8.scala +++ b/testcases/repair/List/List8.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/List/List9.scala b/testcases/repair/List/List9.scala index 6969f2f91..59d05b6c5 100644 --- a/testcases/repair/List/List9.scala +++ b/testcases/repair/List/List9.scala @@ -4,6 +4,7 @@ package leon.custom import leon._ import leon.lang._ +import leon.collection._ import leon.annotation._ sealed abstract class List0[T] { diff --git a/testcases/repair/MergeSort/MergeSort1.scala b/testcases/repair/MergeSort/MergeSort1.scala index f8515bade..901d4c6a2 100644 --- a/testcases/repair/MergeSort/MergeSort1.scala +++ b/testcases/repair/MergeSort/MergeSort1.scala @@ -1,3 +1,5 @@ +import leon.lang._ + object MergeSort { abstract class List { diff --git a/testcases/repair/RedBlackTree/RedBlackTree.scala b/testcases/repair/RedBlackTree/RedBlackTree.scala index d80fafc08..8bf916e87 100644 --- a/testcases/repair/RedBlackTree/RedBlackTree.scala +++ b/testcases/repair/RedBlackTree/RedBlackTree.scala @@ -1,5 +1,5 @@ -import leon._ -import lang._ +import leon.lang._ +import leon.collection._ import annotation._ object RedBlackTree { diff --git a/testcases/repair/RedBlackTree/RedBlackTree1.scala b/testcases/repair/RedBlackTree/RedBlackTree1.scala index d219c0094..c19819441 100644 --- a/testcases/repair/RedBlackTree/RedBlackTree1.scala +++ b/testcases/repair/RedBlackTree/RedBlackTree1.scala @@ -1,5 +1,5 @@ -import leon._ -import lang._ +import leon.lang._ +import leon.collection._ import annotation._ object RedBlackTree { diff --git a/testcases/repair/RedBlackTree/RedBlackTree2.scala b/testcases/repair/RedBlackTree/RedBlackTree2.scala index 7f0c029c8..a02dcb6f4 100644 --- a/testcases/repair/RedBlackTree/RedBlackTree2.scala +++ b/testcases/repair/RedBlackTree/RedBlackTree2.scala @@ -1,5 +1,5 @@ -import leon._ -import lang._ +import leon.lang._ +import leon.collection._ import annotation._ object RedBlackTree { diff --git a/testcases/repair/RedBlackTree/RedBlackTree3.scala b/testcases/repair/RedBlackTree/RedBlackTree3.scala index a5d561985..ffacf352e 100644 --- a/testcases/repair/RedBlackTree/RedBlackTree3.scala +++ b/testcases/repair/RedBlackTree/RedBlackTree3.scala @@ -1,5 +1,5 @@ -import leon._ -import lang._ +import leon.lang._ +import leon.collection._ import annotation._ object RedBlackTree { diff --git a/testcases/repair/RedBlackTree/RedBlackTree6.scala b/testcases/repair/RedBlackTree/RedBlackTree6.scala index 9eed1ac3a..82e0372d5 100644 --- a/testcases/repair/RedBlackTree/RedBlackTree6.scala +++ b/testcases/repair/RedBlackTree/RedBlackTree6.scala @@ -1,5 +1,5 @@ -import leon._ -import lang._ +import leon.lang._ +import leon.collection._ import annotation._ object RedBlackTree { diff --git a/testcases/repair/inria/FirstIndexOf.scala b/testcases/repair/inria/FirstIndexOf.scala index d59131506..2693d18cd 100644 --- a/testcases/repair/inria/FirstIndexOf.scala +++ b/testcases/repair/inria/FirstIndexOf.scala @@ -4,7 +4,7 @@ import leon.lang.synthesis._ object FirstIndexOf { - def firstIndexOf(l: List[Int], v: Int): Int = { + def firstIndexOf(l: List[Int], v: Int): BigInt = { l match { case Cons(h, t) if v == h => 0 case Cons(h, t) => @@ -17,7 +17,7 @@ object FirstIndexOf { -1 } } ensuring { - (res: Int) => (if (l.content contains v) { + (res: BigInt) => (if (l.content contains v) { l.size > res && l.apply(res) == v } else { res == -1 diff --git a/testcases/repair/inria/HeapSort.scala b/testcases/repair/inria/HeapSort.scala index 5ceed2228..46be0f31a 100644 --- a/testcases/repair/inria/HeapSort.scala +++ b/testcases/repair/inria/HeapSort.scala @@ -4,8 +4,8 @@ * Date: 20.11.2013 **/ +import leon.lang._ import leon.collection._ -import leon._ object HeapSort { diff --git a/testcases/synthesis/NewYearsSong.scala b/testcases/synthesis/NewYearsSong.scala deleted file mode 100644 index 0bcdf0130..000000000 --- a/testcases/synthesis/NewYearsSong.scala +++ /dev/null @@ -1,28 +0,0 @@ -import leon.lang.synthesis._ -import leon.annotation._ -import leon.lang._ - -object NewYearSong { - - def computeLines(eLines: Int, - iLines: Int, - iSyls: Int, - nSyls: Int) : (Int,Int,Int,Int,Int,Int) = { - choose((line7: Int, - line8: Int, - nsLines: Int, - nLines: Int, - tLines: Int, - tLinesFact: Int) => ( - tLines == eLines + nLines - && nLines == iLines + nsLines - && nLines == line7 + line8 - && nSyls + iSyls == 7 * line7 + 8 * line8 - && tLines == 4 * tLinesFact // expresses (4 | tLines) - && line8 >= 0 - && line7 >= 0 - && tLines >= 0 - )) - } - -} diff --git a/testcases/synthesis/condabd/benchmarks/BatchedQueue/BatchedQueue.scala b/testcases/synthesis/condabd/benchmarks/BatchedQueue/BatchedQueue.scala index b966885e6..64a8ae73d 100644 --- a/testcases/synthesis/condabd/benchmarks/BatchedQueue/BatchedQueue.scala +++ b/testcases/synthesis/condabd/benchmarks/BatchedQueue/BatchedQueue.scala @@ -1,4 +1,5 @@ -import scala.collection.immutable.Set +import leon.lang._ +import leon.collection._ import leon.lang._ diff --git a/testcases/synthesis/condabd/benchmarks/BatchedQueue/BatchedQueueFull.scala b/testcases/synthesis/condabd/benchmarks/BatchedQueue/BatchedQueueFull.scala index 467fc66df..c0697de3f 100644 --- a/testcases/synthesis/condabd/benchmarks/BatchedQueue/BatchedQueueFull.scala +++ b/testcases/synthesis/condabd/benchmarks/BatchedQueue/BatchedQueueFull.scala @@ -1,6 +1,5 @@ -import scala.collection.immutable.Set - import leon.lang._ +import leon.collection._ object BatchedQueue { sealed abstract class List diff --git a/testcases/synthesis/condabd/benchmarks/BinarySearchTree/BinarySearchTreeFull.scala b/testcases/synthesis/condabd/benchmarks/BinarySearchTree/BinarySearchTreeFull.scala index 2e3f168a3..bcc6d17ab 100644 --- a/testcases/synthesis/condabd/benchmarks/BinarySearchTree/BinarySearchTreeFull.scala +++ b/testcases/synthesis/condabd/benchmarks/BinarySearchTree/BinarySearchTreeFull.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/synthesis/condabd/benchmarks/List/ListSearch.scala b/testcases/synthesis/condabd/benchmarks/List/ListSearch.scala deleted file mode 100644 index 240a5f009..000000000 --- a/testcases/synthesis/condabd/benchmarks/List/ListSearch.scala +++ /dev/null @@ -1,50 +0,0 @@ -import leon.lang._ - -object ListOperations { - sealed abstract class List - case class Cons(head: Int, tail: List) extends List - case class Nil() extends List - - sealed abstract class Option - case class Some(i: Int) extends Option - case object None extends Option - - def content(l: List) : Set[Int] = l match { - case Nil() => Set.empty - case Cons(head, tail) => Set(head) ++ content(tail) - } - - def size(l: List) : Int = l match { - case Nil() => 0 - case Cons(head, tail) => 1 + size(tail) - } -// -// def isEmpty(l: List) = l match { -// case Nil() => true -// case Cons(_, _) => false -// } - - - def linearSearch(l: List, c: Int): Option = { - l match { - case Nil() => None - case Cons(lHead, lTail) => - if (lHead == c) Some(size(l)) - else Some(linearSearch(lTail, c)) - } - } ensuring(res => if(res > -1) atInd(l, size(l) - res) == c else !content(l).contains(c)) - - def atInd(l: List, ind: Int): Int = { - require(ind >= 0 && ind < size(l)) - - l match { - case Nil() => -1 - case Cons(lHead, lTail) => - if (ind == 0) lHead - else atInd(lTail, ind - 1) - } - - } ensuring( res => - if (size(l) == 0) res == -1 else content(l).contains(res) - ) -} diff --git a/testcases/synthesis/condabd/benchmarks/MergeSort/MergeSortMerge.scala b/testcases/synthesis/condabd/benchmarks/MergeSort/MergeSortMerge.scala index 1fadb1d80..ad20d41b2 100644 --- a/testcases/synthesis/condabd/benchmarks/MergeSort/MergeSortMerge.scala +++ b/testcases/synthesis/condabd/benchmarks/MergeSort/MergeSortMerge.scala @@ -30,7 +30,7 @@ object MergeSort { def merge(aList : List, bList : List) : List = { require(isSorted(aList) && isSorted(bList)) choose( (res: List) => - ensuring(res => contents(res) == contents(aList) ++ contents(bList) && isSorted(res)) + contents(res) == contents(aList) ++ contents(bList) && isSorted(res) ) } diff --git a/testcases/synthesis/insynth-leon-tests/Arguments.scala b/testcases/synthesis/insynth-leon-tests/Arguments.scala deleted file mode 100644 index 75b4eceaa..000000000 --- a/testcases/synthesis/insynth-leon-tests/Arguments.scala +++ /dev/null @@ -1,13 +0,0 @@ -import leon.annotation._ -import leon.lang._ - -object Hole { - - def method(t: Int, x: Boolean, y: Boolean) : Int = ({ - if (t > 5) - hole(5) - else - t - }) ensuring ( _ > 0 ) - -} diff --git a/testcases/synthesis/io-examples/List.scala b/testcases/synthesis/io-examples/List.scala index 01214c727..0e2d2b0fd 100644 --- a/testcases/synthesis/io-examples/List.scala +++ b/testcases/synthesis/io-examples/List.scala @@ -9,11 +9,11 @@ object Foo { //Cons[Int](i, l).slice(0, i) ???[List[Int]] } ensuring { (res: List[Int]) => - passes((l, i), res)(Map[(List[Int], Int), List[Int]]( - (Nil[Int](), 2) -> Cons(2, Nil[Int]()), - (Cons(1, Nil()), 2) -> Cons(2, Cons(1, Nil())), - (Cons(1, Cons(2, Cons(3, Nil()))), 3) -> Cons(3, Cons(1, Cons(2, Nil()))) - )) + ((l, i), res) passes { + case (Nil(), 2) => Cons(2, Nil[Int]()) + case (Cons(1, Nil()), 2) => Cons(2, Cons(1, Nil())) + case (Cons(1, Cons(2, Cons(3, Nil()))), 3) => Cons(3, Cons(1, Cons(2, Nil()))) + } } } diff --git a/testcases/synthesis/io-examples/Lists.scala b/testcases/synthesis/io-examples/Lists.scala index 62335cc36..7d3d068e0 100644 --- a/testcases/synthesis/io-examples/Lists.scala +++ b/testcases/synthesis/io-examples/Lists.scala @@ -5,18 +5,18 @@ import leon.lang.synthesis._ object Lists { def safetail(l: List[Int]): List[Int] = choose { (res : List[Int]) => - passes(l, res)(Map( - Cons(1, Cons(2, Cons(3, Cons(4, Nil())))) -> Cons(2, Cons(3, Cons(4, Nil()))), - Cons(2, Cons(3, Cons(4, Nil()))) -> Cons(3, Cons(4, Nil())), - Nil() -> Nil() - )) + (l, res) passes { + case Cons(1, Cons(2, Cons(3, Cons(4, Nil())))) => Cons(2, Cons(3, Cons(4, Nil()))) + case Cons(2, Cons(3, Cons(4, Nil()))) => Cons(3, Cons(4, Nil())) + case Nil() => Nil() + } } def uniq(l: List[Int]): List[Int] = choose { (res : List[Int]) => - passes(l, res)(Map( - Cons(1, Cons(1, Cons(1, Cons(2, Nil())))) -> Cons(1, Cons(2, Nil())), - Cons(3, Cons(3, Cons(4, Nil()))) -> Cons(3, Cons(4, Nil())), - Nil() -> Nil() - )) + (l, res) passes { + case Cons(1, Cons(1, Cons(1, Cons(2, Nil())))) => Cons(1, Cons(2, Nil())) + case Cons(3, Cons(3, Cons(4, Nil()))) => Cons(3, Cons(4, Nil())) + case Nil() => Nil() + } } } diff --git a/testcases/synthesis/io-examples/Math.scala b/testcases/synthesis/io-examples/Math.scala index df68735e3..2e50289d6 100644 --- a/testcases/synthesis/io-examples/Math.scala +++ b/testcases/synthesis/io-examples/Math.scala @@ -10,25 +10,17 @@ object Math { } else { ???[Int] } - } ensuring { - passes(a, _)(Map( - 0 -> 0, - 1 -> 1, - 2 -> 1, - 3 -> 2, - 4 -> 3, - 5 -> 5, - 18 -> 2584 - )) - } - - def abs(a: Int): Int = { - if (?(a >= 0, a <= 0, a == 0, a != 0)) { - a - } else { - -a + } ensuring { res => + (a, res) passes { + case 0 => 0 + case 1 => 1 + case 2 => 1 + case 3 => 2 + case 4 => 3 + case 5 => 5 + case 18 => 2584 } - } ensuring { _ >= 0 } + } diff --git a/testcases/synthesis/oopsla2013/BatchedQueue/BatchedQueueFull.scala b/testcases/synthesis/oopsla2013/BatchedQueue/BatchedQueueFull.scala deleted file mode 100644 index 7dbb6bfc3..000000000 --- a/testcases/synthesis/oopsla2013/BatchedQueue/BatchedQueueFull.scala +++ /dev/null @@ -1,91 +0,0 @@ -import scala.collection.immutable.Set - -import leon.lang._ - -object BatchedQueue { - sealed abstract class List - case class Cons(head: Int, tail: List) extends List - case object Nil extends List - - def content(l: List): Set[Int] = l match { - case Nil => Set.empty - case Cons(head, tail) => Set(head) ++ content(tail) - } - - def content(p: Queue): Set[Int] = - content(p.f) ++ content(p.r) - - case class Queue(f: List, r: List) - - def rev_append(aList: List, bList: List): List = (aList match { - case Nil => bList - case Cons(x, xs) => rev_append(xs, Cons(x, bList)) - }) ensuring ( - res => - content(res) == content(aList) ++ content(bList) && - size(res) == size(aList) + size(bList) - ) - - def invariantList(q:Queue, f: List, r: List): Boolean = ({ - rev_append(q.f, q.r) == rev_append(f, r) - }) ensuring ( - res => - true - ) - - def reverse(list: List) = rev_append(list, Nil) ensuring ( - res => - content(res) == content(list) && size(res) == size(list) - ) - - def checkf(f: List, r: List): Queue = (f match { - case Nil => Queue(reverse(r), Nil) - case _ => Queue(f, r) - }) ensuring { - res => content(res) == content(f) ++ content(r) && - size(res) == size(f) + size(r) && - invariantList(res, f, r) - } - - def head(p: Queue): Set[Int] = ( - p.f match { - case Nil => Set[Int]() - case Cons(x, xs) => Set(x) - }) ensuring ( - res => - if (isEmpty(p)) true - else content(p) == res ++ content(tail(p))) - - def tail(p: Queue): Queue = { - require(!isEmpty(p)) - p.f match { - case Nil => p - case Cons(_, xs) => checkf(xs, p.r) - } - } ensuring { - (res: Queue) => content(res) ++ head(p) == content(p) && - (if (isEmpty(p)) true - else size(res) + 1 == size(p)) - } - // - // def last(p: Queue): Int = { - // require(!isEmpty(p)) - // p.r match { - // case Nil => reverse(p.f).asInstanceOf[Cons].head - // case Cons(x, _) => x - // } - // } - - def snoc(p: Queue, x: Int): Queue = - checkf(p.f, Cons(x, p.r)) ensuring ( - res => - content(res) == content(p) ++ Set(x) && - size(res) == size(p) + 1 && - ( - if (isEmpty(p)) true - else (content(tail(res)) ++ Set(x) == content(tail(res)) && - size(res.f) == size(p.f)) - ) - ) - -} diff --git a/testcases/synthesis/oopsla2013/InsertionSort/Complete.scala b/testcases/synthesis/oopsla2013/InsertionSort/Complete.scala deleted file mode 100644 index 310b7e7e2..000000000 --- a/testcases/synthesis/oopsla2013/InsertionSort/Complete.scala +++ /dev/null @@ -1,48 +0,0 @@ -import scala.collection.immutable.Set -import leon.annotation._ -import leon.lang._ - -object InsertionSort { - sealed abstract class List - case class Cons(head: Int, tail: List) extends List - case class Nil() extends List - - def size(l: List): Int = (l match { - case Nil() => 0 - case Cons(_, xs) => 1 + size(xs) - }) ensuring (_ >= 0) - - def contents(l: List): Set[Int] = l match { - case Nil() => Set.empty - case Cons(x, xs) => contents(xs) ++ Set(x) - } - - 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)) - } - - /* Inserting element 'e' into a sorted list 'l' produces a sorted list with - * the expected content and size */ - def insert(e: Int, l: List): List = { - l match { - case Nil() => Cons(e, Nil()) - case Cons(x, xs) => - if (x <= e) Cons(x, sortedIns(e, xs)) - else Cons(e, l) - } - } ensuring (res => contents(res) == contents(l) ++ Set(e) - && isSorted(res) - && size(res) == size(l) + 1) - - /* Insertion sort yields a sorted list of same size and content as the input - * list */ - def sort(l: List): List = (l match { - case Nil() => Nil() - case Cons(x, xs) => sortedIns(x, sort(xs)) - }) ensuring (res => contents(res) == contents(l) - && isSorted(res) - && size(res) == size(l)) - -} diff --git a/testcases/synthesis/oopsla2013/MergeSort/Complete.scala b/testcases/synthesis/oopsla2013/MergeSort/Complete.scala index 062578c96..326295aaf 100644 --- a/testcases/synthesis/oopsla2013/MergeSort/Complete.scala +++ b/testcases/synthesis/oopsla2013/MergeSort/Complete.scala @@ -1,5 +1,3 @@ -import scala.collection.immutable.Set - import leon.lang._ object MergeSort { diff --git a/testcases/synthesis/oopsla2013/SortedList/Batch.scala b/testcases/synthesis/oopsla2013/SortedList/Batch.scala index 35e60c8d8..8da614143 100644 --- a/testcases/synthesis/oopsla2013/SortedList/Batch.scala +++ b/testcases/synthesis/oopsla2013/SortedList/Batch.scala @@ -47,7 +47,7 @@ object SortedList { choose { (out : List) => - && (content(out) == content(in1) ++ content(in2)) && isSorted(out) + (content(out) == content(in1) ++ content(in2)) && isSorted(out) } } @@ -56,7 +56,7 @@ object SortedList { choose { (out : List) => - && (content(out) == content(in1) -- content(in2)) && isSorted(out) + (content(out) == content(in1) -- content(in2)) && isSorted(out) } } diff --git a/testcases/synthesis/oopsla2013/SparseVector/Complete.scala b/testcases/synthesis/oopsla2013/SparseVector/Complete.scala index 2cf542ae5..8683e0b5a 100644 --- a/testcases/synthesis/oopsla2013/SparseVector/Complete.scala +++ b/testcases/synthesis/oopsla2013/SparseVector/Complete.scala @@ -107,7 +107,7 @@ object SparseVector { case Nil => None } - } ensuring { res => ((indices(sv) contains at) == isDefined(res)) && (!isDefined(res) || (values(sv) contains valueOf(res)) } + } ensuring { res => ((indices(sv) contains at) == isDefined(res)) && (!isDefined(res) || (values(sv) contains valueOf(res))) } // def get(sv: SparseVector, at: Int): Option = choose { // (res: Option) => invariant(sv) && ((indices(sv) contains at) == isDefined(res)) && (!isDefined(res) || (values(sv) contains valueOf(res))) diff --git a/testcases/verification/Addresses.scala b/testcases/verification/Addresses.scala index cd089c44c..bc6ad57b8 100644 --- a/testcases/verification/Addresses.scala +++ b/testcases/verification/Addresses.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/datastructures/BinarySearchTree.scala b/testcases/verification/datastructures/BinarySearchTree.scala index 471813c13..ef87a00ea 100644 --- a/testcases/verification/datastructures/BinarySearchTree.scala +++ b/testcases/verification/datastructures/BinarySearchTree.scala @@ -1,3 +1,6 @@ +import leon.lang._ +import leon.collection._ + object BSTSimpler { sealed abstract class Tree case class Node(left: Tree, value: Int, right: Tree) extends Tree diff --git a/testcases/verification/datastructures/BinarySearchTreeSorted.scala b/testcases/verification/datastructures/BinarySearchTreeSorted.scala index 464335f62..577e0e6a0 100644 --- a/testcases/verification/datastructures/BinarySearchTreeSorted.scala +++ b/testcases/verification/datastructures/BinarySearchTreeSorted.scala @@ -1,6 +1,6 @@ import leon.lang._ import leon.annotation._ -import leon._ +import leon.collection._ object BinaryTree { sealed abstract class Tree diff --git a/testcases/verification/datastructures/InsertionSort.scala b/testcases/verification/datastructures/InsertionSort.scala index 1781531cb..fcb2b94d5 100644 --- a/testcases/verification/datastructures/InsertionSort.scala +++ b/testcases/verification/datastructures/InsertionSort.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ object InsertionSort { diff --git a/testcases/verification/datastructures/ListWithSize.scala b/testcases/verification/datastructures/ListWithSize.scala index 660f09a43..d826eae58 100644 --- a/testcases/verification/datastructures/ListWithSize.scala +++ b/testcases/verification/datastructures/ListWithSize.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/datastructures/MergeSort.scala b/testcases/verification/datastructures/MergeSort.scala index 408830ced..1bbd7f607 100644 --- a/testcases/verification/datastructures/MergeSort.scala +++ b/testcases/verification/datastructures/MergeSort.scala @@ -1,4 +1,4 @@ -import scala.collection.immutable.Set +import leon.lang._ object MergeSort { sealed abstract class List diff --git a/testcases/verification/datastructures/QuickSort.scala b/testcases/verification/datastructures/QuickSort.scala index a5f03f214..cb193d2c8 100644 --- a/testcases/verification/datastructures/QuickSort.scala +++ b/testcases/verification/datastructures/QuickSort.scala @@ -1,4 +1,4 @@ -import scala.collection.immutable.Set +import leon.lang._ object QuickSort { sealed abstract class List diff --git a/testcases/verification/datastructures/RedBlackTree.scala b/testcases/verification/datastructures/RedBlackTree.scala index 98a70c191..eb998becb 100644 --- a/testcases/verification/datastructures/RedBlackTree.scala +++ b/testcases/verification/datastructures/RedBlackTree.scala @@ -1,5 +1,4 @@ -import scala.collection.immutable.Set -//import scala.collection.immutable.Multiset +import leon.lang._ object RedBlackTree { sealed abstract class Color diff --git a/testcases/verification/datastructures/SortedList.scala b/testcases/verification/datastructures/SortedList.scala index 41451641b..91b3e2af3 100644 --- a/testcases/verification/datastructures/SortedList.scala +++ b/testcases/verification/datastructures/SortedList.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/datastructures/TreeListSetNoDup.scala b/testcases/verification/datastructures/TreeListSetNoDup.scala index 44d7fcf0b..ef72d3a68 100644 --- a/testcases/verification/datastructures/TreeListSetNoDup.scala +++ b/testcases/verification/datastructures/TreeListSetNoDup.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/graph/MST/MSTMap.scala b/testcases/verification/graph/MST/MSTMap.scala index da2a08fc0..1ef72da32 100644 --- a/testcases/verification/graph/MST/MSTMap.scala +++ b/testcases/verification/graph/MST/MSTMap.scala @@ -1,5 +1,3 @@ -import scala.collection.immutable._ - import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/graph/SortedNDList.scala b/testcases/verification/graph/SortedNDList.scala index 98c06e7c9..42a16cfbd 100644 --- a/testcases/verification/graph/SortedNDList.scala +++ b/testcases/verification/graph/SortedNDList.scala @@ -1,5 +1,3 @@ -import scala.collection.immutable._ - import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/graph/Subgraph.scala b/testcases/verification/graph/Subgraph.scala index 2f60f78f0..5e1781137 100644 --- a/testcases/verification/graph/Subgraph.scala +++ b/testcases/verification/graph/Subgraph.scala @@ -1,5 +1,3 @@ -import scala.collection.immutable._ - import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/graph/SubgraphMap.scala b/testcases/verification/graph/SubgraphMap.scala index 90522ba9c..3714d2eb7 100644 --- a/testcases/verification/graph/SubgraphMap.scala +++ b/testcases/verification/graph/SubgraphMap.scala @@ -1,5 +1,3 @@ -import scala.collection.immutable._ - import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/graph/TreeEquivalence.scala b/testcases/verification/graph/TreeEquivalence.scala index c059473ea..a12c82ed3 100644 --- a/testcases/verification/graph/TreeEquivalence.scala +++ b/testcases/verification/graph/TreeEquivalence.scala @@ -1,5 +1,3 @@ -import scala.collection.immutable._ - import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/graph/TreeEquivalenceMap.scala b/testcases/verification/graph/TreeEquivalenceMap.scala index e0dd4bca5..7c4a1103c 100644 --- a/testcases/verification/graph/TreeEquivalenceMap.scala +++ b/testcases/verification/graph/TreeEquivalenceMap.scala @@ -1,5 +1,3 @@ -import scala.collection.immutable._ - import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/graph/dijkstras/DijkstrasSortedList.scala b/testcases/verification/graph/dijkstras/DijkstrasSortedList.scala index d3958a893..20461a256 100644 --- a/testcases/verification/graph/dijkstras/DijkstrasSortedList.scala +++ b/testcases/verification/graph/dijkstras/DijkstrasSortedList.scala @@ -1,5 +1,3 @@ -import scala.collection.immutable._ - import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/higher-order/invalid/Continuations1.scala b/testcases/verification/higher-order/invalid/Continuations1.scala index 82f4bdea4..0d65fc817 100644 --- a/testcases/verification/higher-order/invalid/Continuations1.scala +++ b/testcases/verification/higher-order/invalid/Continuations1.scala @@ -1,4 +1,5 @@ import leon.lang._ +import leon.collection._ object Continuations1 { def add_cps[T](x: BigInt, y: BigInt)(f: BigInt => T): T = { diff --git a/testcases/verification/higher-order/invalid/HOInvocations.scala b/testcases/verification/higher-order/invalid/HOInvocations.scala index 3d2e16835..bf1f40a43 100644 --- a/testcases/verification/higher-order/invalid/HOInvocations.scala +++ b/testcases/verification/higher-order/invalid/HOInvocations.scala @@ -1,4 +1,5 @@ import leon.lang._ +import leon.collection._ object HOInvocations { def switch(x: Int, f: (Int) => Int, g: (Int) => Int) = if(x > 0) f else g diff --git a/testcases/verification/higher-order/invalid/Lists1.scala b/testcases/verification/higher-order/invalid/Lists1.scala index e7582fad6..7fc938a51 100644 --- a/testcases/verification/higher-order/invalid/Lists1.scala +++ b/testcases/verification/higher-order/invalid/Lists1.scala @@ -1,4 +1,5 @@ import leon.lang._ +import leon.collection._ object Lists1 { abstract class List[T] diff --git a/testcases/verification/higher-order/invalid/Lists2.scala b/testcases/verification/higher-order/invalid/Lists2.scala index 777223617..59faa779b 100644 --- a/testcases/verification/higher-order/invalid/Lists2.scala +++ b/testcases/verification/higher-order/invalid/Lists2.scala @@ -1,6 +1,4 @@ -import leon._ import leon.lang._ -import leon.annotation._ import leon.collection._ diff --git a/testcases/verification/higher-order/invalid/ParBalance.scala b/testcases/verification/higher-order/invalid/ParBalance.scala index 4a2a93c23..62eca559d 100644 --- a/testcases/verification/higher-order/invalid/ParBalance.scala +++ b/testcases/verification/higher-order/invalid/ParBalance.scala @@ -1,5 +1,5 @@ -import leon._ import leon.lang._ +import leon.collection._ object ParBalance { diff --git a/testcases/verification/higher-order/invalid/PositiveMap.scala b/testcases/verification/higher-order/invalid/PositiveMap.scala index fb1452f47..7fb002360 100644 --- a/testcases/verification/higher-order/invalid/PositiveMap.scala +++ b/testcases/verification/higher-order/invalid/PositiveMap.scala @@ -1,4 +1,5 @@ import leon.lang._ +import leon.collection._ object PositiveMap { diff --git a/testcases/verification/higher-order/invalid/Sets1.scala b/testcases/verification/higher-order/invalid/Sets1.scala index 45545c356..62d1409b0 100644 --- a/testcases/verification/higher-order/invalid/Sets1.scala +++ b/testcases/verification/higher-order/invalid/Sets1.scala @@ -1,4 +1,5 @@ import leon.lang._ +import leon.collection._ object Sets1 { def set(i: Int): Int => Boolean = x => x == i diff --git a/testcases/verification/higher-order/invalid/Transformation.scala b/testcases/verification/higher-order/invalid/Transformation.scala index 83c265aee..9c9bf86bc 100644 --- a/testcases/verification/higher-order/invalid/Transformation.scala +++ b/testcases/verification/higher-order/invalid/Transformation.scala @@ -1,5 +1,5 @@ -import leon._ import leon.lang._ +import leon.collection._ object Transformation { diff --git a/testcases/verification/pldi2011-testcases/AssociativeList.scala b/testcases/verification/pldi2011-testcases/AssociativeList.scala index 2b99141b2..5f5dd8ae1 100644 --- a/testcases/verification/pldi2011-testcases/AssociativeList.scala +++ b/testcases/verification/pldi2011-testcases/AssociativeList.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/pldi2011-testcases/ForElimination.scala b/testcases/verification/pldi2011-testcases/ForElimination.scala index fe9650133..0e478762b 100644 --- a/testcases/verification/pldi2011-testcases/ForElimination.scala +++ b/testcases/verification/pldi2011-testcases/ForElimination.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/pldi2011-testcases/InsertionSort.scala b/testcases/verification/pldi2011-testcases/InsertionSort.scala index 3e606fe8b..a201e6eb1 100644 --- a/testcases/verification/pldi2011-testcases/InsertionSort.scala +++ b/testcases/verification/pldi2011-testcases/InsertionSort.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/pldi2011-testcases/LambdaEval.scala b/testcases/verification/pldi2011-testcases/LambdaEval.scala index 4dde6b2bc..84ecf4737 100644 --- a/testcases/verification/pldi2011-testcases/LambdaEval.scala +++ b/testcases/verification/pldi2011-testcases/LambdaEval.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/pldi2011-testcases/ListTree.scala b/testcases/verification/pldi2011-testcases/ListTree.scala index 5057b155b..edcd48650 100644 --- a/testcases/verification/pldi2011-testcases/ListTree.scala +++ b/testcases/verification/pldi2011-testcases/ListTree.scala @@ -1,4 +1,4 @@ -import scala.collection.immutable.Set +import leon.lang._ object ListTree { /* Trees holding integers and internal lists */ diff --git a/testcases/verification/pldi2011-testcases/MergeSort.scala b/testcases/verification/pldi2011-testcases/MergeSort.scala index 4e0121ac4..96e81e40e 100644 --- a/testcases/verification/pldi2011-testcases/MergeSort.scala +++ b/testcases/verification/pldi2011-testcases/MergeSort.scala @@ -1,4 +1,4 @@ -import scala.collection.immutable.Set +import leon.lang._ object MergeSort { sealed abstract class List diff --git a/testcases/verification/pldi2011-testcases/PropositionalLogic.scala b/testcases/verification/pldi2011-testcases/PropositionalLogic.scala index 0270bdf87..8356d2cbf 100644 --- a/testcases/verification/pldi2011-testcases/PropositionalLogic.scala +++ b/testcases/verification/pldi2011-testcases/PropositionalLogic.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/pldi2011-testcases/QuickSort.scala b/testcases/verification/pldi2011-testcases/QuickSort.scala index a0a151057..30b362143 100644 --- a/testcases/verification/pldi2011-testcases/QuickSort.scala +++ b/testcases/verification/pldi2011-testcases/QuickSort.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/pldi2011-testcases/RedBlackTree.scala b/testcases/verification/pldi2011-testcases/RedBlackTree.scala index 3ebfa25e2..c7f380df8 100644 --- a/testcases/verification/pldi2011-testcases/RedBlackTree.scala +++ b/testcases/verification/pldi2011-testcases/RedBlackTree.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/pldi2011-testcases/RedBlackTreeDeletion.scala b/testcases/verification/pldi2011-testcases/RedBlackTreeDeletion.scala index 585135d06..fed0247b6 100644 --- a/testcases/verification/pldi2011-testcases/RedBlackTreeDeletion.scala +++ b/testcases/verification/pldi2011-testcases/RedBlackTreeDeletion.scala @@ -1,4 +1,4 @@ -import scala.collection.immutable.Set +import leon.lang._ import leon.annotation._ object RedBlackTree { @@ -238,7 +238,7 @@ object RedBlackTree { val maxV = max(l) val newL = removeMax(l) bubble(c, newL, maxV, r) - case _ => throw new Exception("Removing an unexpected tree") + case _ => error[Tree]("Removing an unexpected tree") } } ensuring(res => hasRedBlackDesc(res)) diff --git a/testcases/verification/pldi2011-testcases/SemanticsPreservation.scala b/testcases/verification/pldi2011-testcases/SemanticsPreservation.scala index 034ec1222..0a10b118d 100644 --- a/testcases/verification/pldi2011-testcases/SemanticsPreservation.scala +++ b/testcases/verification/pldi2011-testcases/SemanticsPreservation.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/pldi2011-testcases/TreeMap.scala b/testcases/verification/pldi2011-testcases/TreeMap.scala index 44b85cff7..ce6fd7f81 100644 --- a/testcases/verification/pldi2011-testcases/TreeMap.scala +++ b/testcases/verification/pldi2011-testcases/TreeMap.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ object TreeMap { diff --git a/testcases/verification/sas2011-testcases/AmortizedQueue.scala b/testcases/verification/sas2011-testcases/AmortizedQueue.scala index a3636e00a..d5caf37ec 100644 --- a/testcases/verification/sas2011-testcases/AmortizedQueue.scala +++ b/testcases/verification/sas2011-testcases/AmortizedQueue.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/sas2011-testcases/AssociativeList.scala b/testcases/verification/sas2011-testcases/AssociativeList.scala index 6567c4786..3b4e954a8 100644 --- a/testcases/verification/sas2011-testcases/AssociativeList.scala +++ b/testcases/verification/sas2011-testcases/AssociativeList.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/sas2011-testcases/InsertionSort.scala b/testcases/verification/sas2011-testcases/InsertionSort.scala index b01d0ae2f..5c7419ce5 100644 --- a/testcases/verification/sas2011-testcases/InsertionSort.scala +++ b/testcases/verification/sas2011-testcases/InsertionSort.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/sas2011-testcases/ListOperations.scala b/testcases/verification/sas2011-testcases/ListOperations.scala index 2cba911ad..991febc57 100644 --- a/testcases/verification/sas2011-testcases/ListOperations.scala +++ b/testcases/verification/sas2011-testcases/ListOperations.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/sas2011-testcases/PropositionalLogic.scala b/testcases/verification/sas2011-testcases/PropositionalLogic.scala index ca410a5ae..efc8f8f87 100644 --- a/testcases/verification/sas2011-testcases/PropositionalLogic.scala +++ b/testcases/verification/sas2011-testcases/PropositionalLogic.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/sas2011-testcases/RedBlackTree.scala b/testcases/verification/sas2011-testcases/RedBlackTree.scala index e77838fff..0e6603209 100644 --- a/testcases/verification/sas2011-testcases/RedBlackTree.scala +++ b/testcases/verification/sas2011-testcases/RedBlackTree.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/sas2011-testcases/SearchLinkedList.scala b/testcases/verification/sas2011-testcases/SearchLinkedList.scala index 40f29050f..14e36d3e4 100644 --- a/testcases/verification/sas2011-testcases/SearchLinkedList.scala +++ b/testcases/verification/sas2011-testcases/SearchLinkedList.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/scala2013/AmortizedQueue.scala b/testcases/verification/scala2013/AmortizedQueue.scala index 52e4ed7e2..467a39d48 100644 --- a/testcases/verification/scala2013/AmortizedQueue.scala +++ b/testcases/verification/scala2013/AmortizedQueue.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/scala2013/AmortizedQueueImp.scala b/testcases/verification/scala2013/AmortizedQueueImp.scala index afaefbca1..fb3d54970 100644 --- a/testcases/verification/scala2013/AmortizedQueueImp.scala +++ b/testcases/verification/scala2013/AmortizedQueueImp.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/scala2013/AssociativeList.scala b/testcases/verification/scala2013/AssociativeList.scala index 6567c4786..3b4e954a8 100644 --- a/testcases/verification/scala2013/AssociativeList.scala +++ b/testcases/verification/scala2013/AssociativeList.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/scala2013/AssociativeListImp.scala b/testcases/verification/scala2013/AssociativeListImp.scala index d15101ec7..3810203c0 100644 --- a/testcases/verification/scala2013/AssociativeListImp.scala +++ b/testcases/verification/scala2013/AssociativeListImp.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/scala2013/ListOperations.scala b/testcases/verification/scala2013/ListOperations.scala index 86d0f522f..157c6b978 100644 --- a/testcases/verification/scala2013/ListOperations.scala +++ b/testcases/verification/scala2013/ListOperations.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/scala2013/PropositionalLogic.scala b/testcases/verification/scala2013/PropositionalLogic.scala index ca410a5ae..efc8f8f87 100644 --- a/testcases/verification/scala2013/PropositionalLogic.scala +++ b/testcases/verification/scala2013/PropositionalLogic.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/scala2013/RedBlackTree.scala b/testcases/verification/scala2013/RedBlackTree.scala index 11daef0b0..a65cc1f0f 100644 --- a/testcases/verification/scala2013/RedBlackTree.scala +++ b/testcases/verification/scala2013/RedBlackTree.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/scala2013/SearchLinkedList.scala b/testcases/verification/scala2013/SearchLinkedList.scala index 02f265f12..f85d51421 100644 --- a/testcases/verification/scala2013/SearchLinkedList.scala +++ b/testcases/verification/scala2013/SearchLinkedList.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/vstte10competition/AmortizedQueue.scala b/testcases/verification/vstte10competition/AmortizedQueue.scala index 696d92c40..4ba21d023 100644 --- a/testcases/verification/vstte10competition/AmortizedQueue.scala +++ b/testcases/verification/vstte10competition/AmortizedQueue.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/vstte10competition/Injection.scala b/testcases/verification/vstte10competition/Injection.scala deleted file mode 100644 index 22b9d2d25..000000000 --- a/testcases/verification/vstte10competition/Injection.scala +++ /dev/null @@ -1,78 +0,0 @@ -import scala.collection.immutable.Set -import leon.lang._ -import leon.annotation._ - -object Injection { - sealed abstract class List - case class Cons(head : Int, tail : List) extends List - case class Nil() extends List - - sealed abstract class OptionInt - case class Some(value : Int) extends OptionInt - case class None() extends OptionInt - - def size(list : List) : Int = (list match { - case Nil() => 0 - case Cons(_, xs) => 1 + size(xs) - }) ensuring(_ >= 0) - - def content(list : List) : Set[Int] = list match { - case Nil() => Set.empty[Int] - case Cons(x, xs) => content(xs) ++ Set(x) - } - - def completeSet(n : Int) : Set[Int] = if(n <= 0) { - Set.empty[Int] - } else { - completeSet(n-1) ++ Set(n-1) - } - - def at(list : List, i : Int) : OptionInt = { - if(i < 0) None() else list match { - case Nil() => None() - case Cons(x, _) if i == 0 => Some(x) - case Cons(_, xs) => at(xs, i - 1) - } - } ensuring(res => (res == None()) == (i < 0 || i >= size(list))) - - def reverse(l: List) : List = reverse0(l, Nil()) - def reverse0(l1: List, l2: List) : List = (l1 match { - case Nil() => l2 - case Cons(x, xs) => reverse0(xs, Cons(x, l2)) - }) ensuring(res => - size(res) == size(l1) + size(l2) && - content(res) == content(l1) ++ content(l2)) - - def isPermutation(list : List, n : Int) : Boolean = { - n < 0 || (size(list) == n && content(list) == completeSet(n)) - } - def prop0(list : List, n : Int) : Boolean = { - require(n >= 0 && isPermutation(list, n)) - isPermutation(reverse(list), n) - } holds - - def indexOf(e : Int, list : List) : Int = (list match { - case Nil() => 0 - case Cons(x, xs) => if (x == e) 0 else 1 + indexOf(e, xs) - }) ensuring(res => (res == size(list)) == !content(list).contains(e)) - - // def invert(list : List, n : Int) : List = { - // require(isPermutation(list, n)) - // list - // } ensuring(res => isPermutation(res, n)) - - def f(list : List) = f0(list, size(list)-1, Nil()) - def f0(list : List, c : Int, acc : List) : List = { - require(isPermutation(list, size(list)) && c <= size(list)) - if(c < 0) { - acc - } else { - f0(list, c-1, Cons(indexOf(c, list), acc)) - } - } ensuring(res => content(acc) -- completeSet(n) == Set.empty) - - def main(args : Array[String]) : Unit = { - val test = Cons(9, Cons(3, Cons(8, Cons(2, Cons(7, Cons(4, Cons(0, Cons(1, Cons(5, Cons(6, Nil())))))))))) - println(f(test, size(test))) - } -} diff --git a/testcases/verification/vstte10competition/SearchLinkedList.scala b/testcases/verification/vstte10competition/SearchLinkedList.scala index 02f265f12..f85d51421 100644 --- a/testcases/verification/vstte10competition/SearchLinkedList.scala +++ b/testcases/verification/vstte10competition/SearchLinkedList.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.lang._ import leon.annotation._ diff --git a/testcases/verification/xlang/BinaryTreeImp.scala b/testcases/verification/xlang/BinaryTreeImp.scala index 57542971b..b731586da 100644 --- a/testcases/verification/xlang/BinaryTreeImp.scala +++ b/testcases/verification/xlang/BinaryTreeImp.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/xlang/BubbleFun.scala b/testcases/verification/xlang/BubbleFun.scala index 4847fc8ac..a7c72648c 100644 --- a/testcases/verification/xlang/BubbleFun.scala +++ b/testcases/verification/xlang/BubbleFun.scala @@ -1,3 +1,5 @@ +import leon.lang._ + object BubbleFun { // --------------------- sort ---------------------- diff --git a/testcases/verification/xlang/InsertionSortImp.scala b/testcases/verification/xlang/InsertionSortImp.scala index 67e37a686..0a53cb55f 100644 --- a/testcases/verification/xlang/InsertionSortImp.scala +++ b/testcases/verification/xlang/InsertionSortImp.scala @@ -1,4 +1,3 @@ -import scala.collection.immutable.Set import leon.annotation._ import leon.lang._ diff --git a/testcases/verification/xlang/IntOperations.scala b/testcases/verification/xlang/IntOperations.scala index 98c9f9e5f..91b3b636c 100644 --- a/testcases/verification/xlang/IntOperations.scala +++ b/testcases/verification/xlang/IntOperations.scala @@ -1,3 +1,5 @@ +import leon.lang._ + object IntOperations { def sum(a: Int, b: Int) : Int = { require(b >= 0) -- GitLab