aidevnn/FastGoat

Improving Character Table Computation

Opened this issue · 4 comments

The current implementation for computing character tables is based solely on the following methods:

  • Lifting from the derived subgroup
  • Induction from subgroups
  • Restriction from the supergroup, as in the case of SL(2,3)

This implementation can be enhanced by incorporating various named characters and resolving orthogonality and an old implementation for resolving orthogonality can be retrieved from git-history.

When dealing with the character table, some small improvement can be tested

  • the regular character to complete the last line,
  • an induction from the stabilizer subgroup corresponding to each class,
  • additionally, if the stabilizer subgroup is normal, lifting can also be done.

In the case of abelian group, induction from its subgroups is x3 slower than direct computation of linear characters from tensor property.

{
var ctG = FG.CharacterTableEmpty(g);
ctG.DerivedSubGroupLift();
ctG.InductionFromSubGroups(subgroups);
ctG.DisplayCells(tableOnly: true);
Console.WriteLine();
}
}

It is now fixed.

{
var ctG = FG.CharacterTableEmpty(g);
if(g.GroupType == GroupType.AbelianGroup)
ctG.AbelianTable();
else
{
ctG.DerivedSubGroupLift();
ctG.InductionFromStabilizers();
ctG.InductionFromSubGroups(subgroups);
}
ctG.DisplayCells(tableOnly: true);
Console.WriteLine();
}

When linear characters are associated with a new character with unknowns, it is possible to reduce and solve the system for SL(2,3), GL(2,3), SL(2,3) x C2, and SL(2,3) x: C2. However, a method to avoid unnecessary linear characters still needs to be found.

Pretty print error needs to be fixed, I^2 = -1.

[ Ꭓ.11 2 -2 0 0 -2*I 2*I -I - I^2 -I + I^2 I + I^2 I - I^2 0 0 0 0]
[ Ꭓ.12 2 -2 0 0 -2*I 2*I I + I^2 I - I^2 -I - I^2 -I + I^2 0 0 0 0]
[ Ꭓ.13 2 -2 0 0 2*I -2*I -I + I^2 -I - I^2 I - I^2 I + I^2 0 0 0 0]
[ Ꭓ.14 2 -2 0 0 2*I -2*I I - I^2 I + I^2 -I + I^2 -I - I^2 0 0 0 0]