(This is longish and elementary, but you might learn some Mathematica.) On Thu, Jul 27, 2017 at 5:30 AM, Bill Gosper <billgosper@gmail.com> wrote:
From the fragment below, it's not hard to guess the q upper index negation rule (a la GKP (5.14)): QBinomial[n, k, q] == (-1)^k q^(-(1/2) k (-1 + k - 2 n)) QBinomial[-1 + k - n, k, q] (checked out on http://mathworld.wolfram.com/CauchyBinomialTheorem.html). Here's <http://gosper.org/gea.pdf> a clarifying pdf I typesot for George Andrews. (But it *does* work to simply delete GMail's stinking linebreaks one at a time.) I remain convinced that this is all very old hat. --rwg
http://mathworld.wolfram.com/q-BinomialTheorem.html concludes with "The Cauchy binomial theorem <http://mathworld.wolfram.com/CauchyBinomialTheorem.html> is a special case of this general theorem." Needlessly special. They're really equivalent.
BtW, http://mathworld.wolfram.com/CauchyBinomialTheorem.html works for complex n if you simply run the sum to ∞, and interpret the QPochhammer carefully in terms of q-factorials.
I.e., simply replacing *n* with ∞, (relying on Mathematica to do only the sum to *n*) In[1003]:= Sum[y^m q^(m (m + 1)/2) QBinomial[n, m, q], {m, 0, #}] & /@ (∞ == n) // OutputForm Out[1003]//OutputForm= m (1 + m)/2 m Sum[q y QBinomial[n, m, q], {m, 0, ∞}] == QPochhammer[-q y, q, n] where "stopping with (possibly noninteger) n QPochhammer terms" means starting from both -q y and -y q^(n+1), taking both to ∞, and dividing: In[1004]:= %[[2]] == Drop[%[[2]], -1]/QPochhammer[-y q q^n, q] Out[1004]= QPochhammer[-q y, q, n] == QPochhammer[-q y, q]/QPochhammer[-q^(1 + n) y, q] FunctionExpand should reduce this to True, but numerically, at least, In[1005]:= %1004 /. q -> 1/2 /. y -> π/. n -> E Out[1005]= QPochhammer[-π/2, 1/2, E] == QPochhammer[-π/2, 1/2]/QPochhammer[-2^(-1 - E) π, 1/2] In[1006]:= N@% Out[1006]= True It would be nice to access Mathematica's sum-to-q-hypergeometric conversion facility, but at least we have the term ratio In[1013]:= DiscreteRatio[%1003[[1, 1]], m] Out[1013]= -((q (q^m - q^n) y)/(-1 + q^(1 + m))) and the handy function qform[xp_] := xp /. (a_ + (c_: 1)*q^(n + b_: 0)) -> a*foo[(1 + c*q^(n + b)/a)] /. foo -> (# &) In[1014]:= qform@% Out[1014]= -((q^(1 + n) (1 - q^(m - n)) y)/(1 - q^(1 + m))) In[1015]:= %1003[[1, 1]] /. m -> 0 Out[1015]= QBinomial[n, 0, q] (uncharacteristically sub-erogatory) In[1016]:= FunctionExpand@% Out[1016]= 1 Then by inspecting this term ratio we have In[1017]:= Append[Out[1003], % QHypergeometricPFQ[{q^(-n)}, {}, q, (-y)*q^(n + 1)]] Out[1017]= Sum[q^((1/2)*m*(1 + m))*y^m*QBinomial[n, m, q], {m, 0, Infinity}] == QPochhammer[(-q)*y, q, n] == QHypergeometricPFQ[{q^(-n)}, {}, q, (-q^(1 + n))*y] In[1018]:= FunctionExpand[%] Out[1018]= Sum[q^((1/2)*m*(1 + m))*y^m*QBinomial[n, m, q], {m, 0, Infinity}] == QPochhammer[(-q)*y, q, n] == QPochhammer[(-q)*y, q]/QPochhammer[(-q^(1 + n))*y, q] in accordance with %1004 above. Using (and not using) Inactive to stop Mathematica from automatically applying the q-Binomial Theorem, In[1020]:= # == Activate@# &@ Inactive[Sum][QPochhammer[a, q, m] z^m/QPochhammer[q, q, m], {m, 0, ∞}] Out[1020]= m z QPochhammer[a, q, m] Inactive[Sum][-----------------------, {m, 0, ∞}] == QPochhammer[q, q, m] QPochhammer[a z, q] ------------------- QPochhammer[z, q] Writing the pFq as before, In[1021]:= {# /. m -> 0, DiscreteRatio[#, m]} &@%[[1, 1]] Out[1021]= {1, ((-1 + a q^m) z)/(-1 + q^(1 + m))} In[1022]:= Append[%%, %[[1]] QHypergeometricPFQ[{a}, {}, q, z]] Out[1022]= m z QPochhammer[a, q, m] Inactive[Sum][-----------------------, {m, 0, Infinity}] == QPochhammer[q, q, m] QPochhammer[a z, q] ------------------- == QHypergeometricPFQ[{a}, {}, q, z] QPochhammer[z, q] "Doing" the pFq, In[1023]:= FunctionExpand@% Out[1023]= m z QPochhammer[a, q, m] Inactive[Sum][-----------------------, {m, 0, Infinity}] == QPochhammer[q, q, m] QPochhammer[a z, q] QPochhammer[a z, q] ------------------- == ------------------- QPochhammer[z, q] QPochhammer[z, q] So the q-Binomial Theorem and the "generalized" Cauchy Binomial Theorem differ merely by a change of variables. --rwg (How many of you caught my ∞==n maneuver? Presumably, future Mathematicas will just yield True.)
On Tue, Jul 25, 2017 at 8:27 PM, Bill Gosper <billgosper@gmail.com> wrote:
This must be well-known, but not by Wikipedia nor Mathworld. (I've misplaced my BHS again! This all might fall out of the q-Beta function, but not glaringly, due to the reciprocal.)
Here is a neighborhood of the apex. Table[qbin[n, k], {n, -3, 6}, {k, -2, 3}] // TableForm
2 2 2 2 2 3 4 1 + q + q (1 + q ) (1 + q + q ) (1 + q ) (1 + q + q + q + q ) -(----------) --------------------- -(-------------------------------) 3 7 12 0 0 1 q q q
2 2 1 + q 1 + q + q (1 + q) (1 + q ) -(-----) ---------- -(----------------) 2 5 9 0 0 1 q q q
1 1 1 -- -(--) -(-) 3 6 0 0 1 q q q
0 0 1 0 0 0
0 0 1 1 0 0
0 0 1 1 + q 1 0
2 2 0 0 1 1 + q + q 1 + q + q 1
2 2 2 2 0 0 1 (1 + q) (1 + q ) (1 + q ) (1 + q + q ) (1 + q) (1 + q )
2 3 4 2 2 3 4 2 2 3 4 0 0 1 1 + q + q + q + q (1 + q ) (1 + q + q + q + q ) (1 + q ) (1 + q + q + q + q )
2 2 2 2 2 3 4 2 2 2 3 4 0 0 1 (1 + q) (1 - q + q ) (1 + q + q ) (1 - q + q ) (1 + q + q ) (1 + q + q + q + q ) (1 + q) (1 + q ) (1 - q + q ) (1 + q + q + q + q )
qbin[n_, k_Integer] := Factor[qpochgunch[FunctionExpand@QBinomial[x, k, q], x - k + 1, k] /. x -> n]
qpochgunch[xp_, old_, by_] := xp /. QPochhammer[q_^old, q_, n___] :> Product[1 - q^¢, {¢, old, old + by - 1}] QPochhammer[q^(old + by), q, n]
(*Preserves the value of QPochhammers if q is atomic.*) (*NB: I have
In[461]:= Product[f@k, {k, 0, -2}]
Out[461]= 1/f[-1] *) Note q-Pascal's *automatic* asymmetry for negative n.
These values are completely consistent with the two recurrences
{QBinomial[n, m, q] == QBinomial[n - 1, m - 1, q] + q^m QBinomial[n - 1, m, q], QBinomial[n, m, q] == q^(n - m) QBinomial[n - 1, m - 1, q] + QBinomial[n - 1, m, q]}
(From which one can In[445]:= Eliminate[%%, %%[[1, 2, 1]]] , getting the two term recurrence
Out[445]= (-q^m + q^n) QBinomial[n, m, q] == q^m (-1 + q^n) QBinomial[-1 + n, m, q]
and another one.) (As before, imposing "Bermuda" symmetry breaks the recurrences. I think it would be genuinely interesting to find the actual objection that led to this fiasco.)
Mathematica's Limit and FunctionExpand both misbehaved here:
In[458]:= FunctionExpand@QBinomial[-2, 1, q]
Out[458]= Indeterminate
In[459]:= FunctionExpand@QPochhammer[1, q]
Out[459]= QPochhammer[1, q] (* Hello? *)
In[430]:= Limit[QBinomial[n, 3, q], n -> -2]
Out[430]= -(QPochhammer[1/q^4, q]/((-1 + q)^3 (1 + q) (1 + q + q^2) QPochhammer[1/q, q]))
This is 0/0! --rwg