Layered Separation Analysis (DEEL) for Camelot.
===============================================
by Michal Konecny

System requirements:

Tested to work with Linux ghc 5.04.3.
(The relevant bit of WASH/HTML 0.9 is now in the repository.)
HTML output works well with a recent Mozilla.
It does NOT work with my Netscape 4.8 and Opera 7.11.

Usage:

Make will create the executable "check_sharing".  It finds the
principal DEEL typing for a normalised Camelot program.  If the typing
is inconsistent, it reports which functions failed and exits.  A HTML
output can be used to view the typing.  Optionally, check_sharing will
mark match clauses as destructive whenever it finds that it is safe.

The program can be used in its own right (see "check_sharing -h") but
is expected to be mainly called by Camelot when required.  Camelot
currently calls check_sharing when called with the option -ll or -lu.
Use Camelot with -ll and -od to activate destructive match inference
and with -ll and -lb to get a HTML debug output.

Todo:

*
  David and Martin's usage aspect analysis could be added as an
  alternative typing.  Cartesian products which are in the usage
  aspect system are not present in Camelot because the only product
  present is the implicit one in datatypes and it has to be tensor
  owing to the form of matching.

*
  In the destructive match inference, it can be useful to split a
  function into several with different destruction behaviours.
  Such automatic splitting can be added fairly easily.
  I would like to do it soon.


Source files:

Deec_main.hs
Camelot_absyn.hs : import original Camelot syntax via ASDL
Camelot_annot.hs : a DEEL annotated syntax and translations
Camelot_infer_annot.hs : DEEL principal typing and layered liveness inference
Camelot_infer_destr.hs : destruction transformation based on liveness info
Camelot_annot_html.hs : HTML visualisation of annotated programs using WASH
Camelot_annot_UA.hs : usage aspects NOT YET, these are only dummies
Camelot_infer_annot_UA.hs
Camelot_infer_destr_UA.hs
Misc.hs : misc general stuff

