From 6dea823a83a29a82a10897df72d2f3d598ff4ccc Mon Sep 17 00:00:00 2001 From: Viktor Kuncak <viktor.kuncak@epfl.ch> Date: Wed, 23 Sep 2015 10:40:34 +0200 Subject: [PATCH] Made merge sort verify using better specified splitAtIndex. --- library/par/package.scala | 1 + testcases/verification/list-algorithms/BasicMergeSort.scala | 3 ++- .../verification/list-algorithms/BasicMergeSortPar.scala | 6 ++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/library/par/package.scala b/library/par/package.scala index 4690eddbf..6e8d1d571 100644 --- a/library/par/package.scala +++ b/library/par/package.scala @@ -9,6 +9,7 @@ import leon.lang.synthesis.choose package object par { // @library + @inline def parallel[A,B](x: => A, y: => B) : (A,B) = { (x,y) } diff --git a/testcases/verification/list-algorithms/BasicMergeSort.scala b/testcases/verification/list-algorithms/BasicMergeSort.scala index 474f768a5..55e632ff8 100644 --- a/testcases/verification/list-algorithms/BasicMergeSort.scala +++ b/testcases/verification/list-algorithms/BasicMergeSort.scala @@ -18,7 +18,8 @@ object MergeSort { def msort[T](less: (T, T) => Boolean)(l: List[T]): List[T] = { if (l.size <= 1) l else { - val (first, second) = l.evenSplit + val c = l.length/2 + val (first, second) = l.splitAtIndex(c) // evenSplit merge(less)(msort(less)(first), msort(less)(second)) } } ensuring { res => res.content == l.content && res.size == l.size } diff --git a/testcases/verification/list-algorithms/BasicMergeSortPar.scala b/testcases/verification/list-algorithms/BasicMergeSortPar.scala index e5620482d..493122b2f 100644 --- a/testcases/verification/list-algorithms/BasicMergeSortPar.scala +++ b/testcases/verification/list-algorithms/BasicMergeSortPar.scala @@ -19,9 +19,11 @@ object MergeSortPar { def msort[T](less: (T, T) => Boolean)(l: List[T]): List[T] = { if (l.size <= 1) l else { - val (first, second) = l.evenSplit + val c = l.length/2 + val (first, second) = l.splitAtIndex(c) // evenSplit val (s1, s2) = parallel(msort(less)(first), msort(less)(second)) merge(less)(s1, s2) } - } ensuring { res => res.content == l.content && res.size == l.size } + } ensuring { res => res.content == l.content && + res.size == l.size } } -- GitLab