# Fichier : Hook # Format : Maple file # Auteur : Bruno Gauthier, Institut Gaspard Monge, Universite Marne La Vallee # A propos : Formule des equerres # Date : Mon Apr 23 18:41:52 METDST 1996 ############################################################################### read BijHG; read BijKratt; print(`Version of Apr. 23, 1996`): print(`This is Hook, a Maple program that applies`): print(`the bijection between column-strict reverse plane partition PL`): print(`(with entries between 1 and A), a tabloid TL`): print(`and`): print(`another tabloid TR`): print(`such that n(P0) + Wh(TR) = n(PL) + Wc(TL)`): print(`where P0 is a minimal reverse plane partition`): lprint(``): print(`This is a Maple implementation of the proof described in :`): print(`C. Krattenthaler`): print(`an involution principle-free bijective proof`): print(`of Stanley's hook-content formula`): lprint(``): print(`The most current version is available on WWW at:`): print(`http://www-igm.univ-mlv.fr/~gauthier .`): print(`Please report all bugs to: gauthier@univ-mlv.fr`): print(`For general help, and a list of the available functions,`): print(`type "man();". For specific help type "man(procedure_name)"`): lprint(``): man := proc() if args=NULL then print(`Hook Contains procedures: `): print(`hillman, grassl, rppTOcrpp, crppTOrpp, hook, kooh`): print(`For help with a specific procedure, type "man(procedure_name);"`): elif nops([args])=1 and op(1,[args])=`hillman` then print(`hillman(RPP) computes the tabloid T`): print(`such that n(P)=sum(x,T(x) * h(x))`): lprint(``): print(`For example : hillman([[1, 2, 4], [3, 5, 5], [4]]);`): print(`gives [[2, 2, 0], [1, 1, 1], [1]]`): elif nops([args])=1 and op(1,[args])=`grassl` then print(`grassl(T) computes the reverse plane partition RPP`): print(`such that n(P)=sum(x,T(x) * h(x))`): lprint(``): print(`For example : grassl([[2, 2, 0], [1, 1, 1], [1]]);`): print(`gives [[1, 2, 4], [3, 5, 5], [4]])`): elif nops([args])=1 and op(1,[args])=`rppTOcrpp` then print(`rppTOcrpp(RPP) computes the tabloid T`): print(`such that n(P)=sum(x,T(x) * h(x))`): lprint(``): print(`For example : rppTOcrpp([[1,1,3,8], [2,3,4], [5,7,8], [7]],4);`); print(`gives [[1, 1, 1, 3], [2, 2, 2], [3, 3, 4], [4]],`); print(`[[1, 0, 1, 0], [1, 0, 0], [3, 1, 0], [1]]`); elif nops([args])=1 and op(1,[args])=`crppTOrpp` then print(`crppTOrpp(PL,TL,A) computes the reverse plane partition RPP`): print(`such that n(P)=sum(x,T(x) * h(x))`): lprint(``): print(`For example : crppTOrpp([[1,1,1,3], [2,2,2], [3,3,4], [4]], [[1,0,1,0], [1,0,0], [3,1,0],[1]],4);`); print(`gives [[1, 1, 3, 8], [2, 3, 4], [5, 7, 8], [7]]`); elif nops([args])=1 and op(1,[args])=`hook` then print(`hook(PL,TL,A) computes the tabloid TR`): print(`such that n(P0) + Wh(TR) = n(PL) + Wc(TL)`): lprint(``): print(`For example : hook([[1,1,3],[2,2,4],[4]], [[2,1,0],[2,0,0],[0]], 4);`): print(`gives [[2, 2, 0], [1, 1, 1], [1]]`): elif nops([args])=1 and op(1,[args])=`kooh` then print(`kooh(TR,A) computes the reverse plane partition PL and the tabloid TL`): print(`such that n(P0) + Wh(TR) = n(PL) + Wc(TL)`): lprint(``): print(`For example : kooh([[2, 2, 0], [1, 1, 1], [1]],4);`): print(`gives [[1, 1, 3], [2, 2, 4], [4]], [[2, 1, 0], [2, 0, 0], [0]]`): else ERROR(`There is no procedure in the Hook program by the name of`,args): fi: end: ajout := proc(T) # addition de la partition plane minimale local ret,i,j,rows,cols,k,R; ret := calcul(T): rows := ret[1]: cols := ret[2]: k := nops(T): R := T: for i from 1 to k do for j from 1 to rows[i] do R := subsop( i=subsop(j=i+op(j,op(i,R)), op(i,R)), R): od: od: end: enlever := proc(T) # soustraction de la partition plane minimale local ret,i,j,rows,cols,k,R; ret := calcul(T): rows := ret[1]: cols := ret[2]: k := nops(T): R := T: for i from 1 to k do for j from 1 to rows[i] do R := subsop( i=subsop(j=op(j,op(i,R))-i, op(i,R)), R): od: od: end: hook := proc(PL,TL,A) RETURN(hillman(enlever(crppTOrpp(PL,TL,A)))): end: kooh := proc(TR,A) RETURN(rppTOcrpp(ajout(grassl(TR)),A)): end: