diff --git a/src/test/resources/regression/verification/xlang/valid/Arithmetic.scala b/src/test/resources/regression/verification/xlang/valid/Arithmetic.scala
new file mode 100644
index 0000000000000000000000000000000000000000..be6246813ee92172c46f735aecf0a747d6f4c9ec
--- /dev/null
+++ b/src/test/resources/regression/verification/xlang/valid/Arithmetic.scala
@@ -0,0 +1,66 @@
+import leon.Utils._
+
+object Arithmetic {
+
+  /* VSTTE 2008 - Dafny paper */
+  def mult(x : Int, y : Int): Int = ({
+    var r = 0
+    if(y < 0) {
+      var n = y
+      (while(n != 0) {
+        r = r - x
+        n = n + 1
+      }) invariant(r == x * (y - n) && 0 <= -n)
+    } else {
+      var n = y
+      (while(n != 0) {
+        r = r + x
+        n = n - 1
+      }) invariant(r == x * (y - n) && 0 <= n)
+    }
+    r
+  }) ensuring(_ == x*y)
+
+  /* VSTTE 2008 - Dafny paper */
+  def add(x : Int, y : Int): Int = ({
+    var r = x
+    if(y < 0) {
+      var n = y
+      (while(n != 0) {
+        r = r - 1
+        n = n + 1
+      }) invariant(r == x + y - n && 0 <= -n)
+    } else {
+      var n = y
+      (while(n != 0) {
+        r = r + 1
+        n = n - 1
+      }) invariant(r == x + y - n && 0 <= n)
+    }
+    r
+  }) ensuring(_ == x+y)
+
+
+  def sum(n: Int): Int = {
+    require(n >= 0)
+    var r = 0
+    var i = 0
+    (while(i < n) {
+      i = i + 1
+      r = r + i
+    }) invariant(r >= i && i >= 0 && r >= 0)
+    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)
+
+}