This information was last updated on Dec 2, 2002.

This TODO list represents abbreviated notes to categorize the work directions and note progress (completed items have a - prefix). Items are expanded as the work thread moves into that subject. There is no priority and no schedule. The ratio is (# of completed task per section)/(total completed tasks) and is a measure of the ratio of effort between areas. Completed tasks are marked with a - in column 1 (+ indicates changes since last update) (22/108) Pristine sources is the main thread of developing Axiom ( 2/108) Splits are pieces of work to give away ( 2/108) Joins are pieces of work to incorporate or cooperate with (29/108) New Development is a list of ideas for new directions or needed work (13/108) Research is a list of ideas that need investigation (40/108) Community is a list of supporting tasks for the algebra community ************************************************************************** PRISTINE SOURCES (22/108) Motivation: create a new source tree and slowly migrate original NAG/IBM sources into the tree. This will ensure that only things that are properly required, used and tested get shipped. Further ensure that everything exists under make/cvs control. - create top level directories - create top level makefile - build src - build lisp - hand build lisp - integrate into makefile /spad/lsp/gcl/h/386-linux.defs has EXTRAS code that refs ${OBJ}/${SYS} this code needs to be compiled before the gcl image is linked this code needs to be compiled for specific systems split the gcl changes out as patches to apply to the zip file - rebuild automatically - integrate the unzip - integrate the patching - automate the build - build bootsys - hand build bootsys + integrate into makefile + rebuild automatically + rewrite into pamphlets - build depsys - hand build depsys - integrate into makefile rebuild automatically + rewrite into pamphlets build interpsys hand build interpsys fix bicase issue fix missing symbols in runtime issue integrate into makefile rebuild automatically + rewrite into pamphlets build algebra hand build interpsys integrate into makefile rebuild automatically rewrite into pamphlets build tests hand build tests integrate into makefile rebuild automatically rewrite into pamphlets destroy and rebuild automatically - build CVS import /spad investigate automake - obtain license move to Savannah develop compile farm ************************************************************************** SPLITS (2/108) Motivation: several pieces of the system have nothing to do with algebra and either have old technology that needs to be rewritten or common technology that ought to be contributed to other efforts. HYPERTEX->BROWSER/TEX Motivation: hypertex was pre-browser technology. It should be rewritten to fit into today's technology. At least HTML, possibly XML. ASQ->JAVADOC/DOC++ Motivation: asq is pre-javadoc. It should be rewritten to fit into the browser/tex new world of docs PLOT->GNUPLOT Motivation: plot has nothing to do with algebra but has some nice features such as data feedback from graph manipulation. These facilities should be moved to Gnuplot and the plot function retargetted. READ-EVAL-PRINT->TeXmacs Motivation: the time has come for 2d input. TeXmacs provides this. There needs to be a much tighter integration of TeXmacs and Axiom. Connect to TeXmacs community + Build TeXmacs on Linux + Build TexMacs on Cygwin Build TexMacs on Windows AXIOM I/O->COMMON SYNTAX Motivation: Rosetta should not exist. Algebra syntax should standardize. Existing committee work needs feedback from Axiom. AXIOM TEST SUITE->COMMON TEST SUITE Motivation: Algebra needs a hand-verified test suite which ought to be shared with other computer algebra systems. Needs a common syntax, could be a driver for previous item. ************************************************************************** JOINS (2/108) Motivation: there are several CA systems with very interesting features and/or algebra. Axiom needs to import these ideas or find ways to cooperate with these projects. GAP->AXIOM Motivation: GAP has much stronger facilities for manipulating groups. Axiom can do group manipulation but GAP needs to be studied. OCTAVE->AXIOM Motivation: Octave has the capability to be a replacement for the NAG numeric libraries. Either an interface has to be retargetted or the code has to be ported to Aldor or Lisp. - Test rewriting Fortran code into Aldor MAGNUS->AXIOM Motivation: Magnus is strong in infinite group theory. Like GAP it needs to be studied and imported. - Discussion and proposal for work in this area with CCNY ASTRONOMER->AXIOM Motivation: Internal representation of polynomials that can be scaled to ~250k terms needs to be imported. COMBINAT->AXIOM Motivation: External basis representation of large polynomials needs to be imported. MATHEMATICA->AXIOM Motivation: Workbooks need to be imported. ************************************************************************** NEW DEVELOPMENT (29/108) EXTERNALS DOCUMENTATION Motivation: in order to allow users to use the system we need to collect and organize the documentation and help facilities. INTERNALS DOCUMENTATION Motivation: in order to allow multiple developers to work on the system the structure of the system needs to be explained. - Directory structure - document shell script Makefile structure - document how the makefile tree works + Lisp structure src structure algebra + boot clef doc etc graph htex hyper include input interp install + lib lsp + noweb paste sman ALGEGRA DOCUMENTATION LITERATE PROGRAMMING Motivation: algebra code should be able to include research papers and documentation of design choices, space, time and complexity. Researchers should be encouraged to write literate programs. Literate programs should be easily turned into book sections or chapters. - seek appropriate tools - tangle, weave - cweb - noweb - seek feedback - create preliminary setup - create example pamphlet (DHMATRIX) - define doc structure - prototype + modify/rewrite noweb + make undefined chunks transparent + example generation test case generation - create booklet example (MATRIX) define booklet structure prototype + integrate into make + integrate into obj/mnt integrate example (DHMATRIX2) into make integrate book example into make write pamphlets for type hierarchy write SetCategory pamphlet integrate into make integrate into test write pamphlets for data structure hierarchy write aggregate pamphlet integrate into make integrate into test create example pamphlet from scratch (PRIMES is in P algorithm) recreate paper in tex write algorithm create complex pamphlet (Barry Trager's Integration thesis) - recreate thesis in tex factor thesis into booklets factor booklets into pamphlets SINGLE-STEPPING Motivation: Users of algebra should be able to step thru algorithms at some "appropriate" level of detail. Hard to do as most algebra algorithms differ from hand methods. LIBRARY CLEANUP Motivation: FullyExplicitRingOver needs a better theory basis, etc. GCL BUILD Motivation: run on a popular common lisp - Download GCL - Build image in /spad/lsp/gcl + Build Axiom on image CMUCL BUILD Motivation: run on a popular common lisp Download CMUCL sources Build image in /spad/lsp/cmucl Build Axiom on image CCL BUILD Motivation: run on a popular common lisp - Get final CCL sources from Arthur - Build image in /spad/lsp/ccl + Build Axiom on image ************************************************************************** RESEARCH (13/108) AXIOM JOURNAL Motivation: Provide a motivation and place to publish Axiom algorithms in a literate programming style. Journal development will require refereed papers. + Discuss with Community Contact TOMS at ACM Create License for pamphlet submission + Create Prototype online site (www.nongnu.org/axiom/Journal) Create Journal directory Structure pages similar to Journal Integrate into CVS Allow dynamic referee lists Research online/offline references to Axiom in literature Create citations bibliography Get permission to mirror/host published papers COMPLEXITY Motivation: Axiom is fully layered. Research results in the lowest layers can be leveraged to generate results in higher layers. Use Axiom against itself to create towers of complexity. Insist on complexity results in documentation. TEXTBOOK OBJECT Motivation: Axiom interpreter objects don't have a standard name for their parts and do not have a manipulation language for rewriting parts. idea: have a "tree" primitive for each type idea: define a graph of tree to tree maps that label each edge with the transformation applied to the subtree TEXTBOOK CONTEXT Motivation: Equations are ambiguous when standing alone. Textbooks provide context in the surrounding text. This is not adequately captured by the type system. A new approach to this issue is required. OPEN PROBLEMS LIST Motivation: Magnus maintains a community agreed-upon list of "open problems" This is an excellent source of PhD work and a good focus mechanism. Create and maintain this. PROVISOS Motivation: Assume is a weak, global mechanism for capturing provisos. A new proviso object needs to exist that wraps existing objects, provides scope for provisos and provides an algebra of provisos based on type (arithmetic, boolean, typed, etc). - Review the literature to extract proviso forms. - Classify proviso forms. - Draft research paper Develop an arithmetic of proviso forms. INTERVAL ARITHMETIC Motivation: This is a fundamentally stronger way to represent uncertainty in results. It needs to be lifted from the numeric domain and defined symbolically. It needs to be integrated into the proviso algebra. Document interval.as algebra domain DOMAIN INTEGRATION Motivation: Axiom would be strongly useful in domains such as robotics. Areas such as backsolving of joint position can be fruitful areas of research. Deep integration in domains (DSP, Vision) needs to be pushed. SEMI-ANALYTIC SOLUTIONS Motivation: Axiom could provide parallel tasks that would continuously try to extract analytic solutions from incoming data. For example, in vision finding analytic edges to feed to a parallel recognizer algorithm. GAMES INTEGRATION Motivation: Axiom can be used to model games in novel ways. For example, flight games with pursuit curves that live in a non-uniform space (planet gravity, changing density across air/water). CONSTRAINED MODELS Motivation: Force motion that always remains analytic. Thus the final solution is known to be analytic. For example, constrain intersecting pipes to known boundary conditions. Computational geometry seems the most fruitful area. VALIDATION and VERIFICATION Motivation: Algebra systems need a high level of confidence in the results. Hand checking of the results is difficult and expensive. Automatically substituting results into the original equations could raise confidence. Auditing of boundaries of algebra algorithms. Precondition/Postcondition results for domains. Audited test suites used for regression testing. ALGEBRA MANIPULATION LANGUAGE Motivation: Algebra systems have interpreters that embody a lot of knowledge about the actions available to manipulate equations. This knowledge needs a language. The language needs to be crafted so that it can be added to domains and applied in symbolic form by a generalized simplification routine. Review the literature to extract manipulation sentences. Classify manipulation forms. Draft manipulation paper BOYER-MOORE THEOREM PROVER INTEGRATION Motivation: Computational logic is a branch of computer mathematics that is not currently available in Axiom. The Boyer-Moore theorem prover, written in common lisp, provides a good general purpose platform to study the interaction of the theorem proving systems with Axiom - Contact Boyer & Moore - Contact Chandy & Misra - Download ACL2 Build ACL2 Invoke ACL2 from Axiom Integrate ACL2 into Axiom Use Dijkstra's methods against SetCategory Draft research paper MetaPRL THEOREM PROVER Application Motivation: MetaPRL is a Higher-order Logic proof system that is well suited to proving Axiom-style languages. The proofs from this system would give higher confidence levels in the correctness of Axiom's algorithms. - Contact Artimov - Review nuprl - Review MetaPRL + Construct trial example + Collect all sorting routines in Axiom Model the required subset of Axiom's language Construct a proof of the sort algorithms ************************************************************************** COMMUNITY (40/108) COLLECT AXIOM ALGEBRA DEVELOPERS Motivation: Work in Axiom has continued over the years but has not been integrated. Find this work and integrate it. COLLECT AXIOM KNOWN BUGS Motivation: Axiom has known bugs. Create a known bug list. Integrate fixes for catdef Integrate fixes for pleqn TRAIN AXIOM INTERNAL DEVELOPERS Motivation: Many of the subtasks listed above can be split off, done in parallel and lead independently. Find people who are interested, especially external projects (eg work with Gnuplot to enhance it with Axiom's abilities). + Set up cvs on Tenkan + Set up accounts for developers + Import current Axiom tree into CVS + Try system builds on developers machines + Exchange code via CVS + Expand platforms + Cygwin + Mingw + FreeBSD SUPPORT FRENCH WORK Motivation: An organized community will help focus new Axiom development. - Lyon conference presentation - Set up OSCAS group - Announce OSCAS group - Moderate OSCAS group SET UP SAVANNAH Motivation: Community needs all the usual tools enabled like bug list, mailing list, cvs, etc. - Set up mirror CVS (to verify that public CVS will be correct) import original code export original code - Contact FSF about creating Axiom on Savannah - Set up Homepage - Set up Mail list - Set up Bugs list - Set up News - announce Axiom site creation Set up CVS + import License directory import code Set up Journal + create initial webpages - Developer mailing list created ROSETTA Motivation: the community needs to see and use the many open source computer algebra systems so they can compare and contrast the various systems. This will help focus the issues of what is currently possible and how hard it is to develop a large, general purpose system. Also useful for teaching. - Build Rosetta CD - collect open source systems - build them on a common subtree - write Rosetta document - write them to CD such that they can be run with installation - distribute CD to conferences, teachers, etc Update Rosetta CD add Axiom fix mistakes add paragraph per table update Rosetta document for Giac update Rosetta document for DoCon update Rosetta document for Macsyma write Meta-Rosetta document to expound on differences integrate systems with browser front-end build broken systems feed back diffs to original projects add new systems find new customers AXIOM WEBSITE Motivation: maintain a temporary website so that progress on making Axiom open-source is made visible and the community has a place to discuss issues and ideas (not necessarily related to Axiom but to the community in general). - create website - build interest list - create and maintain update schedule - tombstone website EXPLORE FUNDING MODELS Motivation: Find creative ways to pay people who work on Axiom. Everybody wants free developers but paid work will motivate development. Academic degree (BA in open source? BA in computer algebra?) Grant model by line of code - contact IBM - contact SUN contact NSF contact INRIA contact DARPA explore other contacts Award Model - Schelter Award - contact UTexas - contact FSF develop plan define award type and frequency find sponsor organization - Efraim Armendariz- Brad Kuhn find volunteers to judge award Oscars/Emmy/Tony award model for CA at ISSAC? Pay for support model