Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Views: 127
Visibility: Unlisted (only visible to those who know the link)
Image: default
%auto typeset_mode(True, display=False)
%md ## Supplementary Sage worksheet for the article <b>On the Okounkov-Olshanski formula for standard tableaux of skew shapes</b>, <a href="https://arxiv.org/abs/2007.05006">arxiv:2007.05006</a> Alejandro H. Morales, Daniel G. Zhu

Supplementary Sage worksheet for the article On the Okounkov-Olshanski formula for standard tableaux of skew shapes, arxiv:2007.05006 Alejandro H. Morales, Daniel G. Zhu

%md ### The Okounkov-Olshanski formula states that the number $f^{\lambda/\mu}$ of SYT of skew shape equals ### $f^{\lambda/\mu} = \frac{|\lambda/\mu|!}{\prod_{u \in [\lambda]} h(u)} \sum_{T \in SSYT(\mu,d)} \prod_{u\in [\mu]} (\lambda_{d+1-T(u)} - j+i),$ ### where $d=\ell(\lambda)$. ### Let's look at an example.

The Okounkov-Olshanski formula states that the number fλ/μf^{\lambda/\mu} of SYT of skew shape equals

fλ/μ=λ/μ!u[λ]h(u)TSSYT(μ,d)u[μ](λd+1T(u)j+i),f^{\lambda/\mu} = \frac{|\lambda/\mu|!}{\prod_{u \in [\lambda]} h(u)} \sum_{T \in SSYT(\mu,d)} \prod_{u\in [\mu]} (\lambda_{d+1-T(u)} - j+i),

where d=(λ)d=\ell(\lambda).

Let's look at an example.

def OOF(lam,mu, verbosity=1): d = len(lam) SSYT = SemistandardTableaux(mu,max_entry=d) tot = 0 for T in SSYT: contrib = mul([lam[d+1-T[u[0]][u[1]]-1]-u[1]+u[0] for u in T.cells()]) if verbosity == 1: print "tableaux", T, "conbribution", contrib tot += contrib return tot*factorial(add(lam)-add(mu))/mul(Partition(lam).hooks())
OOF([2,2,2,1],[1,1])
Error in lines 1-1 Traceback (most recent call last): File "/cocalc/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 1234, in execute flags=compile_flags), namespace, locals) File "", line 1, in <module> NameError: name 'OOF' is not defined
StandardTableaux([[2,2,2,1],[1,1]]).cardinality()
99
%md It is not so hard to show that this formula is nonnegative. However some terms have zero contribution.

It is not so hard to show that this formula is nonnegative. However some terms have zero contribution.

OOF([4,3,2,1],[2,1])
tableaux [[1, 1], [2]] conbribution 0 tableaux [[1, 1], [3]] conbribution 0 tableaux [[1, 1], [4]] conbribution 0 tableaux [[1, 2], [2]] conbribution 3 tableaux [[1, 2], [3]] conbribution 4 tableaux [[1, 3], [2]] conbribution 6 tableaux [[1, 2], [4]] conbribution 5 tableaux [[1, 4], [2]] conbribution 9 tableaux [[1, 3], [3]] conbribution 8 tableaux [[1, 3], [4]] conbribution 10 tableaux [[1, 4], [3]] conbribution 12 tableaux [[1, 4], [4]] conbribution 15 tableaux [[2, 2], [3]] conbribution 8 tableaux [[2, 2], [4]] conbribution 10 tableaux [[2, 3], [3]] conbribution 16 tableaux [[2, 3], [4]] conbribution 20 tableaux [[2, 4], [3]] conbribution 24 tableaux [[2, 4], [4]] conbribution 30 tableaux [[3, 3], [4]] conbribution 30 tableaux [[3, 4], [4]] conbribution 45
272272
%md ## Number of terms ## ### Our first main result, Theorem 1.2, has two determinant formulas for the number of nonzero terms of the Okounkov-Olshanski formula that we denote by $OOT(\lambda/\mu)$

Number of terms

Our first main result, Theorem 1.2, has two determinant formulas for the number of nonzero terms of the Okounkov-Olshanski formula that we denote by OOT(λ/μ)OOT(\lambda/\mu)

def OOT1(lam,mu): d = len(lam) mup = mu +[0,]*(d-len(mu)) def mat_ent(i,j,lam,mu): if lam[i]-mu[j]+(j+1)-1 >= (i+1)-1: return binomial(lam[i] - mu[j]+(j+1)-1,(i+1)-1) else: return 0 M = matrix(d,d,lambda i, j: mat_ent(i,j,lam,mup)) print M return M.determinant(); def OOT2(lam,mu): lamc = Partition(lam).conjugate() muc = Partition(mu).conjugate() mucp = muc + [0,]*(len(lamc)-len(muc)) k = mu[0] def mat_ent(i,j,lamc,muc): if lamc[i] >= muc[j] +i-j: return binomial(lamc[i],muc[j]+i-j) else: return 0 M = matrix(k,k, lambda i,j: mat_ent(i,j,lamc,mucp)) print M return M.determinant()
% md ### Let's do some examples

Let's do some examples

OOT1([2,2,2,1],[1,1])
[ 1 1 1 1] [ 1 2 4 5] [ 0 1 6 10] [ 0 0 1 4]
66
OOT2([2,2,2,1],[1,1])
Error in lines 1-1 Traceback (most recent call last): File "/cocalc/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 1234, in execute flags=compile_flags), namespace, locals) File "", line 1, in <module> NameError: name 'OOT2' is not defined
OOT1([3,2,1],[1])
Error in lines 1-1 Traceback (most recent call last): File "/cocalc/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 1234, in execute flags=compile_flags), namespace, locals) File "", line 1, in <module> NameError: name 'OOT1' is not defined
OOT2([3,2,1],[1])
Error in lines 1-1 Traceback (most recent call last): File "/cocalc/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 1234, in execute flags=compile_flags), namespace, locals) File "", line 1, in <module> NameError: name 'OOT2' is not defined
OOT1([4,3,2,1],[2,1])
Error in lines 1-1 Traceback (most recent call last): File "/cocalc/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 1234, in execute flags=compile_flags), namespace, locals) File "", line 1, in <module> NameError: name 'OOT1' is not defined
OOT2([4,3,2,1],[2,1])
[6 1] [1 3]
1717
%md ### Our second main result is a formula for the number of terms for thick zigzags $\delta_{n+2k}/\delta_n$ as a determinant of normalized Genocchi numbers $G_{2n}/(2n)!$, In particular $OOT(\delta_{n+2}/\delta_n) = G_{2n+2}$

Our second main result is a formula for the number of terms for thick zigzags δn+2k/δn\delta_{n+2k}/\delta_n as a determinant of normalized Genocchi numbers G2n/(2n)!G_{2n}/(2n)!, In particular OOT(δn+2/δn)=G2n+2OOT(\delta_{n+2}/\delta_n) = G_{2n+2}

G = [1, 1, 3, 17, 155, 2073, 38227, 929569, 28820619, 1109652905, 51943281731, 2905151042481, 191329672483963, 14655626154768697, 1291885088448017715, 129848163681107301953, 14761446733784164001387, 1884515541728818675112649, 268463531464165471482681379] def nG(n): return G[n-1]/factorial(2*n) def staircase(n): return range(1,n)[::-1] def OOT_thick_zigzag(n,k): M = matrix(k, k, lambda i, j: nG(n+(i+1)+(j+1)-1)) print "shape", staircase(n+2*k),"/", staircase(n) # print M return M.determinant()*mul([factorial(2*(n+i+k-1))/factorial(2*i-1) for i in range(1,k+1)]);
% md Interestingly this number of terms is proportional to the number of SYT of this shape.

Interestingly this number of terms is proportional to the number of SYT of this shape.

n=5 k=3 print "size shape", add(staircase(n+2*k))-add(staircase(n)) factor(StandardTableaux([staircase(n+2*k),staircase(n)]).cardinality()/OOT_thick_zigzag(n,k))
size shape 45 shape [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] / [4, 3, 2, 1]
2413511192329313741432^{41} \cdot 3 \cdot 5 \cdot 11 \cdot 19 \cdot 23 \cdot 29 \cdot 31 \cdot 37 \cdot 41 \cdot 43
%md ## Reformulations ### We give several reformulations of the Okounkov-Olshanski formula. One is in terms of <b>reverse excited diagrams</b>. Excited diagrams appear in the Naruse hook length formula for skew shapes. The reverse excited diagram reformulation is ### $f^{\lambda/\mu} \,=\, \frac{|\lambda/\mu|!}{\prod_{u\in [\lambda]} h(u)} \sum_{D\in \mathcal{RE}(\lambda)} \prod_{(i,j) \in B(D)} (\lambda_i+d-j)$, ### where $d=\ell(\lambda)$, $B(D)$ are certain cells of $[\lambda]$ (viewed as a shifted skew shape) associated to $D$ and $\lambda_i+d-j$ equals the arm-length of the cell $(i,j)$.

Reformulations

We give several reformulations of the Okounkov-Olshanski formula. One is in terms of reverse excited diagrams. Excited diagrams appear in the Naruse hook length formula for skew shapes. The reverse excited diagram reformulation is

fλ/μ=λ/μ!u[λ]h(u)DRE(λ)(i,j)B(D)(λi+dj)f^{\lambda/\mu} \,=\, \frac{|\lambda/\mu|!}{\prod_{u\in [\lambda]} h(u)} \sum_{D\in \mathcal{RE}(\lambda)} \prod_{(i,j) \in B(D)} (\lambda_i+d-j),

where d=(λ)d=\ell(\lambda), B(D)B(D) are certain cells of [λ][\lambda] (viewed as a shifted skew shape) associated to DD and λi+dj\lambda_i+d-j equals the arm-length of the cell (i,j)(i,j).

# read text file with code load("excited_code.sage")
OOF_RED([2,2,2,1],[1,1,0,0],verbosity=1)
+---+---+---+---+---+ ||||||||||\|||||||X|| +---+---+---+---+---+ | ||||||||||\|||X|| +---+---+---+---+---+ | | ||||||X|||X|| +---+---+---+---+---+ | | | ||X|| | +---+---+---+---+---+ arms: [2, 3] +---+---+---+---+---+ ||||||||||\|||||||X|| +---+---+---+---+---+ | ||||||X|||||||X|| +---+---+---+---+---+ | | ||||||\|||X|| +---+---+---+---+---+ | | | ||X|| | +---+---+---+---+---+ arms: [2, 3] +---+---+---+---+---+ ||||||X|||||||||||X|| +---+---+---+---+---+ | ||||||\|||||||X|| +---+---+---+---+---+ | | ||||||\|||X|| +---+---+---+---+---+ | | | ||X|| | +---+---+---+---+---+ arms: [3, 2] +---+---+---+---+---+ ||||||||||\|||||||X|| +---+---+---+---+---+ | ||||||X|||||||X|| +---+---+---+---+---+ | | ||X|||||||X|| +---+---+---+---+---+ | | | ||\|| | +---+---+---+---+---+ arms: [3, 1] +---+---+---+---+---+ ||||||X|||||||||||X|| +---+---+---+---+---+ | ||||||\|||||||X|| +---+---+---+---+---+ | | ||X|||||||X|| +---+---+---+---+---+ | | | ||\|| | +---+---+---+---+---+ arms: [3, 1] +---+---+---+---+---+ ||||||X|||||||||||X|| +---+---+---+---+---+ | ||X|||||||||||X|| +---+---+---+---+---+ | | ||\|||||||X|| +---+---+---+---+---+ | | | ||\|| | +---+---+---+---+---+ arms: [1, 3]
99
%md ### Another reformulation is in terms of Knutson-Tao puzzles: $f^{\lambda/\mu} = \frac{|\lambda/\mu|!}{\prod_{u\in[\lambda]} h(u)} \sum_{P \in \Delta^{\lambda\mu}_\lambda} \prod_{p \in \lozenge(P)}\operatorname{ht}(p)$.

Another reformulation is in terms of Knutson-Tao puzzles: fλ/μ=λ/μ!u[λ]h(u)PΔλλμp(P)ht(p)f^{\lambda/\mu} = \frac{|\lambda/\mu|!}{\prod_{u\in[\lambda]} h(u)} \sum_{P \in \Delta^{\lambda\mu}_\lambda} \prod_{p \in \lozenge(P)}\operatorname{ht}(p).

latex.extra_preamble(r'''\usepackage{tikz}''') vars = ['y%d' % i for i in range(1,7)] R = PolynomialRing(QQ, 6, vars) ps = KnutsonTaoPuzzleSolver("HT") lam = [2,2,2,1] mu = [1,1] solns = ps('101000', '0010011') tot = 0 for p in solns: if p.south_labels() == ('1','0','1','0','0','0'): curr = R(p.contribution()).substitute(y1=1,y2=2,y3=3,y4=4,y5=5,y6=6) p, curr tot += curr print "expecting 9", tot*factorial(add(lam)-add(mu))/mul(Partition(lam).hooks())
({(1, 1): 1/1\1, (1, 2): 0/\1 1\/0, (1, 3): 1/\1 1\/1, (1, 4): 0/\1 1\/0, (1, 5): 0/\0 1\/10, (1, 6): 0/\0 0\/0, (2, 2): 0/0\0, (2, 3): 1/\0 0\/1, (2, 4): 0/\0 0\/0, (2, 5): 10/\1 0\/0, (2, 6): 0/\0 1\/10, (3, 3): 1/1\1, (3, 4): 0/\0 1\/10, (3, 5): 0/\0 0\/0, (3, 6): 10/\1 0\/0, (4, 4): 10/0\1, (4, 5): 0/\0 1\/10, (4, 6): 0/\0 0\/0, (5, 5): 10/0\1, (5, 6): 0/\0 1\/10, (6, 6): 10/0\1}, 3) ({(1, 1): 1/1\1, (1, 2): 0/\1 1\/0, (1, 3): 1/\1 1\/1, (1, 4): 0/\0 1\/10, (1, 5): 0/\0 0\/0, (1, 6): 0/\0 0\/0, (2, 2): 0/0\0, (2, 3): 1/\0 0\/1, (2, 4): 10/\1 0\/0, (2, 5): 0/\1 1\/0, (2, 6): 0/\0 1\/10, (3, 3): 1/1\1, (3, 4): 0/\0 1\/10, (3, 5): 0/\0 0\/0, (3, 6): 10/\1 0\/0, (4, 4): 10/0\1, (4, 5): 0/\0 1\/10, (4, 6): 0/\0 0\/0, (5, 5): 10/0\1, (5, 6): 0/\0 1\/10, (6, 6): 10/0\1}, 3) ({(1, 1): 1/1\1, (1, 2): 0/\1 1\/0, (1, 3): 1/\1 1\/1, (1, 4): 0/\0 1\/10, (1, 5): 0/\0 0\/0, (1, 6): 0/\0 0\/0, (2, 2): 0/0\0, (2, 3): 1/\0 0\/1, (2, 4): 10/\1 0\/0, (2, 5): 0/\0 1\/10, (2, 6): 0/\0 0\/0, (3, 3): 1/1\1, (3, 4): 0/\0 1\/10, (3, 5): 10/\1 0\/0, (3, 6): 0/\1 1\/0, (4, 4): 10/0\1, (4, 5): 0/\0 1\/10, (4, 6): 0/\0 0\/0, (5, 5): 10/0\1, (5, 6): 0/\0 1\/10, (6, 6): 10/0\1}, 3) ({(1, 1): 1/1\1, (1, 2): 0/\0 1\/10, (1, 3): 1/\0 0\/1, (1, 4): 0/\0 0\/0, (1, 5): 0/\0 0\/0, (1, 6): 0/\0 0\/0, (2, 2): 10/0\1, (2, 3): 1/\1 1\/1, (2, 4): 0/\1 1\/0, (2, 5): 0/\1 1\/0, (2, 6): 0/\0 1\/10, (3, 3): 1/1\1, (3, 4): 0/\0 1\/10, (3, 5): 0/\0 0\/0, (3, 6): 10/\1 0\/0, (4, 4): 10/0\1, (4, 5): 0/\0 1\/10, (4, 6): 0/\0 0\/0, (5, 5): 10/0\1, (5, 6): 0/\0 1\/10, (6, 6): 10/0\1}, 6) ({(1, 1): 1/1\1, (1, 2): 0/\0 1\/10, (1, 3): 1/\0 0\/1, (1, 4): 0/\0 0\/0, (1, 5): 0/\0 0\/0, (1, 6): 0/\0 0\/0, (2, 2): 10/0\1, (2, 3): 1/\1 1\/1, (2, 4): 0/\1 1\/0, (2, 5): 0/\0 1\/10, (2, 6): 0/\0 0\/0, (3, 3): 1/1\1, (3, 4): 0/\0 1\/10, (3, 5): 10/\1 0\/0, (3, 6): 0/\1 1\/0, (4, 4): 10/0\1, (4, 5): 0/\0 1\/10, (4, 6): 0/\0 0\/0, (5, 5): 10/0\1, (5, 6): 0/\0 1\/10, (6, 6): 10/0\1}, 6) ({(1, 1): 1/1\1, (1, 2): 0/\0 1\/10, (1, 3): 1/\0 0\/1, (1, 4): 0/\0 0\/0, (1, 5): 0/\0 0\/0, (1, 6): 0/\0 0\/0, (2, 2): 10/0\1, (2, 3): 1/\1 1\/1, (2, 4): 0/\0 1\/10, (2, 5): 0/\0 0\/0, (2, 6): 0/\0 0\/0, (3, 3): 1/1\1, (3, 4): 10/\1 1\/10, (3, 5): 0/\1 1\/0, (3, 6): 0/\1 1\/0, (4, 4): 10/0\1, (4, 5): 0/\0 1\/10, (4, 6): 0/\0 0\/0, (5, 5): 10/0\1, (5, 6): 0/\0 1\/10, (6, 6): 10/0\1}, 6) expecting 9 9
%md # $q$-analogues for skew reverse plane partitions ## Stanley-Chen have a $q$-analogue of the Okounkov-Olshanski formula for the generating function of skew semistandard tableaux. ## Our last main results are $q$-analogues of the Okounkov-Olshanski formula for the generating function of skew reverse plane partitions. Let $rpp_{\lambda/\mu}(q) := \sum_{T \in RPP(\lambda/\mu)} q^{|T|}$. ### <b>Theorem (1st $q$-analogue):</b> $\frac{rpp_{\lambda/\mu}(q)}{rpp_{\lambda}(q)} = \sum_{T \in SSYT(\mu, d)} q^{p(T)} \prod_{u \in [\mu]} (1 - q^{w(u, T(u))})$, ### where $p(T)=\sum_{u \in [\mu], m_T(u) \leq k < T(u)} w(u,k)$ and $m_T(u)$ is the minimum $k\leq T(u)$ such that replacing $T(u)$ by $k$ still gives a semistandard tableaux.

qq-analogues for skew reverse plane partitions

Stanley-Chen have a qq-analogue of the Okounkov-Olshanski formula for the generating function of skew semistandard tableaux.

Our last main results are qq-analogues of the Okounkov-Olshanski formula for the generating function of skew reverse plane partitions. Let rppλ/μ(q):=TRPP(λ/μ)qTrpp_{\lambda/\mu}(q) := \sum_{T \in RPP(\lambda/\mu)} q^{|T|}.

Theorem (1st qq-analogue): rppλ/μ(q)rppλ(q)=TSSYT(μ,d)qp(T)u[μ](1qw(u,T(u)))\frac{rpp_{\lambda/\mu}(q)}{rpp_{\lambda}(q)} = \sum_{T \in SSYT(\mu, d)} q^{p(T)} \prod_{u \in [\mu]} (1 - q^{w(u, T(u))}),

where p(T)=u[μ],mT(u)k<T(u)w(u,k)p(T)=\sum_{u \in [\mu], m_T(u) \leq k < T(u)} w(u,k) and mT(u)m_T(u) is the minimum kT(u)k\leq T(u) such that replacing T(u)T(u) by kk still gives a semistandard tableaux.

%md ### Example: For $\lambda/\mu = 2221/11$. From the theory of $P$-partitions or computing it directly the answer for $rpp_{\lambda/\mu}(x)/rpp_{\lambda}(x) = 1-x^5-x^6-x^7+x^8+x^{10}$

Example: For λ/μ=2221/11\lambda/\mu = 2221/11. From the theory of PP-partitions or computing it directly the answer for rppλ/μ(x)/rppλ(x)=1x5x6x7+x8+x10rpp_{\lambda/\mu}(x)/rpp_{\lambda}(x) = 1-x^5-x^6-x^7+x^8+x^{10}

f1 = x^3*(1-x^2)*(1-x^3) + x^4*(1-x^2)*(1-x^3) + x*(1-x^2)*(1-x^3)+x^6*(1-x)*(1-x^3)+x^3*(1-x)*(1-x^3)+x^0*(1-x^1)*(1-x^3) f1
(x31)(x1)x6+(x31)(x21)x4+(x31)(x21)x3+(x31)(x1)x3+(x31)(x21)x+(x31)(x1){\left(x^{3} - 1\right)} {\left(x - 1\right)} x^{6} + {\left(x^{3} - 1\right)} {\left(x^{2} - 1\right)} x^{4} + {\left(x^{3} - 1\right)} {\left(x^{2} - 1\right)} x^{3} + {\left(x^{3} - 1\right)} {\left(x - 1\right)} x^{3} + {\left(x^{3} - 1\right)} {\left(x^{2} - 1\right)} x + {\left(x^{3} - 1\right)} {\left(x - 1\right)}
f1.series(x,12)
Error in lines 1-1 Traceback (most recent call last): File "/cocalc/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 1234, in execute flags=compile_flags), namespace, locals) File "", line 1, in <module> NameError: name 'f1' is not defined
%md ### <b>Theorem (2nd $q$-analogue):</b> $\frac{rpp_{\lambda/\mu}(q)}{rpp_{\lambda}(q)} = \sum_{T \in SSYT(\mu, d)} q^{p^*(T)} \prod_{u \in [\mu]} (1 - q^{w(u, T(u))})$, ### where $p^*(T) = \sum_{u \in [\mu], T(u) < k \leq \min(d, M_T(u))} w(u, k)$, and $M_T(u)$ is the maximum $k\geq T(u)$ such that replacing $T(u)$ by $k$ still gives a semistandard tableaux.

Theorem (2nd qq-analogue): rppλ/μ(q)rppλ(q)=TSSYT(μ,d)qp(T)u[μ](1qw(u,T(u)))\frac{rpp_{\lambda/\mu}(q)}{rpp_{\lambda}(q)} = \sum_{T \in SSYT(\mu, d)} q^{p^*(T)} \prod_{u \in [\mu]} (1 - q^{w(u, T(u))}),

where p(T)=u[μ],T(u)<kmin(d,MT(u))w(u,k)p^*(T) = \sum_{u \in [\mu], T(u) < k \leq \min(d, M_T(u))} w(u, k), and MT(u)M_T(u) is the maximum kT(u)k\geq T(u) such that replacing T(u)T(u) by kk still gives a semistandard tableaux.

f2 = x^0*(1-x^2)*(1-x^3) + x^2*(1-x^2)*(1-x^3) + x^3*(1-x^2)*(1-x^3)+x^4*(1-x)*(1-x^3)+x^5*(1-x)*(1-x^3)+x^6*(1-x^1)*(1-x^3) f2
(x31)(x1)x6+(x31)(x1)x5+(x31)(x1)x4+(x31)(x21)x3+(x31)(x21)x2+(x31)(x21){\left(x^{3} - 1\right)} {\left(x - 1\right)} x^{6} + {\left(x^{3} - 1\right)} {\left(x - 1\right)} x^{5} + {\left(x^{3} - 1\right)} {\left(x - 1\right)} x^{4} + {\left(x^{3} - 1\right)} {\left(x^{2} - 1\right)} x^{3} + {\left(x^{3} - 1\right)} {\left(x^{2} - 1\right)} x^{2} + {\left(x^{3} - 1\right)} {\left(x^{2} - 1\right)}
f2.series(x,12)
1+(1)x5+(1)x6+(1)x7+1x8+1x10+O(x12)1 + {(-1)} x^{5} + {(-1)} x^{6} + {(-1)} x^{7} + 1 x^{8} + 1 x^{10} + \mathcal{O}\left(x^{12}\right)