The syntax of WhyML programs changed in release 0.80. The table in Figure A.1 summarizes the changes.
version 0.73 version 0.80 type t = {| field : int |} type t = { field : int } {| field = 5 |} { field = 5 } use import module M use import M let rec f (x:int) (y:int) : t
variant { t } with rel =
{ P }
e
{ Q }
| Exc1 -> { R1 }
| Exc2 n -> { R2 }let rec f (x:int) (y:int) : t
variant { t with rel }
requires { P }
ensures { Q }
raises { Exc1 -> R1
| Exc2 n -> R2 }
= eval f (x:int) (y:int) :
{ P }
t
writes a b
{ Q }
| Exc1 -> { R1 }
| Exc2 n -> { R2 }val f (x:int) (y:int) : t
requires { P }
writes { a, b }
ensures { Q }
raises { Exc1 -> R1
| Exc2 n -> R2 }val f : x:int -> y:int ->
{ P }
t
writes a b
{ Q }
| Exc1 -> { R1 }
| Exc2 n -> { R2 }val f (x y:int) : t
requires { P }
writes { a, b }
ensures { Q }
raises { Exc1 -> R1
| Exc2 n -> R2 }abstract e { Q } abstract e ensures { Q }
Figure A.1: Syntax changes from version 0.73 to version 0.80
The main new features with respect to Why 2.xx are the following.