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