Question: updating Maple code

I would like to use a series of Maple worksheets, written by Professors Malidi Ahamadi and Jean-Jacques Gervais, designed to compute the normal forms of ODEs and PDEs. The code was written for an earlier version of Maple (maybe version 7 or 8) and doesn't run anymore on Maple 13. I would like to make the necessary adaptations to the code to run it on Maple 13. Unfortunately, I am no Maple expert...

When I run the worksheet, the following error message shows:

Error, (in sum) second argument must be a name, name=a..b, name=RootOf, or name=value

I suspect that the following (and similar) line of code (edited) is the culprit:

sum('sum('cat(Phi,2*k+1,t)*x^(2*k+1)*mu^t',('k') = 0 .. 10)',t = 0 .. 10);

Any suggestions?

many thanks,


  • The software archives, containing Maple and Matlab code, has been posted on Mapleprimes, with the generous consent of Professors Gervais and Ahamadi:
  • The reference to the relevant article is the following:

     author = {Ahamadi, Malidi and Gervais, Jean-Jacques},
     title = {Symbolic-numerical methods for the computation of normal forms of PDEs},
     journal = {J. Comput. Appl. Math.},
     volume = {158},
     number = {2},
     year = {2003},
     issn = {0377-0427},
     pages = {443--472},
     doi = {},
     publisher = {Elsevier Science Publishers B. V.},
     address = {Amsterdam, The Netherlands, The Netherlands},
  • The article is available online in pdf format:

  • For convenience, the procedure which I think contains outdated code (the full code is in the zipped file referenced above):

    decomp_var_centrale := proc (symetrie_vc,i, degre)
    local ppi, lpi;
    if symetrie_vc=1 then
    if i = 0 then ppi := sum('sum('cat(Phi,2*k+1,t)*x^(2*k+1)*mu^t',('k') = 0 .. degre)',t = 0 .. degre);
     remove(has,nettoie_degre_steady(ppi,degre),Phi10) else
    lpi := sum('sum('cat(Phi,i,2*k+1,t)*x^(2*k+1)*mu^t',('k') = 0 .. degre)',t = 0 .. degre); remove(has,nettoie_degre_steady(lpi,degre),Phi10);
    end if;
    if i = 0 then ppi := sum('cat(Phi0,j)*mu^j',j=1..degre)+ sum('sum('cat(Phi,k,t)*x^k*mu^t',('k') = 1 .. degre)',t = 0 .. degre);
     remove(has,nettoie_degre_steady(ppi,degre),Phi10) else
    lpi := sum('cat(Phi,i,'0',j)*mu^j',j=1..degre)+ sum('sum('cat(Phi,i,k,t)*x^k*mu^t',('k') = 1 .. degre)',t = 0 .. degre); remove(has,nettoie_degre_steady(lpi,degre),Phi10);
    end if ;
    end if
    end proc:


Please Wait...