Macaulay2 » Documentation
Packages » SchurRings :: specialize
next | previous | forward | backward | up | index | toc

specialize -- Specialize a stable character to a finite rank

Description

Every ring produced by schurRing comes in two sizes: the stable ring (rank infinity), which is a universal object admitting arbitrarily many row labels, and the finite-rank ring (rank n), on which the relevant representation-theoretic modification rule is enforced (see modificationRule). The function specialize bridges the two: it maps every partition-indexed basis element of the stable ring to its image in the finite-rank ring, collapsing or re-signing partitions that are ``too long'' via the modification rule of Sam-Snowden-Weyman (for Sp/O/RatGL) or simply truncating (for GL/SL/Sn).

GL specialization drops every Schur label with more than n parts:

i1 : S = schurRing(QQ, s, infinity);
i2 : f = s_{3,2,1} + s_{2,1} + s_{1}

o2 = s      + s    + s
      3,2,1    2,1    1

o2 : S
i3 : specialize(f, 3)

o3 = glfin3      + glfin3    + glfin3
           3,2,1         2,1         1

o3 : schurRing (QQ, glfin3, 3)
i4 : specialize(f, 2)

o4 = glfin2    + glfin2
           2,1         1

o4 : schurRing (QQ, glfin2, 2)

Sp specialization applies the type-C modification rule: characters $sp_\lambda$ with $\ell(\lambda) > n$ are re-expressed in the finite-rank ring (possibly with a sign, or as zero).

i5 : Sp = schurRing(QQ, sp, infinity, GroupActing => "Sp");
i6 : specialize(sp_{2,1} + sp_{1,1,1}, 2)

o6 = spfin2
           2,1

o6 : schurRing (QQ, spfin2, 2)
i7 : specialize(sp_{1,1,1}, 1)

o7 = -spfin1
            1

o7 : schurRing (QQ, spfin1, 1)

Concrete low-rank $Sp$ specializations show the modification in action. At rank 1 ($Sp(2)$), $sp_{1,1,1}$ is modified via "C" to $-sp_{1}$, and at rank 2 ($Sp(4)$), $sp_{2,1,1}$ has $\ell(\lambda) = 3 > 2$ and is also modified to a signed lower-rank character:

i8 : specialize(sp_{1,1,1}, 1)

o8 = -spfin1
            1

o8 : schurRing (QQ, spfin1, 1)
i9 : specialize(sp_{2,1,1}, 1)

o9 = -spfin1
            2

o9 : schurRing (QQ, spfin1, 1)

O specialization distinguishes type $B_n$ (O(2n+1)) from type $D_n$ (O(2n)) via the OddOrEven option. If the stable ring has a stored OddOrEven attribute, that value is used; otherwise the option must be supplied at the call site.

i10 : O = schurRing(QQ, o, infinity, GroupActing => "O");
i11 : specialize(o_{2,1}, 3)

o11 = ofinodd3
              2,1

o11 : schurRing (QQ, ofinodd3, 3)
i12 : specialize(o_{2,1}, 2, OddOrEven => "Even")

o12 = ofineven2
               2,1

o12 : schurRing (QQ, ofineven2, 2)

The two $O$ flavors give genuinely different images of the same partition on the same target rank. For $\lambda = (2,1)$ at rank 3 we compare $O(7)$ with $O(6)$:

i13 : specialize(o_{2,1}, 3, OddOrEven => "Odd")

o13 = ofinodd3
              2,1

o13 : schurRing (QQ, ofinodd3, 3)
i14 : specialize(o_{2,1}, 3, OddOrEven => "Even")

o14 = ofineven3
               2,1

o14 : schurRing (QQ, ofineven3, 3)

SL specialization drops rows of length equal to the full rank, i.e. "columns" of height $n$, because the determinant representation is trivial in $SL(n)$. Here the stable $s_{3,2}$ collapses to $s_1$ in $SL(2)$, and $s_{3,3,1}$ collapses to $s_{2,2}$ in $SL(3)$:

i15 : SL = schurRing(QQ, sl, infinity, GroupActing => "SL");
i16 : specialize(sl_{3,2}, 2)

o16 = slfin2
            1

o16 : schurRing (QQ, slfin2, 2)
i17 : specialize(sl_{3,3,1}, 3)

o17 = slfin3
            2,2

o17 : schurRing (QQ, slfin3, 3)

Tower specialization. For a SchurRing obtained by iterating the schurRing constructor over a coefficient ring that is itself a SchurRing, one can specialize several layers at once. The layers are listed from outermost to innermost, and an entry equal to infinity leaves that layer stable.

i18 : A = schurRing(QQ, a, infinity);
i19 : B = schurRing(A, b, infinity, GroupActing => "Sp");
i20 : specialize(b_{1,1} * a_{2}, {2, 3})

o20 = glfin3 spfin2
            2      1,1

o20 : schurRing (schurRing (QQ, glfin3, 3), spfin2, 2)

In a two-layer tower of GL and Sp flavors, the outer and inner ranks can be adjusted independently; here is the same element specialized to a second choice of ranks:

i21 : specialize(b_{2,1} + a_{3,1,1}, {3, 2})

o21 = spfin3
            2,1

o21 : schurRing (schurRing (QQ, glfin2, 2), spfin3, 3)

See also

Ways to use specialize:

  • specialize(RingElement,List)
  • specialize(RingElement,ZZ)
  • specialize(RingElement,ZZ,SchurRing) (missing documentation)

For the programmer

The object specialize is a method function with options.


The source of this document is in /build/reproducible-path/macaulay2-1.26.05+ds/M2/Macaulay2/packages/SchurRings.m2:9116:0.