P ::= D in C
D ::= fun I=E | proc I=C | const I=N
| alias I=L
| D_1,D_2 | D_1;D_2
C ::= L:=E | C_1;C_2 | if E then C_1
else C_2 fi
| while E do C od | skip
| call I
E ::= N | @L | E_1+E_2 | E_1=E_2 | not E | I
L ::= loc_i | I
N ::= n | I
Example:
fun F = @X+A;
proc P = X:=F;
in call P; X:=A; call P.