In this assignment you take your solution and my comments from the
and add to these the procedures and context as in Section 2.5.
The resulting implementation should be able to handle the Embellished
Monotone Frameworks of that section and offer easy to use functions
for building such frameworks.
Relatively little information will be given, which means
that you have quite a degree of freedom filling in the details, and making
the right abstractions.
One of the criteria for grading, is how you have handled these choices.
The assignment may be done alone or, preferably, in pairs.
Every student should be able to explain orally and clearly
every part of the assignment he hands in. The lecturer has the freedom
to ask this explanation at any time, meaning that you might not be warned
Materials which you can use
Use your program submitted earlier as a starting point, and include my
remarks on your implementation.
For this assignment I expect
- the embellished monotone framework implementation (with procedures and
context), fulfilling all the usual
prerequisites such as being well-structured, well-documented and so
- a (short) manual describing how to use the program,
- a high level description of the architecture of your program including
how you encoded monotone frameworks, adding context,
transfer functions and the
various other concepts from the chapter,
- implement the Live Variable analysis based on your answers from
Part 5 of the dataflow assignment.
Give an example program with procedures which sufficiently illustrate your
implementation. Show on paper that the results are what you expect (give the
equations that should be generated, fill in the computed answers and show
that the equations hold; show additionally that the computed answers
are what you would expect for the given program).
- extend the Detection Of Signs analysis to procedures (take a look
at Example 2.36 for inspiration).
Give an example program with procedures which sufficiently illustrates
your implementation. Show on paper
that the results are what you expect.
When and how to hand things in
See Course Assignments
Experiences from previous years
See the Experience section of MonotoneFrameworksPartOne
Make sure that your system is general enough to handle contexts that are
as arbitrary as possible. In many implementations the students stuck to using
call strings for instance, although they could have made things more general.
This was the major shortcoming last year. When you think about it, the
big difference lies in the fact that a procedure entry and exit imply
that information associated with a certain context value is transferred
to information for a different context value. This
is the major change
and you should think carefully how to cope with it.
Also make sure that you have ways of lifting an ordinary monotone framework to an
embellished one. I consider the interface to the people who want to build
new analyses very important. The more you can simplify for such people the better
(PS. I am not thinking in terms of buttons and such. In Haskell a good interface
is a large number of easy to use functions for building a new analysis).
- 15 Apr 2005