Open DavePearce opened 2 years ago
Some observations from the move prover (see here):
Vec T
for implementing arrays.Memory T
for implementing a memory holding type T
.int
types. This will be useful for Whiley when I remove byte
.See also this paper:
More thoughts:
procedure
ever be pure? If not cannot implement Whiley function
perfectly using them.property
call functions
? If not, could inline their preconditions. Also use a separate check for their return values / internal conditions.Useful documentation on Boogie:
To Look At:
(see also #72, #120 and #142)
This is an attempt to log the various problems with the current approach.
function
as a boogiefunction
is fraught with difficulties (why?). A better solution would be to translate them asprocedures
. This has a bunch of knock-on effects. In particular, we cannot use preconditions / postconditions inprocedures
. Instead, we must useassume
andassert
statements. Also, it means function calls have to be pulled out of expressions. In effect, we end up with something much closer to bytecode.procedure
is required for this.Vec
. See also #109. Questions remain around the heap and template.<A>[ref, Field A]A
for representing parts of the heap (seeMemory T
below). Boogie also has built-in support for "sequences" (see here), and supports tuple assignments.{:msg "your text goes here"}