Macaulay2 » Documentation
Packages » SchurFunctors :: divMult
next | previous | forward | backward | up | index | toc

divMult -- multiplication and comultiplication of divided powers

Description

The divided-power algebra $D^*(E) = \bigoplus_{d \ge 0} D^d(E)$ on a free module $E$ of rank $n$ is a graded bi-algebra. Its basis elements are indexed by weakly-increasing tuples of integers, or equivalently by their exponent vectors. This package provides both the multiplication $D^p \otimes D^q \to D^{p+q}$ and the comultiplication $D^{p+q} \to D^p \otimes D^q$ on those bases.

Multiplication. divMult(L1, L2) takes two weakly-increasing lists L1, L2 (basis elements of $D^{|L_1|}$ and $D^{|L_2|}$) and returns the pair (c, L) where L is the sorted concatenation and c is the binomial coefficient encoding the divided-power product rule $x^{(p)} \cdot x^{(q)} = \binom{p+q}{p}\, x^{(p+q)}$.

i1 : divMult({0,0,1}, {0,1})

o1 = {6, {0, 0, 0, 1, 1}}

o1 : List

Comultiplication. divComult(L, p) takes a basis element L of $D^{|L|}$ and returns the set of ways to split it as a pair (A, B) with |A| = p, |B| = |L| - p, and $A + B = L$ as multisets. This is the comultiplication $D^{|L|}(E) \to D^{p}(E) \otimes D^{|L| - p}(E)$.

i2 : divComult({0,0,1,2}, 2)

o2 = {{{0, 0}, {1, 2}}, {{0, 1}, {0, 2}}, {{0, 2}, {0, 1}}, {{1, 2}, {0, 0}}}

o2 : List

Internally, divComult drives the Weyl-side straightening: a single Garnir shuffle across adjacent rows proceeds by comultiplying the concatenated row tails and remultiplying into the partner row; see towardWeylStandard. A basis element can be stored either as a weakly-increasing tuple or as an exponent vector recording the multiplicity of each letter; for efficiency, much of the straightening uses the exponent-vector form, and both forms are accepted as input below.

Variants. Both operations come in three forms:

  • divMult(L1, L2) and divComult(L, p): tuple (weakly-increasing list) input; the alphabet size is inferred from the maximum entry appearing in the input.
  • divMult(L1, L2, n) and divComult(L, p, n): tuple input with an explicit alphabet size n, useful when the tuples are padded or when the caller needs all output tuples to have a uniform length.
  • divMult(S1, S2) and divComult(S, p): sequence input, interpreted as an exponent vector (that is, S_i is the multiplicity of the letter i). Working directly with exponent vectors avoids the conversion to and from tuples, and is the form used inside the straightening loop.

See also

Ways to use divMult:

  • divMult(List,List)
  • divMult(List,List,ZZ)
  • divMult(Sequence,Sequence)

For the programmer

The object divMult is a method function.


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