|
EXAMPLE
|
Non-isomorphic representatives of the a(3) = 9 antichains of multisets:
(111),
(122), (1)(22), (12)(22),
(123), (1)(23), (13)(23), (1)(2)(3), (12)(13)(23).
|
|
MATHEMATICA
|
stableSets[u_, Q_]:=If[Length[u]==0, {{}}, With[{w=First[u]}, Join[stableSets[DeleteCases[u, w], Q], Prepend[#, w]&/@stableSets[DeleteCases[u, r_/; r==w||Q[r, w]||Q[w, r]], Q]]]];
multijoin[mss__]:=Join@@Table[Table[x, {Max[Count[#, x]&/@{mss}]}], {x, Union[mss]}]
submultisetQ[M_, N_]:=Or[Length[M]==0, MatchQ[{Sort[List@@M], Sort[List@@N]}, {{x_, Z___}, {___, x_, W___}}/; submultisetQ[{Z}, {W}]]];
strnorm[n_]:=Flatten[MapIndexed[Table[#2, {#1}]&, #]]&/@IntegerPartitions[n];
auu[m_]:=Select[stableSets[Union[Rest[Subsets[m]]], submultisetQ], multijoin@@#==m&];
sysnorm[m_]:=First[Sort[sysnorm[m, 1]]]; sysnorm[m_, aft_]:=If[Length[Union@@m]<=aft, {m}, With[{mx=Table[Count[m, i, {2}], {i, Select[Union@@m, #>=aft&]}]}, Union@@(sysnorm[#, aft+1]&/@Union[Table[Map[Sort, m/.{par+aft-1->aft, aft->par+aft-1}, {0, 1}], {par, First/@Position[mx, Max[mx]]}]])]];
Table[Length[Union[sysnorm/@Join@@Table[auu[m], {m, strnorm[n]}]]], {n, 5}]
|