WOLFRAM NOTEBOOK

A symmetric chain decomposition of L(5, n)

Xiangdong Wen
Wolfram Research

Young’s lattice L(m,n)

Young Diagram

In[]:=
IntegerPartitions[5]
Out[]=
{{5},{4,1},{3,2},{3,1,1},{2,2,1},{2,1,1,1},{1,1,1,1,1}}
In[]:=
Options[youngDiagram]={ItemSize->20};youngDiagram[a_List,OptionsPattern[]]:=If[Length[a]>0&&a[[1]]>0,Graphics[{EdgeForm[Black],FaceForm[Yellow],Table[Table[Rectangle[{j,-i},{(j+1),(-i-1)}],{j,1,a[[i]]}],{i,1,Length[a]}]},ImageSize->OptionValue[ItemSize]*a[[1]]],Graphics[{EdgeForm[Black],FaceForm[White],Disk[],Line[{{-1,-1},{1,1}}]},ImageSize->OptionValue[ItemSize]]];
In[]:=
Map[youngDiagram,%1]
Out[]=
,
,
,
,
,
,

Young’s lattice

In[]:=
expand[a_]:=Table[{i,Sequence@@a},{i,0,a[[1]]}];L[1,n_]:=Table[{i},{i,0,n}];L[m_,n_]:=Sort[Join@@Map[expand,L[m-1,n]]];edgesR[sa_]:=Module[{r,im,t=1,s},s=Map[First,sa];im=IdentityMatrix[Length[s[[1]]]];r=Table[Null,Length[s]*Length[s[[1]]]];Do[r[[t++]]=If[MemberQ[s,e+i]&&Union[((e+i)/.sa)-(e/.sa),{0}]=={0,1},{e,e+i},Nothing],{e,s},{i,im}];r];edges[s_]:=edgesR[Map[#->#&,s]];coords[a_,p_]:=Module[{l},l=Length[a];Table[{i*50-25*l,p*30},{i,1,l}]];Options[youngLattice]={ItemSize->10,GraphLayout->Left};data[m_,n_]:=Module[{v,e,p,v2i,i2v},p=If[n==0,Table[IntegerPartitions[i],{i,0,m}],Table[Select[IntegerPartitions[i],Length[#]<=m&&(Length[#]==0||First[#]<=n)&],{i,0,m*n}]]/.{}->{0};v=Map[PadRight[#,m]&,Apply[Join,p]];e=edges[v];v2i=MapIndexed[#1->First[#2]&,v];i2v=MapIndexed[First[#2]->#1&,v];{p,v,e,v2i,i2v}];youngLattice[m_,n_Integer:0,OptionsPattern[]]:=Module[{v,e,vl,c,p,vc,v2i,i2v},{p,v,e,v2i,i2v}=data[m,n];c=Apply[Join,MapIndexed[coords[#1,First[#2]]&,p]];vl=Table[Evaluate[t/.v2i]->Placed[youngDiagram[t/.{0->Nothing},ItemSize->OptionValue[ItemSize]],Center],{t,v}];vc=Switch[OptionValue[GraphLayout],Up,Map[{#[[1]],-#[[2]]}&,c],Down,Map[{#[[1]],#[[2]]}&,c],Left,Map[{#[[2]],#[[1]]}&,c],Right,Map[{-#[[2]],#[[1]]}&,c]];Graph[Map[#[[1]]->#[[2]]&,e]/.v2i,VertexLabels->vl,VertexCoordinates->vc]];
In[]:=
youngLattice[5,GraphLayout->Up]
Out[]=
In[]:=
youngLattice[2,3]
Out[]=
In[]:=
youngLattice[3,2]
Out[]=

Symetric Chain Decomposition

Chain
v
1
<
v
2
<
v
3
< <
v
t
,
v
i
L(m,n)
saturated: rank(
v
s
) - rank
(
v
s-1
)
= 1, s=2,3,,t
symmetric: rank(
v
1
) + rand(
v
t
) = m n
SCD: Partition a poset into disjoint symmetric chains.
Poset with a SCD is called symmeric chain order.
In[]:=
rank[v_]:=Total[v];Options[scdL]={ItemSize->10,GraphLayout->Left};scdL[m_,n_,OptionsPattern[]]:=Module[{v,e,vl,c,p,vc,v2i,i2v,edges,from,to,rest,flow={},singles,g},{p,v,e,v2i,i2v}=data[m,n];edges=Map[#[[1]]->#[[2]]&,e]/.v2i;c=Apply[Join,MapIndexed[coords[#1,First[#2]]&,p]];vl=Table[Evaluate[t/.v2i]->Placed[youngDiagram[t/.{0->Nothing},ItemSize->OptionValue[ItemSize]],Center],{t,v}];vc=Switch[OptionValue[GraphLayout],Up,Map[{#[[1]],-#[[2]]}&,c],Down,Map[{#[[1]],#[[2]]}&,c],Left,Map[{#[[2]],#[[1]]}&,c],Right,Map[{-#[[2]],#[[1]]}&,c]];Do[from=Select[v,Total[#]==Floor[(mn/2)]-i&]/.v2i;to=Select[v,Total[#]==Ceiling[(mn/2)]+i&]/.v2i;rest=Select[Map[{#[[1]],#[[2]]}&,edges],MemberQ[Map[First,flow],#[[1]]]==False&];g=Sort[Map[#[[1]]->#[[2]]&,Join[flow,rest]]];flow=Join[flow,Select[Map[First,Select[ArrayRules@FindMaximumFlow[g,from,to,"OptimumFlowData",VertexCapacity->Table[1,{j,1Length[v]}]]["FlowMatrix"],#[[2]]==1&]],Length[Intersection[#,Join[from,to]]]>0&]],{i,0,Floor[(mn/2)]}];singles=Complement[Range[Length[v]],Apply[Union,flow]];Graph[Join[Map[#[[1]]->#[[2]]&,flow],Map[#->#&,singles]],VertexCoordinates->MapIndexed[First[#2]->#1&,vc],VertexLabels->vl]]
In[]:=
scdL[2,3]
Out[]=

O’hara subposets L(m,n,s) and L(m,n,s,d)

spread, degree

https://sites.math.rutgers.edu/~zeilberg/mamarim/mamarimPDF/ohara.pdfspread(a) := max{
a
i
-
a
i-2
, 2 i m+1},
a
0
=0;
a
m+1
=n
M(a):={2im+1;
a
i
-
a
i-2
=spread(a)}M(a) =
D
j
,
D
j
are maximally connected intervalsdegree(a):=
j
[
D
j
+1
2
]
In[]:=
spread[a_,n_]:=Max[Join[Rest[a],{n}]-Join[{0},Most[a]]]
In[]:=
degree[a_,n_]:=Total[Map[Floor[(Total[#]+1)/2]&,Split[BinCounts[Flatten@Position[Join[Rest[a],{n}]-Join[{0},Most[a]],spread[a,n]],1]]]]

L(m,n,s), L(m,n,s,d), U(m,n,s)

L(m,n,s) := {v L(m,n), spread[v]=s}
L(m,n,s,d):= {v L(m,n), spread[v]=s, degree[v]=d }
U(m,n,s) := {v L(m,n), spread[v] s}

Visualization Tools

Tools

Examples

Are all L(5,n,s,1) symmetric chain orders?

It is still an open problem.

Are all L(5,n,s,2) symmetric chain orders?

Yes.

Are all L(5,n,s,3) symmetric chain orders?

Yes.

SCDL5n(n)

Visualize Chains of L(5,n)

L(6,n)

Wolfram Cloud

You are using a browser not supported by the Wolfram Cloud

Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.


I understand and wish to continue anyway »

You are using a browser not supported by the Wolfram Cloud. Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.