Language with Specified Procedures
Program is a collection of procedures.
Two kinds of variables:
- global variables, visible and modifiable by all procedures
- local variables, for each procedure
New statement: procedure call.
x = p(x1,...,xN)
Each procedure has its
- precondition
- postcondition
Syntax summary:
c ::= x=T | x.f=T | x=new | x=P(x1,...,xN)
assert(F) | assume(F) | havoc x |
(if (F) c else c) | c ; c | (while (F) c)
D ::= proc P(x1:Obj,...,xn:Obj) : Obj
requires F
ensures F
{ c; return T }