Introduction to GoodDyson

Andrew Sills

Department of Mathematical Sciences 
Georgia Southern University
Statesboro, GA 30460-8093, USA

Original version: 14 March 2005, 
Latest update: 1 March 2009.

Introduction

This notebook accompanies the Mathematica package GoodDyson.m, which accompanies the following paper.

A. Sills and D. Zeilberger, ``Disturbing the Dyson conjecture (in a GOOD way),'' Experimental Math. 15 (2006) 187-191.

The latest version of GoodDyson.m is available also at my home page

http://math.georgiasouthern.edu/SillsMathemMaple.html

Please send comments, questions, bug reports, or other feedback to

ASills [at] GeorgiaSouthern [dot] edu

Some Examples

As mentioned in the introduction, this Mathematica package accompanies the paper “Disturbing the Dyson conjecture (in a GOOD way)”, and accordingly the paper should be read before (or at least concurrently with) this demonstration package.

Loading the Package

First, load the package. Of course, you will need to specify the correct path to where you have stored the file “GoodDyson.m” if you have not launched Mathematica from the command line while your current working directory is the one where the file “GoodDyson.m” is located.

SetDirectory ["Documents/MathematicaFiles"] (* adjust as appropriate *)

<<GoodDyson.m

GuessDysonCoeff

To have Mathematica conjecture the coëfficient of (x^2)(y^(-1))(z^(-1)) in the expansion of 
[(1-(y/x))(1-(z/x))]a[(1-(x/y))(1-(z/y))]b[(1-(x/z))(1-(y/z))]c  , enter

GuessDysonCoeff[{2,-1,-1},{a,b,c}]

The output represents the rational function multiple of the multinomial coëfficient.  Thus, in this case the requested coëfficient is the output times (((a + b + c)!)/(a!  b!  c!)).

GetDysonCoeff

`GetDysonCoeff' is similar to `GuessDysonCoeff` except that it first checks to see if the requested coëfficient has been previously calculated and stored.  If so, the earlier result is retrieved; if not, the requested coëfficient is calculated.  Note also that with `GetDysonCoeff`, the "exponent variables" from the Dyson product are automatically specified as (Subscript[a, 1]), (Subscript[a, 2]), . . .

GetDysonCoeff[{2,-1,-1}]

WritePaper (3 variable case)

To have Mathematica write a paper on the variation of Dyson's conjecture where we seek the  coëfficient of ((Subscript[x, 1])^2)/(Subscript[x, 2])(Subscript[x, 3]) in the expansion of 
[(1- (Subscript[x, 2])/(Subscript[x, 1])) (1 - (Subscript[x, 3])/(Subscript[x, 1]))](Subscript[a, 1])[(1- (Subscript[x, 1])/(Subscript[x, 2])) (1 - (Subscript[x, 3])/(Subscript[x, 2]))](Subscript[a, 2])[(1- (Subscript[x, 1])/(Subscript[x, 3])) (1 - (Subscript[x, 2])/(Subscript[x, 3]))](Subscript[a, 3]),
including an automatically generated analogue of I.J. Good's proof, enter

WritePaper[{2,-1,-1}]

WritePaper (2 variable case)

For n=2 variables, the `WritePaper` function is considerably more terse, since the requested result follows easily from the binomial theorem.

WritePaper[{3,-3}]

WritePaper (4 or more variables)

For n>3 variables, the `WritePaper` function will generate much more output than in the n=3 case, because the recursions depend on expressions in n-1 variables, which must also be verified.  Thus the requested result is labeled as a theorem, then the function recuresively calls itself to verify the formulas requred for the theorem, labeling all subresults as 'lemma'.  In general, the calculation of a 4-variable result takes considerably longer than a three variable result.  For purposes of this demo, I have included the simplest possible four-variable result, which should execute quite quickly.

WritePaper[{0,0,0,0}]

TurboDyson

Let b = {(Subscript[b, 1]), (Subscript[b, 2]), … , (Subscript[b, n])} be an n-dimensional vector whose components sum to zero.  The vector b is said to be in canonical form if its components are in nondecreasing order.  Define the complexity of b to be the some of its positive components.  `TurboDyson (n, C)` exploits symmetries and algebraic relations to find (and store) the coëfficients of  ((Subscript[x, 1])^(Subscript[b, 1]))((Subscript[x, 2])^(Subscript[b, 2]))⋯ ((Subscript[x, n])^(Subscript[b, n])) for all vectors b of complexity ≤ C.  Every time the coëfficient corresponding to a new canonical vector is calculated, screen output is generated.

TurboDyson[3,3]

Notice that if we later require the coëfficients corresponding to vectors of complexity at most 4 only the newly calculated results will generate screen output:

TurboDyson[3,4]

Finally, since the preceeding results have already been stored, we can now write a paper quickly corresponding to any 3-vector b of complexity 4 or less.  For instance,

WritePaper[{4,-1,-3}]