From bee510e98ac382ecaa8520080ca8efbd5f6ccd69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Blanc?= <regwblanc@gmail.com> Date: Thu, 13 Dec 2012 14:44:21 +0100 Subject: [PATCH] add euclidian division testcase for verification. Prove validity --- testcases/master-thesis-regis/Arithmetic.scala | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/testcases/master-thesis-regis/Arithmetic.scala b/testcases/master-thesis-regis/Arithmetic.scala index 9173132e0..2b90bda91 100644 --- a/testcases/master-thesis-regis/Arithmetic.scala +++ b/testcases/master-thesis-regis/Arithmetic.scala @@ -70,4 +70,15 @@ object Arithmetic { r } ensuring(_ >= n) + def divide(x: Int, y: Int): (Int, Int) = { + require(x >= 0 && y > 0) + var r = x + var q = 0 + (while(r >= y) { + r = r - y + q = q + 1 + }) invariant(x == y*q + r && r >= 0) + (q, r) + } ensuring(res => x == y*res._1 + res._2 && res._2 >= 0 && res._2 < y) + } -- GitLab