For the newsletter at: FILL IN
Run with Dafny 4.6.0, with the flag --standard-libraries
.
For the newsletter at: FILL IN
Run with Dafny 4.6.0, with the flag --standard-libraries
.
import opened Std.Collections.Seq | |
import opened Std.Wrappers | |
method FindPredecessor(s: seq<int>, x: int) returns (r: Option<int>) | |
ensures if r.None? then x !in s | |
else s[IndexOf(s, r.value)+1] == x | |
{ | |
var index := IndexOfOption(s, x); | |
if index == None { | |
return None; | |
} | |
else | |
{ | |
var v := index.Extract(); | |
return Some(s[v-1]); | |
} | |
} |
(7,18): Error: index out of range | |
| | |
7 | else s[IndexOf(s, r.value)+1] == x | |
| ^^^^^^^^^^^^^^^^^^^^^^^ | |
(7,20): Error: function precondition could not be proved | |
| | |
7 | else s[IndexOf(s, r.value)+1] == x | |
| ^^^^^^^^^^^^^^^^^^^ | |
DafnyStandardLibraries.dfy(6627,13): Related location | |
| | |
6627 | requires v in xs | |
| ^^^^^^^ | |
(19,4): Error: a postcondition could not be proved on this return path | |
| | |
19 | return Some(s[v-1]); | |
| ^^^^^^ | |
(7,18): Related location: this is the postcondition that could not be proved | |
| | |
7 | else s[IndexOf(s, r.value)+1] == x | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
(19,16): Error: index out of range | |
| | |
19 | return Some(s[v-1]); |
import opened Std.Collections.Seq | |
import opened Std.Wrappers | |
method FindPredecessor(s: seq<int>, x: int) returns (r: Option<int>) | |
ensures if r.None? then x !in s | |
else if r.value == |s|-1 then s[0] == x | |
else s[IndexOf(s, r.value)+1] == x | |
{ | |
var index := IndexOfOption(s, x); | |
if index == None { | |
return None; | |
} | |
else if index.Extract() == 0 { | |
return Some(s[|s|-1]); | |
} | |
else | |
{ | |
var v := index.Extract(); | |
return Some(s[v-1]); | |
} | |
} |
(7,42): Error: index out of range | |
| | |
7 | else if r.value == |s|-1 then s[0] == x | |
| ^^^ | |
(8,17): Error: index out of range | |
| | |
8 | else s[IndexOf(s, r.value)+1] == x | |
| ^^^^^^^^^^^^^^^^^^^^^^^ | |
(8,19): Error: function precondition could not be proved | |
| | |
8 | else s[IndexOf(s, r.value)+1] == x | |
| ^^^^^^^^^^^^^^^^^^^ | |
DafnyStandardLibraries.dfy(6627,13): Related location | |
| | |
6627 | requires v in xs | |
| ^^^^^^^ | |
(15,4): Error: a postcondition could not be proved on this return path | |
| | |
15 | return Some(s[|s|-1]); | |
| ^^^^^^ | |
(8,17): Related location: this is the postcondition that could not be proved | |
| | |
8 | else s[IndexOf(s, r.value)+1] == x | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
(20,4): Error: a postcondition could not be proved on this return path | |
| | |
20 | return Some(s[v-1]); | |
| ^^^^^^ | |
(7,42): Related location: this is the postcondition that could not be proved | |
| | |
7 | else if r.value == |s|-1 then s[0] == x | |
| ^^^^^^^^^ | |