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

convert -- Universal dispatcher for converting between Schur ring flavors

Description

convert is a thin routing layer that inspects the target ring's classification and dispatches to the appropriate specialized converter:

\begin{itemize} \item SchurRing with GroupActing => "GL" $\to$ toS, \item SchurRing with GroupActing => "Sn" $\to$ toSn, \item SchurRing with GroupActing => "Sp" $\to$ toSp, \item SchurRing with GroupActing => "O" $\to$ toO, \item SchurRing with GroupActing => "SL" $\to$ toS, \item SchurRing with GroupActing => "RatGL" $\to$ toRatGL, \item symmetricRing $\to$ toSymm followed by promotion. \end{itemize}

No new conversion mathematics is performed here; convert exists purely to simplify user-level code that does not want to know which specialized converter to call.

i1 : S  = schurRing(QQ, s, 4);
i2 : Sp = schurRing(QQ, p, 2, GroupActing => "Sp");
i3 : O  = schurRing(QQ, o, 4, GroupActing => "O");
i4 : Sn = schurRing(QQ, n, 4, GroupActing => "Sn");
i5 : convert(s_{2,1}, Sp)

o5 = p    + p
      2,1    1

o5 : Sp
i6 : convert(s_{2,1}, O)

o6 = o    + o
      2,1    1

o6 : O
i7 : convert(s_{2,1}, Sn)

o7 = n
      2,1

o7 : Sn

The dispatch works from any source basis to any target basis. Below we start from a monomial-basis Schur ring and send the same element into each of the flavors -- the dispatcher selects toS, toSp, toO, and toSn respectively:

i8 : M    = schurRing(QQ, m, 4, Basis => "Monomial");
i9 : convert(m_{2,1}, S)

o9 = s    - 2s
      2,1     1,1,1

o9 : S
i10 : convert(m_{2,1}, Sp)

o10 = p    - p
       2,1    1

o10 : Sp
i11 : convert(m_{2,1}, O)

o11 = o    - 2o      + o
       2,1     1,1,1    1

o11 : O
i12 : convert(m_{2,1}, Sn)

o12 = n    - 2n
       2,1     1,1,1

o12 : Sn

To a rational-GL target, the dispatcher uses toRatGL, which embeds a plain GL Schur character $s_\lambda$ as the bipartition $s_{(\lambda, ())}$:

i13 : RRat = schurRing(QQ, rRat, 4, GroupActing => "RatGL");
i14 : convert(s_{2,1}, RRat)

o14 = rRat
          {{2, 1}, {}}

o14 : RRat
i15 : convert(s_{3} + 2*s_{1,1}, RRat)

o15 = rRat          + 2rRat
          {{3}, {}}        {{1, 1}, {}}

o15 : RRat

A symmetricRing source is also handled: here the dispatcher routes through toSymm and lands in the Schur basis of the target ring.

i16 : U = symmetricRing(QQ, 4);
i17 : convert(e_1 * h_2, S)

o17 = s  + s
       3    2,1

o17 : S
i18 : convert(p_3, S)

o18 = s
       3

o18 : S

See also

Ways to use convert:

  • convert(RingElement,Ring)
  • convert(Number,Ring) (missing documentation)

For the programmer

The object convert is a method function.


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