load "Subgroups/E7/ComputeFactorsE7.txt";

G:=PSU(3,4);
CC:=ConjugacyClasses(G);

Irr2:=IrreducibleModules(G,GF(16));
Irr:=[Irr2[1],Irr2[2],GModule(G,FrobeniusImage(Irr2[2],1)),GModule(G,FrobeniusImage(Irr2[2],2)),GModule(G,FrobeniusImage(Irr2[2],3))];
M1:=TensorProduct(Irr2[2],Irr2[4]); Append(~Irr,M1/Fix(M1)); delete M1;
Append(~Irr,GModule(G,FrobeniusImage(Irr[6],1)));
Append(~Irr,TensorProduct(Irr[2],Irr[3]));
for i in [1..3] do Append(~Irr,GModule(G,FrobeniusImage(Irr[8],i))); end for;
IrrSD:=SomeModulesSelfDual(56,Irr2);

P:=[13,5]; Ans3,Mods:=ComputeConspicuousFactors(56,IrrSD,CC,Tr,P,[]);

// This is the case given in the article.
IdentifyFactors(Mods[18],Irr) eq  [ 1, 1, 2, 3, 3, 4, 5, 5, 8, 9, 10, 11 ];
labs:=["1","3_1","3_2","3_1^*","3_2^*","8_1","8_2","9_{1,2}","\\bar 9_{1,2}^*","9_{1,2}^*","\\bar 9_{1,2}"];

A1:=BuildLargestModule(Irr[8],[Irr[i]:i in [1,2,3,4,5,9,11]]); DescribeLayers(A1,Irr,labs);
Dimension(Ext(Irr[10],A1)) eq 0;

A2a:=BuildLargestModule(Irr[8],[Irr[i]:i in [1,2,3,4,5,9]]);
A2b:=RemoveFromTop(A2a,Irr,Irr,[1,2,3,4,5]);
A2:=DirectSum(A2b,Dual(A2b));
DescribeLayers(A2b,Irr,labs); DescribeLayers(Dual(A2b),Irr,labs);

Dimension(Ext(Irr[2],A2)) eq 0; Dimension(Ext(Irr[5],A2)) eq 0;
Dimension(Ext(Irr[4],A2)) eq 1; Dimension(Ext(Irr[3],A2b)) eq 1 and Dimension(Ext(Irr[3],Dual(A2b))) eq 1;

// Now build the possible 56-dimensional modules.
A30:=BuildLargestModule(Dual(A2b),[Irr[4]]);
A31:=BuildLargestModule(A2b,[Irr[3]]);
A32:=BuildLargestModule(Dual(A2b),[Irr[3]]);
Subs:=[DirectSum([A2,Irr[2],Irr[4]]),DirectSum([A2,Irr[3],Irr[5]]),DirectSum(A30,Dual(A30))];
SubsA32:=StripDuplicates(Prune(Submodules(DirectSum([A31,A32]):CodimensionLimit:=3)));
SubsA32a:=[BuildLargestModule(Dual(i),[Irr[3]]):i in SubsA32];
Subs cat:=SubsA32a;

// Now build the subgroup 5 x Alt(5) and examine that.

L:=Subgroups(G:OrderEqual:=300)[1]`subgroup;
Ld:=DerivedSubgroup(L);
[Dimension(Fix(Restriction(i,Ld))):i in Subs] eq [ 5, 5, 4, 4, 4, 5 ];
for i in [1,2,6] do 3 in [Dimension(j):j in IndecomposableSummands(Restriction(Subs[i],Ld))]; end for;

IrrLd:=IrreducibleModules(Ld,GF(16));
PM1:=DirectSum([IrrLd[i]:i in [1,2,4]]);
PM2:=DirectSum([IrrLd[i]:i in [1,2,2,3]]);
PM3:=DirectSum([IrrLd[i]:i in [2,3]] cat [BuildLargestModule(IrrLd[1],[IrrLd[2]])]);
PM4:=DirectSum([IrrLd[i]:i in [2,2]] cat [BuildLargestModule(IrrLd[1],[IrrLd[3]])]);
PM5:=DirectSum([IrrLd[2],JacobsonRadical(BuildLargestModule(IrrLd[3],[IrrLd[1],IrrLd[2]]))]);
PM6:=DirectSum([IrrLd[2],BuildLargestModule(IrrLd[1],[IrrLd[2],IrrLd[3]])]);
PossM:=[PM1,PM2,PM3,PM4,PM5,PM6];
AllMs:=[DirectSum([i,Dual(i),ExteriorSquare(i),ExteriorSquare(Dual(i))]):i in PossM];
[Dimension(Fix(i)):i in AllMs] eq [ 6, 10, 7, 8, 5, 6 ];

not(3 in [Dimension(i):i in IndecomposableSummands(AllMs[5])]);