E ::= E:=E | E;E | if E then E
else E fi
| skip
| while E do E od | E+E
| E=E
| not E | @E | N | L
| I=E |E,E | with E do
E | I | lambdaI:theta. E | E E
theta ::= tauexp | comm | intloc |
pi | theta | theta
tau ::= int | bool
pi ::= {:theta}
pi |- E: intloc pi |- E: intexp
pi |- E:=E: comm
pi |- E: comm pi |- E: comm
pi |- E;E: comm
pi |- E: boolexp pi |- E: comm pi |- E: comm
pi |-
if E then E else E fi:
comm
pi |- skip: comm
pi |- E: boolexp pi |- E: comm
pi |-
while E do E od: comm
pi |- E: intexp pi |- E: intexp
pi |- E+E: intexp