zeilberg.rlg 27 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169
  1. Sun Aug 18 19:02:47 2002 run on Windows
  2. % Tests of the ZEILBERG package.
  3. % Authors: Gregor Stoelting, Wolfram Koepf (koepf@zib-berlin.de)
  4. load_package sum;
  5. % on time;
  6. % 1) Successful summations by the Gosper algorithm
  7. % R. W. Gosper, Jr.:
  8. % Decision procedure for indefinite hypergeometric summation,
  9. % Proc. Nat. Acad. Sci. USA 75 (1978), 40-42.
  10. gosper(k,k);
  11. (k + 1)*k
  12. -----------
  13. 2
  14. gosper(k^2,k);
  15. (2*k + 1)*(k + 1)*k
  16. ---------------------
  17. 6
  18. gosper(k^3,k);
  19. 2 2
  20. (k + 1) *k
  21. -------------
  22. 4
  23. gosper(k^4,k);
  24. 2
  25. (3*k + 3*k - 1)*(2*k + 1)*(k + 1)*k
  26. --------------------------------------
  27. 30
  28. gosper(k^5,k);
  29. 2 2 2
  30. (2*k + 2*k - 1)*(k + 1) *k
  31. ------------------------------
  32. 12
  33. % gosper(k^20,k);
  34. gosper((6*k+3)/(4*k^4+8*k^3+8*k^2+4*k+3),k);
  35. (k + 2)*k
  36. ----------------
  37. 2
  38. 2*k + 4*k + 3
  39. % gosper(2^k*(k^3-3*k^2-3*k-1)/(k^3*(k+1)^3),k);
  40. gosper(x*k,k);
  41. (k + 1)*k*x
  42. -------------
  43. 2
  44. gosper(k*x^k,k);
  45. k
  46. x *((x - 1)*k - 1)*x
  47. ----------------------
  48. 2
  49. (x - 1)
  50. gosper(k*factorial(k),k);
  51. (k + 1)*factorial(k)
  52. gosper(1/(k^2-1),k);
  53. 2
  54. 2*k - 1
  55. -------------
  56. 2*(k + 1)*k
  57. gosper((1+2*k)/((1+k^2)*(k^2+2*k+2)),k);
  58. (k + 2)*k
  59. ------------------
  60. 2
  61. 2*(k + 2*k + 2)
  62. gosper((k^2+4*k+1)*factorial(k),k);
  63. (k + 4)*(k + 1)*factorial(k)
  64. gosper((4*k-3)*factorial(2*k-2)/factorial(k-1),k);
  65. 2*(2*k - 1)*factorial(2*(k - 1))
  66. ----------------------------------
  67. factorial(k - 1)
  68. gosper(gamma(k+n+2)*n/((k+n+1)*gamma(k+2)*gamma(n+1)),k);
  69. gamma(n + 2 + k)
  70. ---------------------------
  71. gamma(k + 2)*gamma(n + 1)
  72. gosper((k+n)*factorial(k+n),k);
  73. (n + 1 + k)*factorial(k + n)
  74. gosper((3*(1+2*k))/((1+k^2)*(2+2*k+k^2)),k);
  75. 3*(k + 2)*k
  76. ------------------
  77. 2
  78. 2*(k + 2*k + 2)
  79. % gosper((-25+15*k+18*k^2-2*k^3-k^4)/
  80. % (-23+479*k+613*k^2+137*k^3+53*k^4+5*k^5+k^6),k);
  81. % gosper(3^k*(2*k^4+4*k^3-7*k^2-k-4)/(k*(k+1)*(k^2+1)*((k+1)^2+1)),k);
  82. gosper(3^k*(4*k^2-2*k-3)/((2*k+3)*(2*k+1)*(k+1)*k),k);
  83. k
  84. 3*3
  85. -------------------
  86. (2*k + 3)*(k + 1)
  87. % gosper(2^k*(2*k^3+3*k^2-20*k-15)/
  88. % ((2*k+3)*(2*k+1)*(k+5)*(k+4)*(k+1)*k),k);
  89. % gosper(-2^k*((k+11)^2*(k+1)^2-2*(k+10)^2*k^2)/
  90. % ((k+11)^2*(k+10)^2*(k+1)^2*k^2),k);
  91. % gosper(-2^k*((k+6)^2*(k+1)^2-2*(k+5)^2*k^2)/
  92. % ((k+6)^2*(k+5)^2*(k+1)^2*k^2),k);
  93. % gosper(2^k*(k^4-14*k^2-24*k-9)/(k^2*(k+1)^2*(k+2)^2*(k+3)^2),k);
  94. % gosper(((k^2-k-n^2-n-2)*gamma(k+n+2)*gamma(n+1))/
  95. % (2*(-1)^k*2^k*(k+n+1)*gamma(-(k-n-1))*gamma(k+2)),k);
  96. % gosper(1/(k+1)*binomial(2*k,k)/(n-k+1)*binomial(2*n-2*k,n-k),k);
  97. gosper(3^k*(4*k^2+2*a*k-4*k-2-a)/((2*k+2+a)*(2*k+a)*(k+1)*k),k);
  98. k
  99. 3*3
  100. -------------------------
  101. (2*(k + 1) + a)*(k + 1)
  102. gosper(2^k*(k^2-2*k-1)/(k^2*(k+1)^2),k);
  103. k
  104. 2*2
  105. ----------
  106. 2
  107. (k + 1)
  108. gosper((3*k^2+3*k+1)/(k^3*(k+1)^3),k);
  109. 2
  110. (k + 3*k + 3)*k
  111. ------------------
  112. 3
  113. (k + 1)
  114. gosper((6*k+3)/(4*k^4+8*k^3+8*k^2+4*k+3),k);
  115. (k + 2)*k
  116. ----------------
  117. 2
  118. 2*k + 4*k + 3
  119. gosper(-(k^2+3*k+3)/(k^4+2*k^3-3*k^2-4*k+2),k);
  120. (2*k + 5)*k
  121. --------------
  122. 2
  123. k + 2*k - 1
  124. gosper(k^2*4^k/((k+1)*(k+2)),k);
  125. k
  126. 4*4 *(k - 1)
  127. --------------
  128. 3*(k + 2)
  129. gosper((2*k-1)^3,k);
  130. 2 2
  131. (2*k - 1)*k
  132. gosper(3*k^2+3*k+1,k);
  133. 2
  134. (k + 3*k + 3)*k
  135. gosper((k^2+4*k+2)*2^k,k);
  136. k 2
  137. 2*2 *(k + 1)
  138. % gosper(2^k*(k^3-3*k^2-3*k-1)/(k^3*(k+1)^3),k);
  139. gosper(k*n^k,k);
  140. k
  141. n *((n - 1)*k - 1)*n
  142. ----------------------
  143. 2
  144. (n - 1)
  145. % gosper(3^k*(2*k^3+k^2+3*k+6)/((k^2+2)*(k^2+2*k+3)),k);
  146. % gosper(4*(1-k)*(k^2-2*k-1)/(k^2*(k+1)^2*(k-2)^2*(k-3)^2),k);
  147. % gosper(2^k*(k^4-14*k^2-24*k-9)/(k^2*(k+1)^2*(k+2)^2*(k+3)^2),k);
  148. gosper((1+k)/(1-k)+2/k,k);
  149. 2
  150. - (k - 2)
  151. -------------
  152. k
  153. gosper(1/(k*(k+1)),k);
  154. k
  155. -------
  156. k + 1
  157. gosper(1/(k*(k+2)),k);
  158. (3*k + 5)*k
  159. -------------------
  160. 4*(k + 2)*(k + 1)
  161. gosper(1/(k*(k+10)),k);
  162. 9 8 7 6 5 4
  163. ((7381*k + 380755*k + 8495520*k + 107353950*k + 844356513*k + 4272540195*k
  164. 3 2
  165. + 13854467330*k + 27627865100*k + 30558324456*k + 14171968800)*k)/(25200
  166. *(k + 10)*(k + 9)*(k + 8)*(k + 7)*(k + 6)*(k + 5)*(k + 4)*(k + 3)*(k + 2)
  167. *(k + 1))
  168. % gosper(1/(k*(k+30)),k);
  169. gosper(1/(k*(k+1)*(k+2)),k);
  170. (k + 3)*k
  171. -------------------
  172. 4*(k + 2)*(k + 1)
  173. gosper(1/(k*(k+1)*(k+2)*(k+3)*(k+4)*(k+5)*(k+6)*(k+7)*(k+8)*(k+9)*
  174. (k+10)),k);
  175. 8 7 6 5 4 3 2
  176. ((k + 44*k + 836*k + 8954*k + 59279*k + 249986*k + 667084*k + 1071576*k
  177. + 966240)*(k + 11)*k)/(36288000*(k + 10)*(k + 9)*(k + 8)*(k + 7)*(k + 6)
  178. *(k + 5)*(k + 4)*(k + 3)*(k + 2)*(k + 1))
  179. gosper(pochhammer(k-n,n),k);
  180. pochhammer(k - n,n)*k
  181. -----------------------
  182. n + 1
  183. gosper((a+k-1)*pochhammer(a,k),k);
  184. (a + k)*pochhammer(a,k)
  185. gosper((a-k-1)/pochhammer(a-k,k),k);
  186. - 1
  187. ---------------------
  188. pochhammer(a - k,k)
  189. gosper(binomial(k,n),k);
  190. (k + 1)*binomial(k,n)
  191. -----------------------
  192. n + 1
  193. gosper(k*binomial(k,n),k);
  194. (k*n + k + n)*(k + 1)*binomial(k,n)
  195. -------------------------------------
  196. (n + 2)*(n + 1)
  197. % gosper(k^10*binomial(k,n),k);
  198. gosper(1/binomial(k,n),k);
  199. n - 1 - k
  200. -----------------------
  201. (n - 1)*binomial(k,n)
  202. gosper(k/binomial(k,n),k);
  203. (n - 1 - k)*k
  204. -----------------------
  205. (n - 2)*binomial(k,n)
  206. % gosper(k^10/binomial(k,n),k);
  207. gosper(binomial(k-n,k),k);
  208. (n - 1 - k)*binomial(k - n,k)
  209. -------------------------------
  210. n - 1
  211. gosper((-1)^k*binomial(n,k),k);
  212. k
  213. - ( - 1) *(k - n)*binomial(n,k)
  214. ----------------------------------
  215. n
  216. gosper((-1)^k/binomial(n,k),k);
  217. k
  218. ( - 1) *(k + 1)
  219. -----------------------
  220. (n + 2)*binomial(n,k)
  221. gosper((-1)^(k+1)*(4*k+1)*factorial(2*k)/
  222. (factorial(k)*4^k*(2*k-1)*factorial(k+1)),k);
  223. k
  224. - ( - 1) *factorial(2*k)
  225. ----------------------------------
  226. k
  227. 4 *factorial(k + 1)*factorial(k)
  228. % term:=3^k*(3*k^2+2*a*k-4*k-2-a)/((2*k+2+a)*(2*k+a)*(k+1)*k)$
  229. % term:=sub(k=k+3,term)-term$
  230. % gosper(term,k);
  231. % clear(term);
  232. % 2) Examples for the Wilf-Zeilberger method:
  233. % H. S. Wilf and D. Zeilberger:
  234. % Rational functions certify combinatorial identities.
  235. % J. Amer. Math. Soc. 3, 1990, 147-158.
  236. % Binomial theorem
  237. summand:=binomial(n,k)/2^n$
  238. gosper(sub(n=n+1,summand)-summand,k);
  239. (n + 1 - k)*(binomial(n + 1,k) - 2*binomial(n,k))
  240. ---------------------------------------------------
  241. n
  242. 2*2 *(n + 1 - 2*k)
  243. % Vandermonde
  244. summand:=binomial(n,k)^2/binomial(2*n,n)$
  245. gosper(sub(n=n+1,summand)-summand,k);
  246. 2 2
  247. ((binomial(n + 1,k) *binomial(2*n,n) - binomial(2*(n + 1),n + 1)*binomial(n,k) )
  248. 2
  249. *(2*k - 3*n - 1)*(k - n - 1) )/(
  250. 2
  251. (2*(2*(n + 1) - k)*(2*n + 1)*k - (3*n + 1)*(n + 1) )
  252. *binomial(2*(n + 1),n + 1)*binomial(2*n,n))
  253. % Gauss
  254. % summand:=factorial(n+k)*factorial(b+k)*factorial(c-n-1)*factorial(c-b-1)
  255. % /(factorial(n-1)*factorial(c-n-b-1)*factorial(k+1)*factorial(c+k)*
  256. % factorial(b-1))$
  257. % gosper(sub(n=n+1,summand)-summand,k);
  258. % Kummer
  259. % summand:=(-1)^(n+k)*factorial(2*n+c-1)*factorial(n)*factorial(n+c-1)/(
  260. % factorial(2*n+c-1-k)*factorial(2*n-k)*factorial(c+k-1)*factorial(k))$
  261. % gosper(sub(n=n+1,summand)-summand,k);
  262. % Saalschuetz
  263. % summand:=factorial(a+k-1)*factorial(b+k-1)*factorial(n)*
  264. % factorial(n+c-a-b-k-1)*factorial(n+c-1)/(factorial(k)*factorial(n-k)*
  265. % factorial(k+c-1)*factorial(n+c-a-1)*factorial(n+c-b-1))$
  266. % gosper(sub(n=n+1,summand)-summand,k);
  267. % Dixon
  268. % summand:=(-1)^k*binomial(n+b,n+k)*binomial(n+c,c+k)*binomial(b+c,b+k)*
  269. % factorial(n)*factorial(b)*factorial(c)/factorial(n+b+c)$
  270. % gosper(sub(n=n+1,summand)-summand,k);
  271. % 3) Results from Gosper's original work
  272. % R. W. Gosper, Jr.:
  273. % Decision procedure for indefinite hypergeometric summation,
  274. % Proc. Nat. Acad. Sci. USA 75 (1978), 40-42.
  275. % ff(k)=product(a+b*j+c*j^2,j,1,k);
  276. % gg(k)=product(e+b*j+c*j^2,j,1,k);
  277. operator ff,gg;
  278. let {ff(~k+~m) => ff(k+m-1)*(c*(k+m)^2+b*(k+m)+a)
  279. when (fixp(m) and m>0),
  280. ff(~k+~m) => ff(k+m+1)/(c*(k+m+1)^2+b*(k+m+1)+a)
  281. when (fixp(m) and m<0)};
  282. let {gg(~k+~m) => gg(k+m-1)*(c*(k+m)^2+b*(k+m)+e)
  283. when (fixp(m) and m>0),
  284. gg(~k+~m) => gg(k+m+1)/(c*(k+m+1)^2+b*(k+m+1)+e)
  285. when (fixp(m) and m<0)};
  286. gosper(ff(k-1)/gg(k),k);
  287. ff(k)
  288. ---------------
  289. (a - e)*gg(k)
  290. % gosper(ff(k-1)/gg(k+1),k);
  291. % gosper(ff(k-1)/gg(k+2),k);
  292. % ff(k)=product(a+b*j+c*j^2+d*j^3,j,1,k);
  293. % gg(k)=product(e+b*j+c*j^2+d*j^3,j,1,k);
  294. let {
  295. ff(~k+~m) => ff(k+m-1)*(d*(k+m)^3+c*(k+m)^2+b*(k+m)+a)
  296. when (fixp(m) and m>0),
  297. ff(~k+~m) => ff(k+m+1)/(d*(k+m+1)^3+c*(k+m+1)^2+b*(k+m+1)+a)
  298. when (fixp(m) and m<0)};
  299. let {
  300. gg(~k+~m) => gg(k+m-1)*(d*(k+m)^3+c*(k+m)^2+b*(k+m)+e)
  301. when (fixp(m) and m>0),
  302. gg(~k+~m) => gg(k+m+1)/(d*(k+m+1)^3+c*(k+m+1)^2+b*(k+m+1)+e)
  303. when (fixp(m) and m<0)};
  304. gosper(ff(k-1)/gg(k),k);
  305. ff(k)
  306. ---------------
  307. (a - e)*gg(k)
  308. gosper(ff(k-1)/gg(k+1),k);
  309. ***** Gosper algorithm: no closed form solution exists
  310. % Decision: no closed form solution exists
  311. % ff(k)=product(a+b*j+c*j^2+d*j^3+e*j^4,j,1,k);
  312. % gg(k)=product(f+b*j+c*j^2+d*j^3+e*j^4,j,1,k);
  313. let {
  314. ff(~k+~m) => ff(k+m-1)*(e*(k+m)^4+d*(k+m)^3+c*(k+m)^2+b*(k+m)+a)
  315. when (fixp(m) and m>0),
  316. ff(~k+~m) => ff(k+m+1)/(e*(k+m+1)^4+d*(k+m+1)^3+c*(k+m+1)^2+b*(k+m+1)+a)
  317. when (fixp(m) and m<0)};
  318. let {
  319. gg(~k+~m) => gg(k+m-1)*(e*(k+m)^4+d*(k+m)^3+c*(k+m)^2+b*(k+m)+f)
  320. when (fixp(m) and m>0),
  321. gg(~k+~m) =>
  322. gg(k+m+1)/(e*(k+m+1)^4+d*(k+m+1)^3+c*(k+m+1)^2+b*(k+m+1)+f)
  323. when (fixp(m) and m<0)};
  324. gosper(ff(k-1)/gg(k),k);
  325. ff(k)
  326. ---------------
  327. (a - f)*gg(k)
  328. % ff=product(j^3+b*j^2+c*j+(2*c-4*b+8),j,1,k);
  329. % gg=product(j^3+b*j^2+c*j,j,1,k)
  330. let {
  331. ff(~k+~m) => ff(k+m-1)*((k+m)^3+c*(k+m)^2+b*(k+m)+(2*c-4*b+8))
  332. when (fixp(m) and m>0),
  333. ff(~k+~m) => ff(k+m+1)/((k+m+1)^2+c*(k+m+1)^2+b*(k+m+1)+(2*c-4*b+8))
  334. when (fixp(m) and m<0)};
  335. let {
  336. gg(~k+~m) => gg(k+m-1)*((k+m)^3+c*(k+m)^2+b*(k+m)+1)
  337. when (fixp(m) and m>0),
  338. gg(~k+~m) => gg(k+m+1)/((k+m+1)^2+c*(k+m+1)^2+b*(k+m+1)+1)
  339. when (fixp(m) and m<0)};
  340. gosper(ff(k-1)/gg(k),k);
  341. ff(k)
  342. -----------------------
  343. (2*c + 7 - 4*b)*gg(k)
  344. clear(ff,gg);
  345. % 4) Examples for which gosper decides that no hypergeometric term
  346. % antidifference exists
  347. gosper(factorial(k),k);
  348. ***** Gosper algorithm: no closed form solution exists
  349. gosper(factorial(2*k)/(factorial(k)*factorial(k+1)),k);
  350. ***** Gosper algorithm: no closed form solution exists
  351. % gosper(1/(factorial(k)*(k^4+k^2+1)),k);
  352. gosper(binomial(A,k),k);
  353. ***** Gosper algorithm: no closed form solution exists
  354. gosper(1/k,k);
  355. ***** Gosper algorithm: no closed form solution exists
  356. gosper((1+k)/(1-k),k);
  357. ***** Gosper algorithm: no closed form solution exists
  358. % gosper(3^k*(3*k^2+2*a*k-4*k-2-a)/((2*k+2+a)*(2*k+a)*(k+1)*k),k);
  359. gosper(factorial(k+n)*factorial(n)/
  360. ((-1)^k*factorial(n-k)*factorial(k)*2^k),k);
  361. ***** Gosper algorithm: no closed form solution exists
  362. gosper(1/(k*(k+1/2)),k);
  363. ***** Gosper algorithm: no closed form solution exists
  364. gosper(pochhammer(a,k),k);
  365. ***** Gosper algorithm: no closed form solution exists
  366. gosper(binomial(n,k),k);
  367. ***** Gosper algorithm: no closed form solution exists
  368. % 5) Finding recurrence equations for definite sums
  369. % D. Zeilberger,
  370. % A fast algorithm for proving terminating hypergeometric identities,
  371. % Discrete Math. 80 (1990), 207-211.
  372. sumrecursion(binomial(n,k),k,n);
  373. 2*summ(n - 1) - summ(n)
  374. sumrecursion(k*binomial(n,k),k,n);
  375. recursion valid for n>=2
  376. (n - 1)*summ(n) - 2*summ(n - 1)*n
  377. % sumrecursion(
  378. % (-1)^k*binomial(2*n,k)*binomial(2*k,k)*binomial(4*n-2*k,2*n-k),k,n);
  379. sumrecursion(binomial(n,k)^2,k,n);
  380. 2*(2*n - 1)*summ(n - 1) - summ(n)*n
  381. sumrecursion(binomial(n,k)^2/binomial(2*n,n),k,n);
  382. summ(n - 1) - summ(n)
  383. % sumrecursion((-1)^k*binomial(n,k)^2,k,n);
  384. % Gauss
  385. sumrecursion(
  386. factorial(n+k)*factorial(b+k)*factorial(c-n-1)*factorial(c-b-1),k,n);
  387. - ((n - 1 - c)*(c - n)*summ(n) + summ(n - 2))
  388. + (n - 1 - b)*(n - 1 - c)*summ(n - 1)
  389. sumrecursion(
  390. pochhammer(a,k)*pochhammer(b,k)/(factorial(k)*pochhammer(c,k)),k,a);
  391. (b - c + a)*summ(a) - (a - c)*summ(a - 1)
  392. % Kummer
  393. sumrecursion((-1)^(n+k)*factorial(2*n+c-1)*factorial(n)*factorial(n+c-1)
  394. /(factorial(2*n+c-1-k)*factorial(2*n-k)*factorial(c+k-1)*
  395. factorial(k)),k,n);
  396. summ(n - 1) - summ(n)
  397. sumrecursion((-1)^k/(
  398. factorial(2*n+c-1-k)*factorial(2*n-k)*factorial(c+k-1)*
  399. factorial(k)),k,n);
  400. (2*n - 1 + c)*(2*(n - 1) + c)*(n - 1 + c)*summ(n)*n + summ(n - 1)
  401. % Saalschuetz
  402. % sumrecursion(factorial(a+k-1)*factorial(b+k-1)*factorial(n)*
  403. % factorial(n+c-a-b-k-1)*factorial(n+c-1)/
  404. % (factorial(k)*factorial(n-k)*factorial(k+c-1)*
  405. % factorial(n+c-a-1)*factorial(n+c-b-1)),k,n);
  406. sumrecursion(factorial(a+k-1)*factorial(b+k-1)*factorial(n+c-a-b-k-1)/(
  407. factorial(k)*factorial(n-k)*factorial(k+c-1)),k,n);
  408. - (n - 1 + c - a)*(n - 1 + c - b)*summ(n - 1) + (n - 1 + c)*summ(n)*n
  409. % Dixon
  410. % sumrecursion((-1)^k*binomial(n+b,n+k)*binomial(n+c,c+k)*
  411. % binomial(b+c,b+k)*
  412. % factorial(n)*factorial(b)*factorial(c)/factorial(n+b+c),k,n);
  413. sumrecursion((-1)^k*binomial(n+b,n+k)*binomial(n+c,c+k)*
  414. binomial(b+c,b+k),k,n);
  415. (c + n + b)*summ(n - 1) - summ(n)*n
  416. sumrecursion((-1)^(k-n)*binomial(2*n,k)^3,k,n);
  417. 2
  418. 3*(3*n - 1)*(3*n - 2)*summ(n - 1) - summ(n)*n
  419. sumrecursion(
  420. (-1)^(k-n)*binomial(2*n,k)^3/(binomial(3*n,n)*binomial(2*n,n)),k,n);
  421. summ(n - 1) - summ(n)
  422. % Clausen
  423. % summand:=factorial(a+k-1)*factorial(b+k-1)/
  424. % (factorial(k)*factorial(-1/2+a+b+k))*factorial(a+n-k-1)*
  425. % factorial(b+n-k-1)/(factorial(n-k)*factorial(-1/2+a+b+n-k))$
  426. % sumrecursion(summand,k,n);
  427. % Dougall
  428. % summand:=
  429. % pochhammer(d,k)*pochhammer(1+d/2,k)*pochhammer(d+b-a,k)*
  430. % pochhammer(d+c-a,k)*
  431. % pochhammer(1+a-b-c,k)*pochhammer(n+a,k)*pochhammer(-n,k)/
  432. % (factorial(k)*
  433. % pochhammer(d/2,k)*pochhammer(1+a-b,k)*pochhammer(1+a-c,k)*
  434. % pochhammer(b+c+d-a,k)*pochhammer(1+d-a-n,k)*pochhammer(1+d+n,k))$
  435. % sumrecursion(summand,k,n);
  436. % Apery
  437. sumrecursion(binomial(n,k)^2*binomial(n+k,k)^2,k,n);
  438. 3 3
  439. - ((n - 1) *summ(n - 2) + summ(n)*n )
  440. 2
  441. + (17*n - 17*n + 5)*(2*n - 1)*summ(n - 1)
  442. % sumrecursion(4*(-1)^k*binomial(m-1,k)*binomial(2*m-1,2*k)/
  443. % binomial(4*m-1,4*k)*(4*m^2+16*k^2-16*k*m+16*k-6*m+3)/
  444. % ((4*m-4*k-3)*(4*m-4*k-1)),k,m);
  445. sumrecursion((-1)^k*binomial(n,k)*binomial(k,n),k,n);
  446. summ(n - 1) + summ(n)
  447. sumrecursion((-1)^k*binomial(n,k)*binomial(2*k,n),k,n);
  448. 2*summ(n - 1) + summ(n)
  449. sumrecursion((-1)^k*binomial(n,k)*binomial(k,j)^2,k,n);
  450. 2
  451. (n - 1 - 2*j)*summ(n - 1)*n - (j - n) *summ(n)
  452. sumrecursion(binomial(n,k)*binomial(a,k),k,n);
  453. (a + n)*summ(n - 1) - summ(n)*n
  454. sumrecursion((3*k-2*n)*binomial(n,k)^2*binomial(2*k,k),k,n);
  455. summ(n - 1) - summ(n)
  456. sumrecursion(binomial(n-k,k),k,n);
  457. summ(n - 1) - summ(n) + summ(n - 2)
  458. sumrecursion(binomial(n,k)*binomial(n+k,k),k,n);
  459. 6*summ(n - 1)*n - 3*summ(n - 1) - summ(n)*n - (n - 1)*summ(n - 2)
  460. % sumrecursion(binomial(n+k,m+2*k)*binomial(2*k,k)*(-1)^k/(k+1),k,n);
  461. sumrecursion((-1)^k*binomial(n-k,k)*binomial(n-2*k,m-k),k,n);
  462. summ(n - 1) - summ(n)
  463. % sumrecursion((-1)^k*binomial(n-k,k)*binomial(n-2*k,m-k),k,m);
  464. sumrecursion(binomial(n+k,2*k)*2^(n-k),k,n);
  465. 5*summ(n - 1) - summ(n) - 4*summ(n - 2)
  466. sumrecursion(binomial(n,k)*binomial(2*k,k)*(-1/4)^k,k,n);
  467. (2*n - 1)*summ(n - 1) - 2*summ(n)*n
  468. % sumrecursion(binomial(n,i)*binomial(2*n,n-i),i,n);
  469. sumrecursion((-1)^k*binomial(n,k)*binomial(2*k,k)*4^(n-k),k,n);
  470. 2*(2*n - 1)*summ(n - 1) - summ(n)*n
  471. sumrecursion((-1)^k*binomial(n,k)/binomial(k+a,k),k,n);
  472. summ(n - 1) + summ(n)
  473. % sumrecursion((-1)^k*binomial(n,k)/binomial(k+a,k),k,a);
  474. sumrecursion((-1)^(n-k)*binomial(2*n,k)^2,k,n);
  475. 2*(2*n - 1)*summ(n - 1) - summ(n)*n
  476. sumrecursion(factorial(a+k)*factorial(b+k)*factorial(n+c-a-b-k-1)/(
  477. factorial(k+1)*factorial(n-k)*factorial(k+c)),k,a);
  478. - (n + 1 + c - a)*(b - c + a)*summ(a) + (a - c)*(a - 1)*summ(a - 1)
  479. % sumrecursion(factorial(a+k)*factorial(b+k)*factorial(n+c-a-b-k-1)/(
  480. % factorial(k+1)*factorial(n-k)*factorial(k+c)),k,b);
  481. % sumrecursion(factorial(a+k)*factorial(b+k)*factorial(n+c-a-b-k-1)/(
  482. % factorial(k+1)*factorial(n-k)*factorial(k+c)),k,c);
  483. sumrecursion(binomial(2*n+1,2*p+2*k+1)*binomial(p+k,k),k,n);
  484. (2*p + 1 - 2*n)*(n - p)*summ(n) - 2*(p + 1 - 2*n)*(2*n - p)*summ(n - 1)
  485. % sumrecursion(binomial(2*n+1,2*p+2*k+1)*binomial(p+k,k),k,p);
  486. sumrecursion(binomial(r,m)*binomial(s,t-m),m,r);
  487. (s - t + r)*summ(r) - (r + s)*summ(r - 1)
  488. % sumrecursion(binomial(r,m)*binomial(s,t-m),m,s);
  489. % sumrecursion(binomial(r,m)*binomial(s,t-m),m,t);
  490. sumrecursion(binomial(2*n+1,2*k)*binomial(m+k,2*n),k,n);
  491. (2*n - 3 - 2*m)*(n - 1 - m)*summ(n - 1) - (2*n - 1)*summ(n)*n
  492. % sumrecursion(binomial(2*n+1,2*k)*binomial(m+k,2*n),k,m);
  493. sumrecursion(binomial(n,k)*binomial(k,j)*x^j,k,n);
  494. (j - n)*summ(n) + 2*summ(n - 1)*n
  495. % sumrecursion(binomial(n,k)*binomial(k,j)*x^j,k,j);
  496. % sumrecursion(binomial(n,k)*binomial(k,j)*x^k,k,n);
  497. sumrecursion(x*binomial(n+k,2*k)*((x^2-1)/4)^(n-k),k,n);
  498. 2 2 2
  499. - ((x + 1) *(x - 1) *summ(n - 2) + 16*summ(n)) + 8*(x + 1)*summ(n - 1)
  500. sumrecursion(binomial(n+k-1,2*k-1)*(x-1)^(2*k)*x^(n-k)/k,k,n);
  501. 2 2
  502. - ((n - 2)*summ(n - 2)*x + summ(n)*n) + (n - 1)*(x + 1)*summ(n - 1)
  503. sumrecursion(
  504. 1/(k+1)*binomial(2*k,k)/(n-k+1)*binomial(2*n-2*k,n-k),k,n);
  505. summ(n - 1) + summ(n)
  506. sumrecursion(binomial(m,r)*binomial(n-r,n-r-q)*(t-1)^r,r,m);
  507. (t + 1 + n*t - (t - 1)*q - (t + 1)*m)*summ(m - 1)
  508. - ((n + 1 - m)*summ(m) - (m - 1)*summ(m - 2)*t)
  509. % sumrecursion(binomial(m,r)*binomial(n-r,n-r-q)*(t-1)^r,r,n);
  510. % sumrecursion(binomial(m,r)*binomial(n-r,n-r-q)*(t-1)^r,r,q);
  511. % sumrecursion(binomial(m,r)*binomial(n-r,n-r-q)*(t-1)^r,r,r);
  512. sumrecursion(pochhammer(-n/2,k)*pochhammer(-n/2+1/2,k)/
  513. (factorial(k)*pochhammer(b+1/2,k)),k,n);
  514. (n - 1 + 2*b)*summ(n) - 2*(n - 1 + b)*summ(n - 1)
  515. % Watson
  516. % sumrecursion(pochhammer(a,k)*pochhammer(b,k)*pochhammer(c,k)/(
  517. % factorial(k)*pochhammer(1/2*(a+b+1),k)*pochhammer(2*c,k)),k,c);
  518. % sumrecursion(pochhammer(-m,j)*pochhammer(m+2*k+2,j)*pochhammer(k+1/2,j)/
  519. % (factorial(j)*pochhammer(k+3/2,j)*pochhammer(2*k+1,j)),j,k);
  520. sumrecursion((-1)^k*binomial(n,k)^3,k,n);
  521. 2
  522. 3*(3*n - 2)*(3*n - 4)*summ(n - 2) + summ(n)*n
  523. % sumrecursion(pochhammer(-n,k)*pochhammer(n+2*a,k)*pochhammer(a,k)/(
  524. % factorial(k)*pochhammer(2*a/2,k)*pochhammer((2*a+1)/2,k))*(2/4)^k,k,n);
  525. % sumrecursion(pochhammer(-n,k)*pochhammer(n+4*a,k)*pochhammer(a,k)/(
  526. % factorial(k)*pochhammer(4*a/2,k)*pochhammer((4*a+1)/2,k))*(4/4)^k,k,n);
  527. % sumrecursion(binomial(n+k+1,n-k)*pochhammer(-n+k,j)*pochhammer(k+1/2,j)*
  528. % pochhammer(n+k+2,j)/(factorial(j)*pochhammer(k+3/2,j)*
  529. % pochhammer(2*k+1,j)),j,n);
  530. % sumrecursion(pochhammer(-m,j)*pochhammer(m+2*k+2,j)*
  531. % pochhammer(k+1/2,j)/(
  532. % factorial(j)*pochhammer(k+3/2,j)*pochhammer(2*k+1,j)),j,m);
  533. % sumrecursion(binomial(n+k+1,n-k)*pochhammer(-n+k,j)*
  534. % pochhammer(k+1/2,j)*
  535. % pochhammer(n+k+2,j)/(factorial(j)*pochhammer(k+3/2,j)*
  536. % pochhammer(2*k+1,j)),
  537. % j,k);
  538. % sumrecursion(pochhammer(a+b+c-n,j+l)*pochhammer(a+b-n/2,j+l)/
  539. % (factorial(j)*factorial(l)*pochhammer(a-n/2+1,j)*
  540. % pochhammer(b-n/2+1,l)),j,a);
  541. % sumrecursion(pochhammer(a+b+c-n,j+l)*pochhammer(a+b-n/2,j+l)/
  542. % (factorial(j)*factorial(l)*pochhammer(a-n/2+1,j)*
  543. % pochhammer(b-n/2+1,l)),j,b);
  544. sumrecursion(pochhammer(a+b+c-n,j+l)*pochhammer(a+b-n/2,j+l)/
  545. (factorial(j)*factorial(l)*pochhammer(a-n/2+1,j)*
  546. pochhammer(b-n/2+1,l)),j,c);
  547. - (n + 1 - l - c - b - a)*(n + 2 - 2*l - 2*c - 2*b)*summ(c - 1)
  548. + 2*(n + 1 - 2*l - c - 2*b - a)*(n + 1 - c - b - a)*summ(c)
  549. % sumrecursion(
  550. % (-1)^(a+b+c)*gamma(a+b+c-d/2)*gamma(d/2-c)*gamma(a+c-d/2)*
  551. % gamma(b+c-d/2)/
  552. % (gamma(a)*gamma(b)*gamma(d/2)*gamma(a+b+2*c-d)*(m^2)^(a+b+c-d))*
  553. % pochhammer(a+b+c-d,k)*pochhammer(a+c-d/2,k)/
  554. % (pochhammer(a+b+2*c-d,k)*factorial(k)),k,a);
  555. % sumrecursion(
  556. % (-1)^(a+b+c)*gamma(a+b+c-d/2)*gamma(d/2-c)*gamma(a+c-d/2)*
  557. % gamma(b+c-d/2)/
  558. % (gamma(a)*gamma(b)*gamma(d/2)*gamma(a+b+2*c-d)*(m^2)^(a+b+c-d))*
  559. % pochhammer(a+b+c-d,k)*pochhammer(a+c-d/2,k)/
  560. % (pochhammer(a+b+2*c-d,k)*factorial(k)),k,b);
  561. % sumrecursion(
  562. % (-1)^(a+b+c)*gamma(a+b+c-d/2)*gamma(d/2-c)*gamma(a+c-d/2)*
  563. % gamma(b+c-d/2)/
  564. % (gamma(a)*gamma(b)*gamma(d/2)*gamma(a+b+2*c-d)*(m^2)^(a+b+c-d))*
  565. % pochhammer(a+b+c-d,k)*pochhammer(a+c-d/2,k)/
  566. % (pochhammer(a+b+2*c-d,k)*factorial(k)),k,c);
  567. % sumrecursion(pochhammer(-n,k)*pochhammer(n+3*a,k)*pochhammer(a,k)/(
  568. % factorial(k)*pochhammer(3*a/2,k)*
  569. % pochhammer((3*a+1)/2,k))*(3/4)^k,k,n);
  570. % summand:=k*(-1)^j*pochhammer(2*k+j+1,j)*pochhammer(2*k+2*j+2,n-k-j)/(
  571. % factorial(k+j)*factorial(j)*factorial(n-k-j))*exp(-(j+k)*t)$
  572. % summand:=k*(-1)^j*pochhammer(2*k+j+1,j)*pochhammer(2*k+2*j+2,n-k-j)/(
  573. % (k+j)*factorial(j)*factorial(n-k-j))*exp(-(j+k)*t)$
  574. % sumrecursion(summand,j,n);
  575. clear(summand);
  576. % 6) Finding recurrence equations for hypergeometric functions
  577. % Koornwinder, T. H.:
  578. % On Zeilberger's algorithm and
  579. % its q-analogue: a rigorous description.
  580. % J. of Comput. and Appl. Math. 48, 1993, 91-111.
  581. % Gauss
  582. hyperrecursion({a,b},{c},1,a);
  583. (b - c + a)*summ(a) - (a - c)*summ(a - 1)
  584. % Dougall
  585. % hyperrecursion({d,1+d/2,d+b-a,d+c-a,1+a-b-c,n+a,-n},
  586. % {d/2,1+a-b,1+a-c,b+c+d-a,1+d-a-n,1+d+n},1,n);
  587. % Baxter
  588. % hyperrecursion({-n,-n-1,-n-2},{2,3},-1,n);
  589. % Krawtchouk polynomials
  590. % krawtchoukterm :=
  591. % (-1)^n*p^n*binomial(NN,n)*hyperterm({-n,-x},{-NN},1/p,k)$
  592. % sumrecursion(krawtchoukterm,k,n);
  593. % sumrecursion(krawtchoukterm,k,x);
  594. % sumrecursion(krawtchoukterm,k,NN);
  595. % clear(krawtchoukterm);
  596. % hyperrecursion({-n,b,c+4},{b+1,c},1,n);
  597. hyperrecursion({-n,b,c+1,d+1},{b+1,c,d},1,n);
  598. recursion valid for n>=3
  599. (b + n)*summ(n) - summ(n - 1)*n
  600. % 7) Extended versions of Gosper's and Zeilberger's algorithms
  601. % Koepf, W.:
  602. % Algorithms for the indefinite and definite summation.
  603. % Konrad-Zuse-Zentrum Berlin (ZIB), Preprint SC 94-33, 1994.
  604. % extended Gosper algorithm
  605. extended_gosper(k*factorial(k/7),k,7);
  606. k
  607. (k + 7)*factorial(---)
  608. 7
  609. extended_gosper(k*factorial(k/2),k,2);
  610. k
  611. (k + 2)*factorial(---)
  612. 2
  613. extended_gosper(k*factorial(k/2),k);
  614. k k - 1
  615. (k + 2)*factorial(---) + (k + 1)*factorial(-------)
  616. 2 2
  617. extended_gosper(binomial(k/2,n),k);
  618. k k - 1
  619. (k + 2)*binomial(---,n) + (k + 1)*binomial(-------,n)
  620. 2 2
  621. -------------------------------------------------------
  622. 2*(n + 1)
  623. extended_gosper(binomial(n,k/2)-binomial(n,k/2-1),k);
  624. k - 3 k - 1
  625. ( - ((2*n + 3 - k)*(n + 1 - k)*(binomial(n,-------) - binomial(n,-------))
  626. 2 2
  627. k - 2 k
  628. + (n + 2 - k)*(2*(n + 1) - k)*(binomial(n,-------) - binomial(n,---))))/(2
  629. 2 2
  630. *(n + 2 - k)*(n + 1 - k))
  631. % extended Zeilberger algorithm
  632. % extended_sumrecursion(binomial(n,k)*binomial(k/2,n),k,n,1,2);
  633. sumrecursion(binomial(n,k)*binomial(k/2,n),k,n);
  634. recursion valid for n>=3
  635. summ(n - 1) + 2*summ(n)
  636. extended_sumrecursion(binomial(n/2,k),k,n,2,1);
  637. 2*summ(n - 2) - summ(n)
  638. sumrecursion(binomial(n/2,k),k,n);
  639. 2*summ(n - 2) - summ(n)
  640. % sumrecursion(hyperterm({a,b,a+1/2-b,1+2*a/3,-n},
  641. % {2*a+1-2*b,2*b,2/3*a,1+a+n/2},4,k)/
  642. % (factorial(n)*2^(-n)/factorial(n/2))/
  643. % hyperterm({a+1,1},{a-b+1,b+1/2},1,n/2),k,n);
  644. % Watson
  645. % sumrecursion(pochhammer(a,k)*pochhammer(b,k)*pochhammer(c,k)/(
  646. % factorial(k)*pochhammer(1/2*(a+b+1),k)*pochhammer(2*c,k))/
  647. % (GAMMA(1/2)*GAMMA(1/2+c)*GAMMA(1/2+a/2+b/2)*GAMMA(1/2-a/2-b/2+c))*
  648. % GAMMA(1/2+a/2)*GAMMA(1/2+b/2)*GAMMA(1/2-a/2+c)*GAMMA(1/2-b/2+c),k,a);
  649. % hyperrecursion({a,b,c},{1/2*(a+b+1),2*c},1,a);
  650. % hyperrecursion({a,b,c},{1/2*(a+b+1),2*c},1,b);
  651. % 8) Closed form representations of hypergeometric sums
  652. % Vandermonde
  653. hypersum({-n,b},{c},1,n);
  654. pochhammer( - b + c,n)
  655. ------------------------
  656. pochhammer(c,n)
  657. % Saalschuetz
  658. hypersum({a,b,-n},{c,1+a+b-c-n},1,n);
  659. pochhammer( - a + c,n)*pochhammer( - b + c,n)
  660. -----------------------------------------------
  661. pochhammer( - a - b + c,n)*pochhammer(c,n)
  662. % Kummer
  663. hypersum({a,-n},{1+a+n},-1,n);
  664. pochhammer(a + 1,n)
  665. -----------------------
  666. a + 2
  667. pochhammer(-------,n)
  668. 2
  669. % Dixon
  670. hypersum({a,b,-n},{1+a-b,1+a+n},1,n);
  671. a - 2*b + 2
  672. pochhammer(a + 1,n)*pochhammer(-------------,n)
  673. 2
  674. -------------------------------------------------
  675. a + 2
  676. pochhammer(a - b + 1,n)*pochhammer(-------,n)
  677. 2
  678. % Dougall
  679. % hypersum({a,1+a/2,b,c,d,1+2*a-b-c-d+n,-n},
  680. % {a/2,1+a-b,1+a-c,1+a-d,1+a-(1+2*a-b-c-d+n),1+a+n},1,n);
  681. % Clausen
  682. % hypersum({a,b,1/2-a-b-n,-n},{1/2+a+b,1-a-n,1-b-n},1,n);
  683. hypersum({a,1+a/2,c,d,-n},{a/2,1+a-c,1+a-d,1+a+n},1,n);
  684. pochhammer(a - c - d + 1,n)*pochhammer(a + 1,n)
  685. -------------------------------------------------
  686. pochhammer(a - c + 1,n)*pochhammer(a - d + 1,n)
  687. hypersum({a,1+a/2,d,-n},{a/2,1+a-d,1+a+n},-1,n);
  688. pochhammer(a + 1,n)
  689. -------------------------
  690. pochhammer(a - d + 1,n)
  691. % m-fold case:
  692. hypersum({-n,-n,-n},{1,1},1,n);
  693. n/2 2 n 1 n
  694. ( - 27) *pochhammer(---,---)*pochhammer(---,---)
  695. 3 2 3 2
  696. {----------------------------------------------------,
  697. n 2
  698. factorial(---)
  699. 2
  700. 0}
  701. % hypersum({-n,n+3*a,a},{3*a/2,(3*a+1)/2},3/4,n);
  702. % 9) Hypergeometric representations
  703. sumtohyper(binomial(n,k)^3,k);
  704. hypergeom({ - n, - n, - n},{1,1},-1)
  705. sumtohyper(binomial(n,k)/2^n-sub(n=n-1,binomial(n,k)/2^n),k);
  706. - n + 2 - n
  707. - hypergeom({----------, - n},{------},-1)
  708. 2 2
  709. ---------------------------------------------
  710. n
  711. 2
  712. sumtohyper(binomial(k+j-1,k-j)*2*(-1)^(j+1)*factorial(2*j-1)/
  713. factorial(j-1)/factorial(j+1)*x^j,j);
  714. hypergeom({k + 1, - k + 1},{3},x)*k*x
  715. % term:=1/(n-1+k)*(1/2-1/2*x)^k/n*binomial(k-n-1,-n-1)*k*
  716. % binomial(n-1+k,n-1);
  717. % sumtohyper(sub(n=n+1,term)-term,k);
  718. end;
  719. Time for test: 891077 ms, plus GC time: 18717 ms