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