\documentclass{book}
%\newcommand{\VolumeName}{Volume 2: Axiom Users Guide}
%\input{bookheader.tex}
\pagenumbering{arabic}
\mainmatter
\setcounter{chapter}{0} % Chapter 1

\usepackage{makeidx}
\makeindex
\begin{document}
\begin{verbatim}
\start
Date: Mon, 3 Nov 2014 19:04:21 -0600
From: daly@axiom-developer.org
To: axiom-developer@nongnu.org
Subject: [Axiom-developer] Passing of Dr. Gilbert Baumslag

Gilbert Baumslag is the person who supported the development of
the open source version of Axiom, Magnus, and Doyen, 3 open source
projects I lead. I worked with Gilbert for several years at City
College of New York as part of his Center for Algorithms and
Interactive Scientific Software (CAISS). 

He was a joy to work with. I am sad to see him go.

This is the announcement from CCNY:
=============================================================

The Department of Mathematics marks with profound sadness 
the passing of Distinguished Professor Emeritus Gilbert 
Baumslag.

Professor Baumslag joined the department in 1973 as a 
Distinguished Professor of Mathematics and stayed with us 
until 2006 when he joined the CCNY Department of Computer 
Science. He was founding director of the Center for 
Algorithms and Interactive Scientific Software, which grew 
out of the MAGNUS computational group theory project he 
headed. MAGNUS was funded by the National Science
Foundation for 10 years. Dr. Baumslag was for more than 40 
years the primary organizer of the New York Group Theory 
Seminar, considered the foremost research seminar in group 
theory in the world. He was a visiting scholar at the 
Institute for Advanced Study in 1968-69, and
was inducted in 2012 as a member of the inaugural class of 
Fellows of the American Mathematical Society.

Gilbert Baumslag made many outstanding contributions to 
infinite group theory, particularly to the study of 
finitely presented groups. Many of these groups have nice 
algorithmic properties, with applications to cryptography 
and computer security and control. He published more
than 160 scientific papers, and numerous books and 
monographs; he graduated 30 doctoral students.

Dr. Baumslag was a popular teacher and an outgoing 
research instigator who generously shared his insights. He 
had a profound impact on the research and careers of many 
colleagues, as well as students who became colleagues. We 
will miss him.

There will be a memorial at the GC following Friday's
group theory seminar next week.

\start
Date: Mon, 3 Nov 2014 19:52:16 -0600
From: daly@axiom-developer.org
To: axiom-developer@nongnu.org
Subject: [Axiom-developer] Passing of Dr. Gilbert Baumslag

Gilbert Baumslag has died. 

It might not mean much to you but the world has lost another person
who founded and organized pioneering work in computational mathematics. 
Gilbert was the force behind Magnus, a system for Infinite Group Theory. 
Like Manuel Bronstein, he invented some of the fundamental algorithms. 
And, like Manuel, he is now gone.

I have tried over the years to document Magnus so that the ideas could
be understood by others. It is a large C++ program written by a person
who died a few years ago. That makes it very hard to ask questions.

We are losing the first generation authors of the big systems.  We are
unlikely to have research funding for such large systems in the future. 
We are unlikely to construct systems of this size and power anytime soon.

We must make an effort to document these systems so the next
generation can maintain, modify, and extend them. If we don't do this
then systems like Magnus will simply bit-rot. The algorithms will be
lost. The high level descriptions and ideas will remain buried in some
journal but, as we all know, there is a huge difference between a
paper description and a reduction to practice. Issues such as choice
of representation matter deeply and are not in the papers. Paper
algorithms rest on other algorithms, some of which are never
published. The details matter.

If nothing else, we need to raise the standard of computational
mathematics going forward so the next generation will not lose
the benefit of current work. It is vital that we document our work.
Otherwise our effort will go with us to the grave.

Tim

\start
Date: Wed, 5 Nov 2014 19:21:46 -0600
From: daly@axiom-developer.org
To: Kyriakos Kalorkoti <kk@inf.ed.ac.uk>
Subject: [Axiom-developer] Axiom read problem

The latest git push has a fix for the )read )quiet problem.
You should be able to do

   cd ~/axiom   (or whereever you put it)
   git pull
   export AXIOM=`pwd`/mnt/ubuntu
   export PATH=$AXIOM/bin:$PATH
   make clean
   make

Tim

\start
Date: Sat, 22 Nov 2014 01:12:39 -0600
From: daly@axiom-developer.org
To: axiom-developer@nongnu.org
Subject: [Axiom-developer] problems with integrate

Question from Thomas Baruchel

integrate((16*x^14-125*x^10+150*x^6+375*x^2)/(256*x^16+480*x^12+1025*x^8+750*x^4 +625),x=0..1)

          5
    (1)  --
         77
                   Type: Union(f1: OrderedCompletion(Expression(Integer)),...)
(2) -> integrate((16*x^14-125*x^10+150*x^6+375*x^2)/(256*x^16+480*x^12+1025*x^8+750*x^4 +625),x)

                7      3
              5x  + 35x
    (2)  -------------------
             8       4
         176x  + 165x  + 275
                                          Type: Union(Expression(Integer),...)
(3) -> D( (5*x^7+35*x^3)/(176*x^8+165*x^4+275) ,x)

                   14        10       6        2
              - 80x   - 2575x   + 350x  + 2625x
    (3)  -------------------------------------------
              16        12         8        4
         2816x   + 5280x   + 11275x  + 8250x  + 6875
                                           Type: Fraction(Polynomial(Integer))

\start
Date: Sat, 22 Nov 2014 15:47:17 +0100 (CET)
To: axiom-developer@nongnu.org
From: Waldek Hebisch <hebisch@math.uni.wroc.pl>
Subject: Re: [Axiom-developer] problems with integrate

Tim Daly wrote:
> 
> Question from Thomas Baruchel
> 
> integrate((16*x^14-125*x^10+150*x^6+375*x^2)/(256*x^16+480*x^12+1025*x^8+750*x^4 +625),x=0..1)
> 
>           5
>     (1)  --
>          77
>                    Type: Union(f1: OrderedCompletion(Expression(Integer)),...)
> (2) -> integrate((16*x^14-125*x^10+150*x^6+375*x^2)/(256*x^16+480*x^12+1025*x^8+750*x^4 +625),x)
> 
>                 7      3
>               5x  + 35x
>     (2)  -------------------
>              8       4
>          176x  + 165x  + 275
>                                           Type: Union(Expression(Integer),...)
> (3) -> D( (5*x^7+35*x^3)/(176*x^8+165*x^4+275) ,x)
> 
>                    14        10       6        2
>               - 80x   - 2575x   + 350x  + 2625x
>     (3)  -------------------------------------------
>               16        12         8        4
>          2816x   + 5280x   + 11275x  + 8250x  + 6875
>                                            Type: Fraction(Polynomial(Integer))


AFAICS logarithmic terms got lost.  FriCAS on the same input
produces ugly, long answer containing several logarithmic
terms.  The above agrees with rational part of FriCAS answer.
Old code contained a bug which sometimes caused such effect.

-- 
                              Waldek Hebisch
hebisch@math.uni.wroc.pl 

\start
Date: Sat, 22 Nov 2014 11:03:00 -0500
From: Raymond Rogers <raymond.rogers72@gmail.com>
To: axiom-developer@nongnu.org
Subject: Re: [Axiom-developer] problems with integrate

On 11/22/2014 09:47 AM, Waldek Hebisch wrote:
> Tim Daly wrote:
>> Question from Thomas Baruchel
>>
>> integrate((16*x^14-125*x^10+150*x^6+375*x^2)/(256*x^16+480*x^12+1025*x^8+750*x^4 +625),x=0..1)
>>
>>            5
>>      (1)  --
>>           77
>>                     Type: Union(f1: OrderedCompletion(Expression(Integer)),...)
>> (2) -> integrate((16*x^14-125*x^10+150*x^6+375*x^2)/(256*x^16+480*x^12+1025*x^8+750*x^4 +625),x)
>>
>>                  7      3
>>                5x  + 35x
>>      (2)  -------------------
>>               8       4
>>           176x  + 165x  + 275
>>                                            Type: Union(Expression(Integer),...)
>> (3) -> D( (5*x^7+35*x^3)/(176*x^8+165*x^4+275) ,x)
>>
>>                     14        10       6        2
>>                - 80x   - 2575x   + 350x  + 2625x
>>      (3)  -------------------------------------------
>>                16        12         8        4
>>           2816x   + 5280x   + 11275x  + 8250x  + 6875
>>                                             Type: Fraction(Polynomial(Integer))
>
> AFAICS logarithmic terms got lost.  FriCAS on the same input
> produces ugly, long answer containing several logarithmic
> terms.  The above agrees with rational part of FriCAS answer.
> Old code contained a bug which sometimes caused such effect.
>
A clue for someone competent?  In any case a work around for
Thomas Baruchel

54) -> cc
(54) ->
              16       12        8       4
    (54)  256x   + 480x   + 1025x  + 750x  + 625
                                                     Type: 
Polynomial(Integer)
(55) -> D(complexIntegrate(x^2*(1)/(cc),x),x)
(55) ->
                             2
                            x
    (55)  --------------------------------------
              16       12        8       4
          256x   + 480x   + 1025x  + 750x  + 625
                                                     Type: 
Expression(Integer)
(56) -> D(integrate(x^2*(1)/(cc),x),x)
(56) ->
                           14         10         6        2
                       768x   - 11360x   - 10125x  + 8625x
    (56) -------------------------------------------------------------
                  16            12            8            4
          7040000x   + 13200000x   + 28187500x  + 20625000x  + 17187500
                                                     Type: 
Expression(Integer)
-----------------------------------------
This particular case:

(57) -> bb
(57) ->
             14       10       6       2
    (57)  16x   - 125x   + 150x  + 375x
                                                     Type: 
Polynomial(Integer)
(58) -> cc
(58) ->
              16       12        8       4
    (58)  256x   + 480x   + 1025x  + 750x  + 625
                                                     Type: 
Polynomial(Integer)
(59) -> D(integrate(bb/(cc),x),x)
(59) ->
                    14        10       6        2
               - 80x   - 2575x   + 350x  + 2625x
    (59)  -------------------------------------------
               16        12         8        4
          2816x   + 5280x   + 11275x  + 8250x  + 6875
                                                     Type: 
Expression(Integer)
(60) -> D(complexIntegrate(bb/(cc),x),x)
(60) ->
                 14       10       6       2
              16x   - 125x   + 150x  + 375x
    (60)  --------------------------------------
              16       12        8       4
          256x   + 480x   + 1025x  + 750x  + 625
                                                     Type: 
Expression(Integer)



--------------000109080000090702060702
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <div class="moz-cite-prefix">On 11/22/2014 09:47 AM, Waldek Hebisch
      wrote:<br>
    </div>
    <blockquote cite="mid:E1XsBy1-0005wp-Ci@hera.math.uni.wroc.pl"
      type="cite">
      <pre wrap="">Tim Daly wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">
Question from Thomas Baruchel

integrate((16*x^14-125*x^10+150*x^6+375*x^2)/(256*x^16+480*x^12+1025*x^8+750*x^4 +625),x=0..1)

          5
    (1)  --
         77
                   Type: Union(f1: OrderedCompletion(Expression(Integer)),...)
(2) -&gt; integrate((16*x^14-125*x^10+150*x^6+375*x^2)/(256*x^16+480*x^12+1025*x^8+750*x^4 +625),x)

                7      3
              5x  + 35x
    (2)  -------------------
             8       4
         176x  + 165x  + 275
                                          Type: Union(Expression(Integer),...)
(3) -&gt; D( (5*x^7+35*x^3)/(176*x^8+165*x^4+275) ,x)

                   14        10       6        2
              - 80x   - 2575x   + 350x  + 2625x
    (3)  -------------------------------------------
              16        12         8        4
         2816x   + 5280x   + 11275x  + 8250x  + 6875
                                           Type: Fraction(Polynomial(Integer))
</pre>
      </blockquote>
      <pre wrap="">

AFAICS logarithmic terms got lost.  FriCAS on the same input
produces ugly, long answer containing several logarithmic
terms.  The above agrees with rational part of FriCAS answer.
Old code contained a bug which sometimes caused such effect.

</pre>
    </blockquote>
    <small>A clue for someone competent? In any case a work around for
    </small><br>
    <small>Thomas Baruchel
      <br>
      <br>
      54) -&gt; cc<br>
      (54) -&gt; <br>
       16 12 8 4<br>
       (54) 256x + 480x + 1025x + 750x + 625<br>
       Type:
      Polynomial(Integer)<br>
      (55) -&gt; D(complexIntegrate(x^2*(1)/(cc),x),x)<br>
      (55) -&gt; <br>
       2<br>
       x<br>
       (55) --------------------------------------<br>
       16 12 8 4<br>
       256x + 480x + 1025x + 750x + 625<br>
       Type:
      Expression(Integer)<br>
      (56) -&gt; D(integrate(x^2*(1)/(cc),x),x) <br>
      (56) -&gt; <br>
       14 10 6 2<br>
       768x - 11360x - 10125x + 8625x<br>
       (56)
      -------------------------------------------------------------<br>
       16 12 8 4<br>
       7040000x + 13200000x + 28187500x + 20625000x +
      17187500<br>
       Type:
      Expression(Integer)<br>
      -----------------------------------------<br>
      This particular case:<br>
       <br>
      (57) -&gt; bb<br>
      (57) -&gt; <br>
       14 10 6 2<br>
       (57) 16x - 125x + 150x + 375x<br>
       Type:
      Polynomial(Integer)<br>
      (58) -&gt; cc<br>
      (58) -&gt; <br>
       16 12 8 4<br>
       (58) 256x + 480x + 1025x + 750x + 625<br>
       Type:
      Polynomial(Integer)<br>
      (59) -&gt; D(integrate(bb/(cc),x),x) <br>
      (59) -&gt; <br>
       14 10 6 2<br>
       - 80x - 2575x + 350x + 2625x<br>
       (59) -------------------------------------------<br>
       16 12 8 4<br>
       2816x + 5280x + 11275x + 8250x + 6875<br>
       Type:
      Expression(Integer)<br>
      (60) -&gt; D(complexIntegrate(bb/(cc),x),x)<br>
      (60) -&gt; <br>
       14 10 6 2<br>
       16x - 125x + 150x + 375x<br>
       (60) --------------------------------------<br>
       16 12 8 4<br>
       256x + 480x + 1025x + 750x + 625<br>
       Type:
      Expression(Integer)<br>
      <br>
    </small><br>
  </body>
</html>

--------------000109080000090702060702--

\start
Date: Sun, 23 Nov 2014 20:59:18 -0600
From: daly@axiom-developer.org
To: axiom-developer@nongnu.org
Subject: [Axiom-developer] Axiom test suite

David,

Axiom has a rather extensive test suite. See the Computer Algebra
Test Suite (CATS) on this page:
http://axiom-developer.org/axiom-website/CATS/index.html

You can build Axiom and run various levels of testing by
including TESTSET=option on the make command line. The 
options are

  TESTSET=notests (the default)

Axiom is tested before release. There is no real need to run
the tests during a user build. 

  TESTSET=regresstests (tests in src/input)

The src/input directory contains a random collection of examples
picked up over time. They are being reorganized so that specific
tests are put in the algebra books and more general pamphlets
are developed into more extensive tutorials. Note that some of
these files explicitly cause failures in order to test failure 
mechanisms.

  TESTSET=algebratests (tests in books/bookvol10.*)

The algebra books (10.2 Category, 10.3 Domain, 10.4 Package,
10.5 Numerics) contain input files for each specific piece
of algebra. This will extract those files and run them.

  TESTSET=catstests (schaum integration and kamke diffeq)

The catstests cover the Schaums book of integrals and the Kamke
book on differential equations.

  TESTSET=richtests (Albert Rich test suite)

The richtests suite is a (growing) portion of the 50,000 
integrals published by Albert Rich.

  TESTSET=newrichtests (long running integration test suite)

Some of the Rich integrals take a LONG time to compute. The
future plan is to fork Axiom and run the test suites in parallel.
Until then, these are separate.

  TESTSET=alltests

Be aware that 'alltests' take about a day to run on my fastest
machine.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

THE TEST MACHINERY

The test machinery is trivial. Each test suite has the expected
result as specially-tagged comment lines (--R) enclosed in 
numbered comment lines (--S, --E). So in "foo.input.pamphlet"
you'll see blocks like:

--S 17 of 59
x^2
--R
--R        2
--R  (17) x
--E 17

The --S, --R, and --E lines are valid Axiom comments.
When this file is run it creates "foo.output" containing the
actual result as well as the comment lines:

--S 17 of 59
x^2

        2
  (17) x
                                         Type: Polynomial(Integer)
--R
--R        2
--R  (17) x
--R                                         Type: Polynomial(Integer)
--E 17

There is a function called "regress" which reads "foo.output",
compares the actual result with the expected result and outputs
PASS or FAILED for each test. It also complains if there are any
missing or unfinished tests (we told it there were 59 above).

Because the test files are little more than console logs it makes
creating a test file trivial. Just run your input file, edit the
console log by adding the --S, --R, and --E comments and you have
a valid test set. Wrap a few latex lines (e.g. copied from 
algaggr) around it and you have a valid pamphlet file for testing.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

RUNNING TESTS BY HAND

Axiom test files are vanilla latex files (called pamphlet files
for historical reasons). Axiom knows how to extract "chunks"
from latex files using the )tangle command.

1) pick a file from src/input (e.g. algaggr.input.pamhlet)
2) at the Axiom command line type:

   )cd src/input        -- go to where the file is
   )tangle algaggr      -- extract the file algaggr.input
   )read algaggr        -- run it, creating algaggr.output and exit

3) restart Axiom

   )regress algaggr     -- compare the actual vs comment lines


Hope this helps.

Tim

\start        
Date: Wed, 26 Nov 2014 04:55:13 -0600
From: daly@axiom-developer.org
To: axiom-developer@nongnu.org
Subject: [Axiom-developer] new "projects" file

Axiom is being developed on a very wide range of topics.
Due to the range of topics and the available manpower the
development is slow but steady in many areas.

There has been, and continue to be, changes made in Axiom for each of
these areas.

In order to communicate better (that being the whole point of literate
software) these areas will be listed in a new top-level "projects"
file which contains entries for various subprojects currently in
process.  It is not complete but it will be maintained on a regular
ongoing basis.

This is the initial version.

=====================================================================
This file contains notes on current development projects in Axiom

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Database reorganization
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  The databases were intially created on an ad-hoc, history-driven
  basis (e.g. the compress database was created when I needed to
  put Axiom on a 1Meg memory machine. It is now gone).

  1) reorganize the database layer use better technology

  2) merge the databases into a single database.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Burge recursive parser
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  The Burge zipper parser accepts input and "zips it up" into a
  recursive data structure.

  1) document this idea and the underlying data structures

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Charybdis
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  recordandprint receives an sexpression form of the output,
  computes subexpression lengths, and prints. This is an
  implementation of the Charybdis paper.

  1) use the paper to document Charybdis in detail

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom mkAtree
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  mkAtree receives the InputForm as an sexpression and constructs
  a tree object. 

  1) This tree object to be documented in detail

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom src/interp cleanup
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  src/interp still contains many lisp files. 

  1) these need to be rewritten from machine-generated lisp to
     human-written lisp and documented.

  2) remove src/interp

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom interpreter merge
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  src/interp contains functions called by the interpreter.

  1) tree-shake the interpreter to drag in the referenced
     functions.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom compiler merge
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  src/interp contains functions called by the compiler.

  2) tree-shake the compiler to drag in the referenced
     functions.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom browser help
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  help files are generated for the algebra. )help calls an
  external command called SPADEDIT. This currently either types
  out the help file (straight text) or opens an editor of choice,
  defaulting to vi. 

  1) SPADEDIT needs to have the choice of displaying the help files
  in a browser window.

  2) SPADEDIT needs to be able to handle pdfs

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom help files
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  All of the categories, domains, and packages needs a help file.

  1) All of the exported functions need help files

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom display op examples
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  )d op somefunction will display examples which are taken from
  ++X lines in the export section of the constructor.

  1) All of the exported functions need ++X example lines.

  2) d op needs to display the ++ text for functions

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom makefile removal
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  The makefiles are organized as a tree with shell variables passed
  through the branches. 

  1) rewrite the makefiles into a single documented makefile

  2) rewrite the single makefile into lisp

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom CATS expansion
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  The computer algebra test suite (CATS) needs comprehensive
  test suites for more coverage. 

  1) find a suitable textbook with a lot of examples of
     input/output pairs (like Schaums). Write a CATS test suite.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom continuous integration
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Currently we follow a model of publishing a "release"

  1) set up a continuous integration server

  2) move to a continuous integration model so that every change
     gets built, tested, and pushed immediately. 

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom buglist
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  The bug list has some very old bugs on it and lacks entries for
  known bugs.

  1) pick a bug and fix it

  2) pick up the bug list from fricas, test the open bugs, and
     merge them into the bug list

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom algebra availability documentation
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Currently the algebra is just a pile of constructors. There is
  no good organization by topic

  1) organize the algebra by topic using some external, known
     organization. possibly use maxima/maple/MMA organization
     so users can compare.

  2) highlight the areas where Axiom is weak or missing some
     functionality and suggest new algebra

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom algorithm documentation
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  The algebra uses some known, published algorithms and also 
  uses unknown, unpublished algorithms.

  1) find an area with published algorithms (e.g. symbolic
     summation) and find the corresponding Axiom algorithm.
     Document it and reference the published papers

  2) find an area where Axiom has old algorithms (e.g.
     symbolic summation), update the algorithms, document
     them, and reference the published papers

  3) update the algorithm bibliographic history page to 
     trace the history, current implementation, and future
     direction of Axiom's algorithms.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom history
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  The history of Axiom as free software is documented in the
  mailing list archives. 

  1) Condense, organize, and write a book on the history of Axiom.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom proofs
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Axiom uses algorithms which have been proven in the literature
  (e.g. Euclid's algorithm) in theory. Axiom reduces these to
  practice. 

  1) prove Axiom's implementation of Euclid's algorithm

    a) Math-to-Spad proof (e.g. COQ)
    b) Spad-to-Lisp proof (e.g. ACL2)
    c) Lisp-to-C proof (e.g. LLVM work)
    d) C-to-machine proof (Conditional-Concurrent Assignments)

  2) merge ACL2 beneath the Axiom interpreter and make it 
     available at the command prompt.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom category axioms
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Add mathematical axioms to Axiom's category hierarchy.

  1) decorate each category with their axioms (e.g. monoid)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom numerics
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Since moving away from NAG, Axiom numerics are missing

  1) expand bookvol10.5 with working lisp code and expose
     the numeric routines in packages

  2) investigate and recreate NAG-equivalent code for the
     exposed NAG library routines

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom Browser Notebook
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Axiom can currently serve as a backend for a browser.

  1) expand the existing notebook code bookvol11 to make
     the notebooks more functional

  2) expand/port the existing hyperdoc documentation to
     the new browser

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom SVG hierarchy
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Currently the SVG graph of Axiom's constructors is static.

  1) modify the static structure so clicking on a node goes
     directly to the constructor algebra

  2) modify the static structure to use a better, more useful
     graph structure so it can be easily navigated in the browser

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom graphics
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Axiom currently uses its own graphics package written in C.

  1) rewrite the graphics package to use HTML5 canvas

  2) integrate the graphics with the new browser front end

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom expression server
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Axiom can listen on a port.

  1) modify Axiom to take a command-line input from a port,
     compute the result, and return it over the net.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom algebra use documentation
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Currently the algebra use documentation just shows how to call
  various functions but not solving actual problems.

  1) find a problem to solve, solve it, and document it in detail

  2) create "intro" videos for new users showing how to 
     use Axiom in different domains. Relate these to the
     algebra use documentation.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom new developer support
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Axiom has videos of talks and videos of how-to.

  1) expand the how-to videos for developers detailing how
     to understand, maintain, modify, and extend Axiom

  2) list and publish potential projects

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom src/input dispersal
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  The src/input files were created as initial attempts at testing
  and documentation. Thus there are two kinds of files in the
  same directory.

  1) reorganize the directory
    a) move complete examples into the user's guide or the algebra
       book
    b) merge constructor example files with the constructor help
    c) organize, cleanup, and expand test coverage files to support
       continuous integration

  2) remove src/input

-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Axiom youtube channel
-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Axiom has a new video library section

  1) create a youtube channel for Axiom videos and upload

\start
Date: Wed, 26 Nov 2014 06:29:57 -0600
From: daly@axiom-developer.org
To: Kurt Pagani <kp@scios.ch>, "Ralf Hemmecke" <ralf@hemmecke.de>
Subject: [Axiom-developer] Reals

There is prior work on this idea in the area of Symbolic Integers
rather than Reals.

I believe James Davenport did work on this idea a long time ago.
I had some grant money to look at this idea at CCNY.

Tim

\start
From: Sarvagnan <sarvagnan@gmail.com>
Date: Fri, 28 Nov 2014 00:04:32 +0530
To: axiom-dev <axiom-developer@nongnu.org>
Subject: [Axiom-developer] Projects Suggestions

Hey,

I have a few suggestions regarding two topics in the Axiom projects list.

For the browser based frontend, it may be worthwhile to look into the
Jupyter project. This is the frontend of the IPython project but without
the python backend, so as to allow any language to use the notebook
frontend. There is a demonstration server up showcasing this at tmpnb.org.
This showcases the python, julia, and r backends.

For the continuous building and integration, Travis may be a good bet. It
is a continuous integration service that plugs into github repos. It is
located at travis-ci.org.

Thanks!!
Sarva

--001a11c2cefe7203b60508db6671
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hey,<div><br></div><div>I have a few suggestions regarding=
 two topics in the Axiom projects list.</div><div><br></div><div>For the br=
owser based frontend, it may be worthwhile to look into the Jupyter project=
. This is the frontend of the IPython project but without the python backen=
d, so as to allow any language to use the notebook frontend. There is a dem=
onstration server up showcasing this at <a href=3D"http://tmpnb.org">tmpnb.=
org</a>. This showcases the python, julia, and r backends.=C2=A0</div><div>=
<br></div><div>For the continuous building and integration, Travis may be a=
 good bet. It is a continuous integration service that plugs into github re=
pos. It is located at <a href=3D"http://travis-ci.org">travis-ci.org</a>.</=
div><div><br></div><div>Thanks!!</div><div>Sarva</div></div>

--001a11c2cefe7203b60508db6671--

\start
Date: Thu, 27 Nov 2014 19:43:50 +0100
From: Ralf Hemmecke <ralf@hemmecke.org>
To: axiom-developer@nongnu.org
Subject: Re: [Axiom-developer] Projects Suggestions

> For the browser based frontend, it may be worthwhile to look into the
> Jupyter project.

https://groups.google.com/d/msg/fricas-devel/WgMV4uGgqXM/adKDWBU_32MJ

I have that running locally.
Probably needs improvement (especially direct zeroqm connection instead
of doing it over pexpect), but Kurt's work is already working now, (but
needs IPython3.)

Ralf

\start
Date: Fri, 28 Nov 2014 08:28:46 -0600
From: daly@axiom-developer.org
To: Alfredo Portes <doyenatccny@gmail.com>
Subject: [Axiom-developer] new "projects" file

>Not sure what you use for http://axiom-developer.org/ hosting, but
>http://jenkins-ci.org/ is a good option for continuous integration. It is
>very easy to setup.

The last gig allowed me to buy a big machine to dual-host axiom so I
now have 2 servers, one of axiom-developer.org in RackSpace and one
for axiom-developer.com in my office. I'm trying to set up the CI as
an experiment. Every git push will trigger a build for all of the
supported systems, run all of the tests and if they succeed, to
push tarballs into the download page. I've been cleaning up and
expanding the test suite to support the new approach.

The CI setup is messy as it involves a dozen VMs as well as a native
setup. At the moment it is more "continuous frustration" :-) But in
the long term a CI setup will track project changes better.

>PS: I used to track your updates in
>http://git.axiom-developer.org/?p=.git;a=summary, but I assume you update a
>different repo now. Thanks.

The "main" repo, at least in my mind, is github. I push to github,
sourceforge, savannah, and the axiom git repos. I could have broken
one of them. I'll check. When in doubt, depend on github.

The "summary" is intended for overall project goals, the "projects"
file is for communicating the many ongoing development threads, some
of which are short term. I supposed it would be better to move
"summary" into the top level axiom tree and rename it "goals".
I should add that to the "projects" file :-)

Tim

\start
Date: Fri, 28 Nov 2014 08:44:12 -0600
From: daly@axiom-developer.org
To: Sarvagnan <sarvagnan@gmail.com>
Subject: Re: [Axiom-developer] Projects Suggestions

>I have a few suggestions regarding two topics in the Axiom projects list.

>For the browser based frontend, it may be worthwhile to look into the
>Jupyter project. This is the frontend of the IPython project but without
>the python backend, so as to allow any language to use the notebook
>frontend. There is a demonstration server up showcasing this at tmpnb.org.
>This showcases the python, julia, and r backends.

Axiom has a working browser front end (at least in theory). The front
end allows you to input expressions and the results are returned in
a newly opened <div> section so it works like a "notebook". There
are several "todo" subpaths. 

First is to move the hyperdoc information. Some of the static pages
exist already. I've implemented some lisp code to support  dynamic 
page information (e.g. database query, ancestors). This is queued
behind an effort to redesign the databases (do we really need to
do disk access anymore?)

Second, I have experimented with Axiom websocket support. This will
allow Axiom to do interactive graphics in the web page (as well as
be an "equation server" on a port). Unfortunately, websockets and I
don't seem to be getting along. There is no such thing as a simple job.



>For the continuous building and integration, Travis may be a good bet. It
>is a continuous integration service that plugs into github repos. It is
>located at travis-ci.org.

Axiom builds take about 30 minutes, a little more with the regression
test suite execution. A full CATS test suite run can take 24 hours.
So running many parallel VMs doing builds will likely bury a server.
I'm not so sure how travis-ci or jenkins-ci would feel about using
so much horsepower. On the upside, my office server will keep me
nice and warm this winter.

I suppose I ought to look at how the real world CI systems work in
more detail so the Axiom CI is reasonably compatible. Sigh.

Tim

\start
Date: Fri, 28 Nov 2014 09:26:23 -0600
From: daly@axiom-developer.org
To: Ralf Hemmecke <ralf@hemmecke.org>
Subject: Re: [Axiom-developer] Projects Suggestions

>> For the browser based frontend, it may be worthwhile to look into the
>> Jupyter project.

>https://groups.google.com/d/msg/fricas-devel/WgMV4uGgqXM/adKDWBU_32MJ

That looks really nice. I like the partial-complete dropdown.



>I have that running locally.
>Probably needs improvement (especially direct zeroqm connection instead
>of doing it over pexpect), but Kurt's work is already working now, (but
>needs IPython3.)

I did a full project for law enforcement using python. Frankly, I would
only consider using it for prototyping in the future. (Not trying to
start a flame-thread. We already know my opinions are not widely 
agreed-upon, so ignore me).

The Axiom browser implementation communicates bidirectionally at the
lisp level with Javascript in the browser. I've done some work (see
bookvol11) on the API so that Lisp generates high-level javascript
function calls and javascript generates lisp function calls. When
combined with the literate programming "getchunk" mechanism it is
easy to generate pages. 

For instance, in a web page implementation just adding the line
\getchunk{axiom talker}
will include javascript API functions in the generated web page
to call lisp code or run interpreter commands.



The Axiom "network" interface should be a well-defined API and
I've not given that much thought. Done right, the API would allow
Axiom to work with python, javascript, or any other network-aware
program (e.g. a mailer, a graphics engine, or BRL-CAD for 3D).

This would be a better, more well thought out approach... so I
guess it is time to "thought it out" :-)

Tim

\start
Date: Sat, 29 Nov 2014 06:54:43 -0600
From: daly@axiom-developer.org
To: xyy82148@sjtu.edu.cn
Subject: Re: [Axiom-developer] axiom integrate() return wrong result

Thank you for taking the time to generate a bug report.

>I'm exploring the power of integrate() in Axiom, and find that
>
>f:=1/(sin(x)^4+1)
>a:=integrate(f,x)
>b:=differentiate(a,x,1)
>draw(b, x=0..4)
>draw(f, x=0..4)
>
>give me inconsistent result.

Yes, Axiom did give an "inconsistent result", which is most likely
a "wrong" result as well.

>If change to say f:=1/(x^4+1), then I get consistent result.

Actually that looks wrong also. Click on the graph to bring up
the control panel, click on "units on", and you'll find that
the curves are different. The integrate/differentiate is failing.

>Also tested latest code (2014-11-28) in github(git clone 
>git://github.com/daly/axiom.git).
>
>bug 7251, 7147, 7085/15, 7084/293 may be related to this bug?
>Note that strictly speaking, integrate(1/(x^4+1),x) also returns an 
>incorrect result (correct only when understand it as a complex 
>multi-value function).

I don't know if these are related (the integration code is not
simple and chasing bugs is time-consuming). 

>One more note: I have tried FriCAS (also the latest version), it give me 
>the correct integration result.

I tried FriCAS (2013-04-06 on MAC OS X). 

I found that 

f:=1/(sin(x)^4+1)
a:=integrate(f,x)
b:=differentiate(a,x,1)
draw(b, x=0..4)

fails with the message:

draw(b,x=0..4)
  Compiling function %O with type DoubleFloat -> DoubleFloat

  >> System error:
  Too large to be represented as a SINGLE-FLOAT
  14353327979561593211089438493917727500805625855126443

Also, the graphs show that the result is wrong when you turn
"units on".

When I get near my office I will try the test in Maple and MMA.

Thanks for the bug report.

Can you send your full name to "daly@axiom-developer.org" so I
can list you in the credits?

Tim

\start
Date: Sat, 29 Nov 2014 08:22:15 -0600
From: daly@axiom-developer.org
To: "Waldek Hebisch" <hebisch@math.uni.wroc.pl>,
	"Ralf Hemmecke" <ralf@hemmecke.de>
Subject: [Axiom-developer] build failure

Waldek,

In response to a bug report comparing Axiom and Fricas I downloaded
the latest Fricas release and did a build on my mac. It failed.

The console log is at:
http://daly.axiom-developer.org/fricas.20131129.fail

Tim

\start
Date: Sat, 29 Nov 2014 08:43:15 -0600
From: daly@axiom-developer.org
To: "Waldek Hebisch" <hebisch@math.uni.wroc.pl>,
	"Ralf Hemmecke" <ralf@hemmecke.de>
Subject: [Axiom-developer] typo

http://daly.axiom-developer.org/fricas.20141129.fail

I typed the year wrong

Tim

\start
Date: Sat, 29 Nov 2014 08:44:22 -0600
From: daly@axiom-developer.org
To: "Waldek Hebisch" <hebisch@math.uni.wroc.pl>,
	"Ralf Hemmecke" <ralf@hemmecke.de>
Subject: [Axiom-developer] build failure --with-lisp=clisp

Waldek, Ralf,

I tried to configure and build with clisp, which also fails:

http://daly.axiom-developer.org/fricas.20141129.fail.clisp.clisp

Tim


\end{verbatim}
\eject
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cleardoublepage
%\phantomsection
\addcontentsline{toc}{chapter}{Bibliography}
\bibliographystyle{axiom}
\bibliography{axiom}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cleardoublepage
%\phantomsection
\addcontentsline{toc}{chapter}{Index}
\printindex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}
