summaryrefslogtreecommitdiff
path: root/Test/dafny0
diff options
context:
space:
mode:
authorGravatar Clément Pit--Claudel <clement.pitclaudel@live.com>2015-08-28 22:50:37 -0700
committerGravatar Clément Pit--Claudel <clement.pitclaudel@live.com>2015-08-28 22:50:37 -0700
commit677619075af8ef30793a2a2e078a764b21be5913 (patch)
treee393823c1a7a53a5b80ef4128bdbceabda5a2bb5 /Test/dafny0
parentf3cfd7a9994af3518655bc4d1d77eeb3619b0999 (diff)
Add a small test from a discussion with Bryan
Diffstat (limited to 'Test/dafny0')
-rw-r--r--Test/dafny0/fun-with-slices.dfy19
-rw-r--r--Test/dafny0/fun-with-slices.dfy.expect2
2 files changed, 21 insertions, 0 deletions
diff --git a/Test/dafny0/fun-with-slices.dfy b/Test/dafny0/fun-with-slices.dfy
new file mode 100644
index 00000000..3d8da242
--- /dev/null
+++ b/Test/dafny0/fun-with-slices.dfy
@@ -0,0 +1,19 @@
+// RUN: %dafny /compile:0 /print:"%t.print" /dprint:"%t.dprint" "%s" > "%t"
+// RUN: %diff "%s.expect" "%t"
+
+// This test was contributed by Bryan. It has shown some instabilities in the past.
+
+method seqIntoArray<A>(s: seq<A>, a: array<A>, index: nat)
+ requires a != null
+ requires index + |s| <= a.Length
+ modifies a
+ ensures a[..] == old(a[0..index]) + s + old(a[index + |s|..]) {
+ var i := index;
+
+ while i < index + |s|
+ invariant index <= i <= index + |s| <= a.Length
+ invariant a[..] == old(a[0..index]) + s[0..(i-index)] + old(a[i..]) {
+ a[i] := s[i - index];
+ i := i + 1;
+ }
+}
diff --git a/Test/dafny0/fun-with-slices.dfy.expect b/Test/dafny0/fun-with-slices.dfy.expect
new file mode 100644
index 00000000..069e7767
--- /dev/null
+++ b/Test/dafny0/fun-with-slices.dfy.expect
@@ -0,0 +1,2 @@
+
+Dafny program verifier finished with 2 verified, 0 errors