Is there a numerical ODE solver facility in Maxima / off track -- symbolic ODE solver for series



In the spirit of computer algebra and in the hope that others might be 
interested,
I give an example of an ODE solver where the answer might otherwise be 
left for
purely numerical approaches.

/* solving Painleve\' equation y''=6y^2+x, y(0)=1, y'(0)=0.
By Taylor series.  (Method of Frobenius).

 All the questions in the text represent choices that a
fully-automatic program would have to resolve.  This might require
substantial additional programming for accuracy testing, analytic
continuation, etc.  It might also be possible to incorporate all this
in the use of deftaylor, where the computation for a[i] is done
recursively, so that all that is needed to get a "better" answer is to
ask for taylor(f(x) ...) to more terms.  Also the calculations here
are not done especially fast.  Asymptotically faster methods are given
in the literature. */

deftaylor(f(x),sum(x^i*a[i],i,0,inf));

g:taylor(f(x),x,0,10); /* propose a solution. how did we pick 10? */

/* initial conditions provide 2 equations */
init1: subst(x=1,g)=0$
init2: subst(x=0,diff(g,x))=0$
pain:  diff(g,x,2)-6*g^2+x;
pain2: pain,init2;  /* how did we know this was a good one to apply? */
eqs:makelist(coeff(pain2,x,i),i,0,8) ; /* how did we know 8? */
ans:[init2]$ /* how did we know this was right form? */
for i:1 thru 9 do (q: solve(eqs[i],a[i+1]),ans:append(ans,q),eqs:ev(eqs,q));
 /* how did we know eq[i] defined a[i+1], uniquely? */

/*construct the answer*/
theseries:taylor(subst(ans,g),x,0,8);  /*done */
/*prove it */
diff(theseries,x,2)-6*theseries^2+x;

/* what is a[0], though? */
init1,ans;
/* I guess we can pick any value for a[0] from this: */
allroots(%);

comments welcome.
RJF