by Kai Kaminski ## SynopsisThe goal of this project is to provide a portable and user-friendly graphical user interface for the Axiom computer algebra system. The implementation described in this proposal takes advantage of the capabilities of modern web browsers to achieve both goals. ## Benefits to the Lisp/OSS communityThe Common Lisp community will benefit from this project in three ways. First of all new libraries will be created, for example to generate well-formed SVG (and possibly X3D) output. Already available libraries will receive testing on multiple platforms and consequent improvements if necessary. Finally it will serve as an example for the construction of platform independent user interfaces. For the broader OSS community the most interesting aspect of this project will be easier access to the Axiom computer algebra system. Axiom is unique among open source projects through its scope and vision. It strives to provide and open and powerful platform for computational mathematics and related fields (see [1] for details). Its potential users are researchers, teachers and students alike. While the kernel of Axiom is very mature after more than thirty years of ongoing development, the need of a modern, portable user interface has become obvious. [1] http://wiki.fricas.org/AxiomStrengths ## DeliverablesThe graphical user interface described in this proposal will have the following properties: - It allows interaction with Axiom in a fashion similar to
Mathematica, that is
- one can browse the Axiom hypertext documentation
- it is possible to enter a command on a page and have the input as well as the result appended to the same page without a page reload
- mathematical expressions are displayed in reasonable quality almost matching that of TeX
- It is portable to most platforms including but not limited to Linux/Unix running Firefox, Windows running IE or Firefox, and MacOS? X running Safari or Firefox.
- It is able to display static two-dimensional plots generated by Axiom. The plots are of production quality so that they can be used in scientific publications. Animated two-dimensional and three-dimensional plots will be easy to integrate. In fact, this will be implemented during this project if time permits.
- It is solely implemented in portable Common Lisp and languages which are understood by web browser, i.e. HTML, Javascript, CSS. It does not require any external programs beyond a web browser or the use of a foreign function interface. It tries to conform to existing or upcoming W3C standards as far as possible.
- It meets all other requirements contained in the project description at http://www.alphageeksinc.com/cgi-bin/lispnyc.cgi?AxiomUI. The code will also adhere to the general coding standards and design guidelines of the Axiom project, e.g. literal programming.
## Project DetailsAxiomUI will consist of two components. A simple, standalone http server written in Common Lisp and a collection of Javascript functions. The server component connects to Axiom and provides the Javascript front-end access to Axiom's mathematical functionality. It is also responsible for converting the pages of the Axiom hypertext system to HTML. The Javascript component will change the web browser into a fully featured user interface. The most important aspects are to support the user entering commands and to dynamically modify the page to incorporate Axiom's answers to the user's requests. Furthermore the Javascript component will provide convenience functions, e.g. writing a transcript of the session as a LaTeX document. ## Implementation of the serverThe server will contain a small portability layer for networking and possibly file i/o. Beyond that it is written in ANSI Common Lisp. The other components of the server are a parser for Axiom's hypertext page description language, HTML and SVG generators and code to implement the Ajax mechanism and to translate messages between the Javascript front-end and Axiom. The parser for the Axiom hypertext documentation pages will probably be written from scratch. If convenient existing parser generators for Common Lisp might be used. To display static two-dimensional plots the server will generate SVG files. SVG allows a high degree of control over the appearance of the output and is reasonably well supported by modern browser. There are also free viewers for a wide range of platforms. As a bonus, SVG files allow the embedding of Javascript. This could be used to create animations or even embed some controls for the modification of a plot into the corresponding SVG file. ## Implementation of the Javascript front-endThe Javascript front-end will be written from scratch apart from jsMath, a library which allows the display of complicated mathematical formulas in browser without MathML support. While MathML would be the cleaner way to display mathematics in a web browser it is not sufficiently well supported by current browsers. A later release of AxiomUI might of course take advantage of the then (hopefully) improved MathML support. Using jsMath has the additional advantage that it will not be necessary to parse LaTeX math syntax and convert it to MathML, a non-trivial problem. While working on this proposal the author implemented prototypes for some of the techniques described above to make sure that this implementation strategy actually works. here |

AxiomUI source code--Bill Page, Tue, 05 Sep 2006 19:44:06 -0500 reply