Bill Casselman's Servlet Page
The PrintServlet
The PrintServlet is a servlet which allows certain
applets on this server to get a printed version of themselves.
Eventually, the package will be made
publicly available, and should be easy to port to
other servers. In particular, writing applets that use it
should be extremely simple, and will require
no understanding of servlets. At the moment it has been run only
with ApacheJServ running as
an extension of the Apache server.
This project involves three basic Java programs:
(1) the PrintableApplet, an abstract class requiring a method
toHTML(); (2) the HttpMessage class from the book
Java Servlets Programming (Jason Hunter with help from
William Crawford, published by
O'Reilly);
(3) the PrintServlet, which receives printing requests from a PrintableApplet
and then displays a printable version of the applet
on a new browser window.
A sample printable applet
Source code:
(1) PrintableApplet.java;
(2) TestPrint.java (a sample PrintableApplet)
(3) PrintServlet.java
An Internet spreadsheet
One of the most interesting applications of the
PrintServlet will be used to allow users of the Internet spreadsheet
being developed by David Austin and myself to get printed
output from the spreadsheet.
The Coxeter group servlet
There are several programs which allow one to
work with Coxeter groups and in particular to
calculate Kazhdan-Lusztig polynomials.
-
The symbolic
program GAP can also calculate KL polynomials to
a limited extent, but it is terribly slow.
On the other hand, the output can be integrated easily
with other data from the GAP interpreter.
-
Mark Goresky wrote a well known one in Pascal
somewhat later, and although his program is
rather slow, it was the first to
provide widely circulated data (in the well know "Green Book").
He has made these data available for several
groups, including a few affine Coxeter groups that were not accounted for
in the original distribution.
-
The original efficient program for this purpose was written
by Dean Alvis, I believe in FORTRAN, but does not seem to have been made
publicly available. Its greatest accomplishment was to verify that
the Kazhdan-Lusztig polynomials for the group
H4, which is not associated to
a flag manifold, have non-negative coefficients.
Even nowadays calculating the KL polynomials for H4
is a highly non-trivial achievement. The cause of
the difficulty is that although the group
is not large (14,400 elements), the length of its
longest element is quite large, which means that
the recursive calculation of KL polynomials is tedious.
-
The most notable one is
the program coxeter developed by Fokko
DuCloux, written originally in C and then rewritten in C++.
It is ridiculously fast and publicly available, compiles easily
on most computers, and has output which is convenient
for humans to read. Its worst drawbacks are that it
deals only with finite Coxeter groups, that the output
is not so easy to scan by computer, and that it is difficult to
modify.
I have written a suite of programs in Java that will calculate
various things about Coxeter groups. They are a bit slower than
DuCloux's program, but still fairly efficient, and at the moment wasteful in
memory use. Eventually they should be modular
enough to be easily incorporated
into other Java programs, but that is not so at the moment.
They will, at any rate, work for any Coxeter group
described by its Coxeter matrix, as well as for any
root system described by its Dynkin diagram.
They are at the moment too cumbersome to
be run as an applet except for rather small groups,
but in the near future I will collect
output for various groups
at this site. These would be convenient to
have available in HTML format,
so one could locate data by traversing
hypertext links, but the HTML files for
even a small group would to large to allow this
(several megabytes for F4, for example). On the other hand,
the basic data files are quite small. So I intend to
write a collection of applets
and servlet which will provide the data as a simulated
HTML file (or set of such files), which should
be almost as useful in allowing one to
navigate the data - chasing around the W-graph,
for example.