restart; with(SumTools[Hypergeometric]): po:=proc(i,j) local f; f:=i->i-floor(i): if type(i,numeric) then if i<=0 and f(i)=0 then return pochhammer(1,j)/product(j-h,h=0..-i): else if i>0 and f(i)=0 then return simplify(pochhammer(i,j)/pochhammer(f(i)+1,j))*pochhammer(f(i)+1,j) else: if f(i) > 0 then return simplify(pochhammer(i,j)/pochhammer(f(i),j))*pochhammer(f(i),j) fi: fi: fi: else return pochhammer(i,j): fi: end: UU:=proc(r1,r2,r3,r4,r5) global U,po; local en,qq,ne,A1,A2,A; alias(p=pochhammer): en:=[r1,r2,r3,r4,r5]: if r5=oo then ne:=1 else ne:=0 fi: A1:=(a,b,c,d,e,k)->(-1)^(ne*k)*product(po(en[i],k),i=2..nops(en)-ne): A2:=(a,b,c,d,e,k)->product(po(1+en[1]-en[i],k),i=2..nops(en)-ne): A:=(a,b,c,d,e,k)->A1(a,b,c,d,e,k)/A2(a,b,c,d,e,k)*(a+2*k): qq:=r1,r2,r3,r4,r5: U:=(n,k)->A(qq,k): end: FF:=proc(r1,r2,r3,r4,r5) global z0,F; local o,p1,p2,t1,t2,T,pz,z1; UU(r1,r2,r3,r4,r5): o:=Zeilberger(U(n,k),n,k,N)[1]: p1:=-solve(factor(coeff(o,N,1)),n): p2:=-solve(factor(coeff(o,N,0)),n): pz:=subs(n=1/n,-factor(coeff(o,N,1))/factor(coeff(o,N,0))): z0:=subs(n=0,(simplify(pz))): t1:=map(po,[p1],n): t2:=map(po,[p2],n): T:=(n,k)->product(t1[i],i=1..nops(t1))/product(t2[i],i=1..nops(t2)): F:=(n,k)->U(n,k)*T(n,k)*z0^n: z1:=Zeilberger(F(n,k),n,k,N)[1]: if z1=N-1 or z1=1-N then return("F(n,k)"=F(n,k)) fi end: CC:=proc(r1,r2,r3,r4,r5) local sF; global R,G,ss; FF(r1,r2,r3,r4,r5): sF:=simplify(Zeilberger(F(n,k),n,k,N)[2]/F(n,k)): R:=(nn,kk)->simplify(subs(n=nn,k=kk,sF)): G:=(n,k)->F(n,k)*R(n,k): return("R(n,k)"=R(n,k)): end: SER:=proc(r1,r2,r3,r4,r5) local w,ss,res; CC(r1,r2,r3,r4,r5): w:=factor(G(n,0)): Digits:=30: ss:=evalf(Sum(w,n=0..infinity)): if type(ss,numeric) then res:=identify(ss,extension=[Catalan]): else res:="there is no sum from n=0": fi: if abs(z0)>1 then res:="it is not convergent" fi: return(Sum(w,n=0..infinity)=res): end: entry:=1+4*n,1/2+2*n,1/2+1*n,1/2+1*n,oo; SER(entry); FF(entry); CC(entry);