Assignment Number 2

Please remember, while you are allowed to discuss the problem
definition and design issues with your peers, your solution to
these task should be your own!

1. Extend the syntax of the IMP language so that the Aexp are now:

	a::= n | X | a0 + a1 | a0 - a1 | a0 * a1 | c resultis a

(note that the definition of the syntax is now mutually recursive)

where "c resultis a" means perform the command c, change the state
as appropriate, then return the value of a in the new state.

(note that since commands are now part of Aexp [and by extension,
Bexp], both Aexp and Bexps can now change the state and return a value)

Create an operational semantics (extend the IMP version) for this
new language.


2.  Exercise 3.2 on page 28.

3.  Exercise 3.13 on page 40.

4.  Revisit pages 58-59.  Remember that any state "little sigma"
is actually a function from names to values.
(i.e. sigma: names -> values)
What then is the full type expression (only in terms of names, 
values and arrows) of the "Big Gamma" operator (that
induces the least fixed point on meaning of the while statement)?


This assignment is due in class by 10/22/96 (so that's done
before the exam, don't you know....)