about solve_rec



Hello all,
 
I noted that solve_rec does not work when the expression contains 
a subscripted variable whose index is purely numerical.
 
Example: solve_rec(u[k] = u[k-1] + u[0], u[k]);
 
Give the error message:
 
If 4 arguments are given to MAKELIST, the difference of the 3rd
and 4th arguments should evaluate to a non-negative integer:
errexp1
#0:
solve_rec_gen(std_form=shift_op(u,k,-min(-k,-1))-shift_op(u,k,-min(-k,-1)-k)-shift_op(u,k,-min(
-k,-1)-1),%f=u,%n=k,cond=[])(solve_rec.mac line 212)
#1: solve_rec(eq=u[k] = u[k-1]+u[0],fn=u[k],cond=[])(solve_rec.mac line 178)
an error.  Quitting.  To debug this try debugmode(true);
 
 
It seems that it is possible to correct the problem by adding only one line in the function:
change_to_shift_op
 
The line that I added is:
 
If numberp(first(k%)) then return(expr),
 
The corresponding version of the function is:
 
change_to_shift_op(expr, %f, %n) :=
  if atom(expr) then expr
  else if part(expr, 0)=%f then block(
    [k% : args(expr)],
    if numberp(first(k%)) then return(expr),
    funmake('shift_op, [%f, %n, k%[1]-%n])
  )
  else if member(part(expr, 0), ["+", "*", "//", "^", "-"]) then
    apply(part(expr, 0),
      map(lambda([%u], change_to_shift_op(%u, %f, %n)), args(expr)))
  else expr$
 
 
Is it correct?

PS: sorry for my bad english I'm French.
 
Laurent.