Introduction

<<RISC`qGeneratingFunctions`

qGeneratingFunctions Package version 1.9
written by Christoph Koutschan
Copyright 2006-2009, Research Institute for Symbolic Computation (RISC),
Johannes Kepler University, Linz, Austria

q-Holonomic Sequences and Power Series

QRE2DE[{a[n+1]==(q^n+1)a[n],a[0]==1},a[n],A[t]]

QDE2RE[{-(q-1)A'[t]t^2+(1-2t)A[t]-1==0,A[0]==1},A[t],a[n]]

QRE2SE[{a[n+1]==(q^n+1)a[n],a[0]==1},a[n],A[t]]

QSE2RE[{-1+(1-t)A[t]-t A[q t]==0,AngleBracket[1][A[t]]==1},A[t],a[n]]

QSE2DE[{-1+(1-t)A[t]-t A[q t]==0,AngleBracket[1][A[t]]==1},A[t]]

QDE2SE[{-(q-1)A'[t]t^2+(1-2t)A[t]-1==0,A[0]==1},A[t]]

Closure Properties

Sum

QREPlus[{a[n]==q^n a[n-1],a[0]==1},{a[n]==2a[n-1],a[0]==1},a[n]]

QDEPlus[{a'[x]-x a[x]==0,a[0]==1},{a'[x]-2a[x]==0,a[0]==1},a[x]]

QSEPlus[{(1-x) a[q x]-a[x]==0,a[0]==1},{a[q x]-a[x]==0,a[0]==1},a[x]]

Hadamard Product

QREHadamard[{a[n]==q^n a[n-1],a[0]==1},{a[n]==2a[n-1],a[0]==1},a[n]]

QDEHadamard[{a'[x]-x a[x]==0,a[0]==1},{a'[x]-2a[x]==0,a[0]==1},a[x]]

QSEHadamard[{(1-x)a[q x]-a[x]==0,a[0]==1},{a[q x]-a[x]==0,a[0]==1},a[x]]

Cauchy Product

QRECauchy[{a[n]==q^n a[n-1],a[0]==1},{a[n]==2a[n-1],a[0]==1},a[n]]

QDECauchy[{a'[x]-x a[x]==0,a[0]==1},{a'[x]-2a[x]==0,a[0]==1},a[x]]

QSECauchy[{(1-x)a[q x]- a[x]==0,a[0]==1},{a[q x]-(1-q^2x)a[x]==0,a[0]==q^2},a[x]]

Substitution

QRESubstitute[{a[n]==q^n a[n-1]+a[n-2],a[0]==1,a[1]==q},a[n],2n+3]

QDESubstitute[{a'[x]==(q-x)a[x],a[0]==1},a[x],x^2]

QSESubstitute[{(1-x)a[q x]-a[x],a[0]==1},a[x],x^2]

Additional Functions

Evaluation

values=QRE2L[{a[n]==(q^n+1)a[n-1],a[0]==1},a[n],7]

QDE2L[{a'[x]==(x-q) a[x],a[0]==1},a[x],4]

Guessing

QREGuess[values,a[n],MaxDegree->1,MaxOrder->1]

Equation Manipulation Tools

QREHomogeneous[{a[n]==(1+q^n) a[n-1]-q^n,a[0]==1},a[n]]

Applications

q-Hypergeometric Identitites

<<RISC`qZeil`

Package q-Zeilberger version 4.50 written by Axel Riese
Copyright 1992-2009, Research Institute for Symbolic Computation (RISC),
Johannes Kepler University, Linz, Austria

rec1=qZeil[q^(k^2)qBinomial[n,k,q],{k,0,n},n]

rec2=qZeil[(-1)^k q^(k(5k+1)/2)qBinomial[2n,n+2k,q],{k,-n,n},n]

QREPlus[rec1,rec2,SUM[n]]

<<RISC`qSimplify`

Table[Sum[q^(k^2)qBinomial[n,k,q],{k,0,n}]==Sum[(-1)^k q^(k(5k+1)/2)qBinomial[2n,n+2k,q],{k,-n,n}],{n,0,5}]//qSimplify//FullSimplify

q-Trigonometric Functions

sinDe=QRE2DE[{a[n]==-1/(1-q^n)/(1-q^(n-1))a[n-2],a[0]==0,a[1]==1/(1-q)},a[n],f[x]]

SinDe=QRE2DE[{a[n]==-q^(2n-3)/(1-q^n)/(1-q^(n-1))a[n-2],a[0]==0,a[1]==1/(1-q)},a[n],f[x]]

cosDe=QRE2DE[{a[n]==-1/(1-q^n)/(1-q^(n-1))a[n-2],a[0]==1,a[1]==0},a[n],f[x]]

CosDe=QRE2DE[{a[n]==-q^(2n-3)/(1-q^n)/(1-q^(n-1))a[n-2],a[0]==1,a[1]==0},a[n],f[x]]

QDEPlus[QDECauchy[sinDe,SinDe,f[x]],QDECauchy[cosDe,CosDe,f[x]],f[x]]

QDE2RE[%,f[x],a[n]]

QDEPlus[QDECauchy[sinDe,CosDe,f[x]],QDECauchy[{f[x]==-1},SinDe,cosDe,f[x]],f[x]]

q-Fibonacci Numbers

defD={d[n+2]==d[n+1]+q^n d[n],d[0]==1,d[1]==0};
defE={d[n+2]==d[n+1]+q^n d[n],d[0]==0,d[1]==1};
lhs=QREPlus[
QREHadamard[defD,QRESubstitute[defE,d[n],n+1],d[n]],
QREHadamard[{d[n]==-1},QRESubstitute[defD,d[n],n+1],defE,d[n]],
d[n]]

QREPlus[lhs,{d[n]==-q^(n-1)d[n-1],d[0]==-1},d[n]]

Sequences Arising in the Borwein Conjecture

polysA=Table[Expand[Product[(1-q^(3j-2))(1-q^(3j-1)),{j,1,n}]],{n,0,45}]/.q^i_.:>If[Mod[i,3]===0,q^(i/3),0];

QREGuess[polysA,a[n],MaxOrder->4,MaxDegree->6]

q-Orthogonal Polynomials

recH={2x h[n]==h[n+1]+(1-q^n)h[n-1],h[0]==1,h[1]==2x};
recFac={h[n]==h[n-1]/(1-q^n),h[0]==1};
recFac2=QREHadamard[recFac,recFac,h[n]];
recLHS=QREHadamard[recH,recH,recFac2,h[n]]

recH2=QRESubstitute[recH,h[n],2n];

recRHS=QRECauchy[QREHadamard[recH2,recFac2,h[n]],recFac,h[n]]