1% Test file for the REDUCE package QSUM 2% 3% Copyright (c) Wolfram Koepf, Harald Boeing, Konrad-Zuse-Zentrum Berlin, 1997 4% 5% Implementation of the q-Gosper and q-Zeilberger algorithms 6% 7% Reference: 8% 9% Koornwinder, T. H.: 10% On Zeilberger's algorithm and its q-analogue: a rigorous description. 11% J. of Comput. and Appl. Math. 48, 1993, 91-111. 12% 13% Some examples are from 14% 15% Koekoek, R. and Swarttouw, R.F.: 16% The Askey-scheme of Hypergeometric Orthogonal Polynomials and its q-analogue. 17% Report 94-05, Technische Universiteit Delft, Faculty of Technical Mathematics 18% and Informatics, Delft, 1994. 19% 20% Gasper, G. and Rahman, M.: 21% Basic Hypergeometric Series. 22% Encyclopedia of Mathematics and its Applications 35. 23% Ed. by G.-C. Rota, Cambridge University Press, London and New York, 1990. 24 25 26% Results of manual qsum.tex 27% 28load qsum; 29 30 31qgosper(qpochhammer(a,q,k)*q^k/qpochhammer(q,q,k),q,k); 32 33 34 k 35 (q *a - 1)*qpochhammer(a,q,k) 36------------------------------- 37 (a - 1)*qpochhammer(q,q,k) 38 39qgosper(qpochhammer(a,q,k)*qpochhammer(a*q^2,q^2,k)* 40 qpochhammer(q^(-n),q,k)*q^(n*k)/(qpochhammer(a,q^2,k)* 41 qpochhammer(a*q^(n+1),q,k)*qpochhammer(q,q,k)),q,k); 42 43 44 k*n k k n 1 2 2 45( - q *(q *a - 1)*(q - q )*qpochhammer(----,q,k)*qpochhammer(a*q ,q ,k) 46 n 47 q 48 49 2*k n n 50 *qpochhammer(a,q,k))/((q *a - 1)*(q - 1)*qpochhammer(q *a*q,q,k) 51 52 2 53 *qpochhammer(a,q ,k)*qpochhammer(q,q,k)) 54 55qgosper(qpochhammer(q^(-n),q,k)*z^k/qpochhammer(q,q,k)*z^n,q,k); 56 57 58***** No q-hypergeometric antidifference exists. 59 60off qgosper_down; 61 62 63qgosper(q^k*qbrackets(k,q),q,k); 64 65 66 k k 67 - q *(q + 1 - q )*qbrackets(k,q) 68----------------------------------- 69 k 70 (q - 1)*(q + 1)*(q - 1) 71 72on qgosper_down; 73 74 75qgosper(q^k,q,k,0,n); 76 77 78 n 79 q *q - 1 80---------- 81 q - 1 82 83qsumrecursion(qpochhammer(q^(-n),q,k)*z^k/qpochhammer(q,q,k),q,k,n); 84 85 86 n n 87 - ((q - z)*summ(n - 1) - q *summ(n)) 88 89on qsumrecursion_certificate; 90 91 92proof:=qsumrecursion(qpochhammer(q^(-n),q,k)*z^k/qpochhammer(q,q,k),q,k,n); 93 94 95 n n 96proof := { - ((q - z)*summ(n - 1) - q *summ(n)), 97 98 k n 99 - (q - q )*z 100 ----------------, 101 n 102 q - 1 103 104 k 1 105 z *qpochhammer(----,q,k) 106 n 107 q 108 --------------------------, 109 qpochhammer(q,q,k) 110 111 k, 112 113 downward_antidifference} 114 115off qsumrecursion_certificate; 116 117 118% proof of statement 119lhside:= qsimpcomb(sub(summ(n)=part(proof,3), 120summ(n-1)=sub(n=n-1,part(proof,3)),part(proof,1))); 121 122 123 k k n n 1 124 z *(q *(q - z) + q *(z - 1))*qpochhammer(----,q,k) 125 n 126 q 127lhside := ----------------------------------------------------- 128 n 129 (q - 1)*qpochhammer(q,q,k) 130 131rhside:= qsimpcomb((part(proof,2)*part(proof,3)- 132sub(k=k-1,part(proof,2)*part(proof,3)))); 133 134 135 k k n n k 1 136 - z *((q - q )*z - q *(q - 1))*qpochhammer(----,q,k) 137 n 138 q 139rhside := --------------------------------------------------------- 140 n 141 (q - 1)*qpochhammer(q,q,k) 142 143qsimpcomb((rhside-lhside)/part(proof,3)); 144 145 1460 147 148% proof done 149operator qlaguerre, qcharlier; 150 151 152% q-Laguerre polynomials, Koekoek, Swarttouw (3.21) 153qsumrecursion(qpochhammer(q^(alpha+1),q,n)/qpochhammer(q,q,n), 154 {q^(-n)}, {q^(alpha+1)}, q, -x*q^(n+alpha+1), qlaguerre(n)); 155 156 157 n alpha + n n 158((q + 1 - q )*q - q *(q *x + q))*qlaguerre(n - 1) 159 160 alpha + n n 161 + ((q - q)*qlaguerre(n - 2) + (q - 1)*qlaguerre(n))*q 162 163% q-Charlier polynomials, Koekoek, Swarttouw (3.23) 164qsumrecursion({q^(-n),q^(-x)},{0},q,-q^(n+1)/a,qcharlier(n)); 165 166 167 x n n 2*n 168 - ((q *((q + 1 - q )*a + q )*q - q )*qcharlier(n - 1) 169 170 x n n 171 + q *((q + a*q)*(q - q)*qcharlier(n - 2) - qcharlier(n)*a*q)) 172 173% continuous q-Jacobi polynomials, Koekoek, Swarttouw (3.10) 174%% on qsum_nullspace; 175%% term:= qpochhammer(q^(alpha+1),q,n)/qpochhammer(q,q,n)* 176%% qphihyperterm({q^(-n),q^(n+alpha+beta+1), 177%% q^(alpha/2+1/4)*exp(I*theta), q^(alpha/2+1/4)*exp(-I*theta)}, 178%% {q^(alpha+1), -q^((alpha+beta+1)/2), -q^((alpha+beta+2)/2)}, 179%% q, q, k)$ 180%% qsumrecursion(term,q,k,n,2); 181%% off qsum_nullspace; 182 183 184% Some more qgosper results with proof 185% 186% Gasper, Rahman (2.3.4) 187term:=qpochhammer(a,q,k)*qpochhammer(a*q^2,q^2,k)*qpochhammer(q^(-n),q,k)* 188q^(n*k)/(qpochhammer(a,q^2,k)*qpochhammer(a*q^(n+1),q,k)*qpochhammer(q,q,k)); 189 190 191 k*n 1 2 2 192 q *qpochhammer(----,q,k)*qpochhammer(a*q ,q ,k)*qpochhammer(a,q,k) 193 n 194 q 195term := ---------------------------------------------------------------------- 196 n 2 197 qpochhammer(q *a*q,q,k)*qpochhammer(a,q ,k)*qpochhammer(q,q,k) 198 199 200result:=qgosper(qpochhammer(a,q,k)*qpochhammer(a*q^2,q^2,k)* 201qpochhammer(q^(-n),q,k)*q^(n*k)/ 202(qpochhammer(a,q^2,k)*qpochhammer(a*q^(n+1),q,k)*qpochhammer(q,q,k)),q,k); 203 204 205 k*n k k n 1 206result := ( - q *(q *a - 1)*(q - q )*qpochhammer(----,q,k) 207 n 208 q 209 210 2 2 2*k n 211 *qpochhammer(a*q ,q ,k)*qpochhammer(a,q,k))/((q *a - 1)*(q - 1) 212 213 n 2 214 *qpochhammer(q *a*q,q,k)*qpochhammer(a,q ,k)*qpochhammer(q,q,k)) 215 216 217qsimpcomb(result-sub(k=k-1,result)-term); 218 219 2200 221 222 223% Gasper, Rahman (3.8.16) 224term:=(1-a*c*q^(4*k))*(1-b/c*q^(-2*k))*qpochhammer(a,q,k)*qpochhammer(b,q,k)* 225qpochhammer(q^(-3*n),q^3,k)*qpochhammer(a*c^2/b*q^(3*n),q^3,k)*q^(3*k)/ 226((1-a*c)*(1-b/c)*qpochhammer(c*q^3,q^3,k)*qpochhammer(a*c/b*q^3,q^3,k)* 227qpochhammer(a*c*q^(3*n+1),q,k)*qpochhammer(b/c*q^(1-3*n),q,k)); 228 229 230 3*n 2 231 k q *a*c 3 1 3 232term := (q *qpochhammer(-----------,q ,k)*qpochhammer(------,q ,k) 233 b 3*n 234 q 235 236 *qpochhammer(a,q,k)*qpochhammer(b,q,k) 237 238 3 239 6*k 2 4*k 2*k a*c*q 3 240 *( - q *a*c + q *a*b*c + q *c - b))/(qpochhammer(--------,q ,k) 241 b 242 243 b*q 3*n 244 *qpochhammer(--------,q,k)*qpochhammer(q *a*c*q,q,k) 245 3*n 246 q *c 247 248 3 3 2 249 *qpochhammer(c*q ,q ,k)*(a*b*c - a*c - b + c)) 250 251 252result:=qgosper((1-a*c*q^(4*k))*(1-b/c*q^(-2*k))*qpochhammer(a,q,k)* 253qpochhammer(b,q,k)*qpochhammer(q^(-3*n),q^3,k)*qpochhammer(a*c^2/ 254b*q^(3*n),q^3,k)*q^(3*k)/((1-a*c)*(1-b/c)*qpochhammer(c*q^3,q^3,k)* 255qpochhammer(a*c/b*q^3,q^3,k)*qpochhammer(a*c*q^(3*n+1),q,k)* 256qpochhammer(b/c*q^(1-3*n),q,k)),q,k); 257 258 259 3*k + 3*n 2 2*k k + n 2*n k k 260result := ( - (q *a*c - b)*(q + q + q )*(q *a - 1)*(q *b - 1) 261 262 3*n 2 263 k n q *a*c 3 1 3 264 *(q - q )*qpochhammer(-----------,q ,k)*qpochhammer(------,q ,k) 265 b 3*n 266 q 267 268 3*n 269 *qpochhammer(a,q,k)*qpochhammer(b,q,k)*c)/((q *a*c - b) 270 271 3 272 3*n a*c*q 3 273 *(q *c - 1)*(a*c - 1)*(b - c)*qpochhammer(--------,q ,k) 274 b 275 276 b*q 3*n 277 *qpochhammer(--------,q,k)*qpochhammer(q *a*c*q,q,k) 278 3*n 279 q *c 280 281 3 3 282 *qpochhammer(c*q ,q ,k)) 283 284 285qsimpcomb(result-sub(k=k-1,result)-term); 286 287 2880 289 290 291end; 292 293Tested on x86_64-pc-windows CSL 294Time (counter 1): 109 ms 295 296End of Lisp run after 0.10+0.06 seconds 297real 0.32 298user 0.00 299sys 0.06 300