IsNewIndecomposable(d, x [,mu])
IsNewIndecomposable is the function which does all of the hard work
when the function InducedDecompositionMatrix is applied to
decomposition matrices (see InducedDecompositionMatrix). Given a
projective module x, IsNewIndecomposable returns true if it is
able to show that x is indecomposable (and this indecomposable is
not already listed in d), and false
otherwise. IsNewIndecomposable will also print a brief description
of its findings, giving an upper and lower bound on the first
decomposition number mu for which it is unable to determine the
multiplicity of S(mu) in x.
IsNewIndecomposable works by running through all of the partitions
nu such that P(nu) could be a summand of x and it uses
various results, such as the q-Schaper theorem of [JM2] (see Schaper
Schaper), the Mullineux map (see Mullineux Mullineux), and
inducing simple modules, to determine if P(nu) does indeed
split off. In addition, if d is the decomposition matrix for
'H'(Sym_n) then IsNewIndecomposable will probably use some of the
decomposition matrices of 'H'(Sym_m) for m le n, if they are
known. Consequently it is a good idea to save decomposition matrices
as they are calculated (see SaveDecompositionMatrix).
For example, in calculating the 2--modular decomposition matrices of
Sym_{r} the first projective which InducedDecompositionMatrix is
unable to calculate is P(10).
gap> H:=Specht(2,2);; gap> d:=InducedDecompositionMatrix(DecompositionMatrix(H,9));; # Inducing. # The following projectives are missing from <d>: # [ 10 ]
(In fact, given the above commands, Specht will return the full decomposition matrix for Sym_{10} because this matrix is in the library; these were the commands that I used to calculate the decomposition matrix in the library.)
By inducing P(9) we can find a projective H--module which contains
P(10). We can then use IsNewIndecomposable to try and decompose
this induced module into a sum of PIMs.
gap> SpechtPrettyPrint(); x:=InducedModule(H.P(9),1); S(10)+S(9,1)+S(8,2)+2S(8,1^2)+S(7,3)+2S(7,1^3)+3S(6,3,1)+3S(6,2^2) +4S(6,2,1^2)+2S(6,1^4)+4S(5,3,2)+5S(5,3,1^2)+5S(5,2^2,1)+2S(5,1^5) +2S(4^2,2)+2S(4^2,1^2)+2S(4,3^2)+5S(4,3,1^3)+2S(4,2^3)+5S(4,2^2,1^2) +4S(4,2,1^4)+2S(4,1^6)+2S(3^3,1)+2S(3^2,2^2)+4S(3^2,2,1^2) +3S(3^2,1^4)+3S(3,2^2,1^3)+2S(3,1^7)+S(2^3,1^4)+S(2^2,1^6)+S(2,1^8) +S(1^10) gap> IsNewIndecomposable(d,x); # The multiplicity of S(6,3,1) in P(10) is at least 1 and at most 2. false gap> x; S(10)+S(9,1)+S(8,2)+2S(8,1^2)+S(7,3)+2S(7,1^3)+2S(6,3,1)+2S(6,2^2) +3S(6,2,1^2)+2S(6,1^4)+3S(5,3,2)+4S(5,3,1^2)+4S(5,2^2,1)+2S(5,1^5) +2S(4^2,2)+2S(4^2,1^2)+2S(4,3^2)+4S(4,3,1^3)+2S(4,2^3)+4S(4,2^2,1^2) +3S(4,2,1^4)+2S(4,1^6)+2S(3^3,1)+2S(3^2,2^2)+3S(3^2,2,1^2) +2S(3^2,1^4)+2S(3,2^2,1^3)+2S(3,1^7)+S(2^3,1^4)+S(2^2,1^6)+S(2,1^8) +S(1^10)
Notice that some of the coefficients of the Specht modules in x have
changed; this is because IsNewIndecomposable was able to determine
that the multiplicity of S(6,3,1) was at most 2 and so it
subtracted one copy of P(6,3,1) from x.
In this case, the multiplicity of S(6,3,1) in P(10) is easy to
resolve because general theory says that this multiplicity must be
odd. Therefore, x-'P'(6,3,1) is projective. After subtracting
P(6,3,1) from x we again use IsNewIndecomposable to see if x
is now indecomposable. We can tell IsNewIndecomposable that all of
the multiplicities up to and including S(6,3,1) have already been
checked by giving it the addition argument mu=[6,3,1].
gap> x:=x-H.P(d,6,3,1);; IsNewIndecomposable(d,x,6,3,1); true
Consequently, <x>='P'(10) and we add it to the decomposition matrix d (and save it).
gap> AddIndecomposable(d,x); SaveDecompositionMatrix(d);
A full description of what IsNewIndecomposable does can be found by
reading the comments in specht.g. Any suggestions or improvements on
this function would be especially welcome.
See also DecompositionMatrix DecompositionMatrix and
InducedDecompositionMatrix InducedDecompositionMatrix. This
function requires the package ``specht'' (see RequirePackage).
GAP 3.4.4