diff options
author | Unknown <leino@LEINO6.redmond.corp.microsoft.com> | 2012-06-14 13:34:20 -0700 |
---|---|---|
committer | Unknown <leino@LEINO6.redmond.corp.microsoft.com> | 2012-06-14 13:34:20 -0700 |
commit | 1f267ac0d7daf434ed4db31d23914428149297bc (patch) | |
tree | 1fac043fb9493e7f17e533de39f030c87c298d92 /Test/dafny2/TuringFactorial.dfy | |
parent | e07ce1423cf6b75adc8884d2d01e09b4d0f9519b (diff) |
Dafny: cleaned up test scripts a little
Diffstat (limited to 'Test/dafny2/TuringFactorial.dfy')
-rw-r--r-- | Test/dafny2/TuringFactorial.dfy | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/Test/dafny2/TuringFactorial.dfy b/Test/dafny2/TuringFactorial.dfy new file mode 100644 index 00000000..585c998e --- /dev/null +++ b/Test/dafny2/TuringFactorial.dfy @@ -0,0 +1,26 @@ +function Factorial(n: nat): nat
+{
+ if n == 0 then 1 else n * Factorial(n-1)
+}
+
+method ComputeFactorial(n: int) returns (u: int)
+ requires 1 <= n;
+ ensures u == Factorial(n);
+{
+ var r := 1;
+ u := 1;
+ while (r < n)
+ invariant r <= n;
+ invariant u == Factorial(r);
+ {
+ var v, s := u, 1;
+ while (s < r + 1)
+ invariant s <= r + 1;
+ invariant v == Factorial(r) && u == s * Factorial(r);
+ {
+ u := u + v;
+ s := s + 1;
+ }
+ r := r + 1;
+ }
+}
|