Skip to content

Commit

Permalink
Multiplicative group of linears characters
Browse files Browse the repository at this point in the history
  • Loading branch information
aidevnn committed May 25, 2024
1 parent 525c31e commit 8b55d92
Showing 1 changed file with 37 additions and 9 deletions.
46 changes: 37 additions & 9 deletions FastGoat/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,35 +32,63 @@

Console.WriteLine("Hello World");

void TestOrth<T>(ConcreteGroup<T> g, bool indStab = true, params (int dim, int[] linIdx)[] infos) where T : struct, IElt<T>
void TestOrth<T>(ConcreteGroup<T> g, bool indStab = true, params (int dim, int[] linIdx)[] infos)
where T : struct, IElt<T>
{
var ct = FG.CharacterTableEmpty(g);
ct.DerivedSubGroupLift();
if (indStab)
ct.InductionFromStabilizers();

Logger.SetOff();
DisplayGroup.HeadOrders(g);
ct.DisplayCells(tableOnly: true);
if (ct.TableComplete)
return;

ct.SolveSumSquare();
ct.SolveOrthogonality(infos);
ct.DisplayCells();
Console.Beep();
}

void LinChisMulGroup<T>(ConcreteGroup<T> g) where T : struct, IElt<T>
{
Console.WriteLine(g.ShortName);
if (g.GroupType == GroupType.AbelianGroup)
return;

var ct = FG.CharacterTableEmpty(g);
ct.DerivedSubGroupLift();
ct.InductionFromStabilizers();
if(ct.TableComplete)
return;

ct.DisplayCells();

var gr = Group.MulGroup("LinChi", ct.DoneChis.Where(chi => chi.IsLinear).ToArray());
DisplayGroup.HeadElementsNames(gr);
DisplayGroup.Generators(gr);
}

void runOrth()
{
GlobalStopWatch.Restart();
TestOrth(FG.SL2p(3), infos: (2, [0, 1, 2]));
TestOrth(FG.GL2p(3), infos: (2, [0, 1]));
TestOrth(FG.Quaternion(16), indStab: false);
TestOrth(FG.MetaCyclicSdp(4, 4, 3), indStab: false);
TestOrth(FG.DiCyclic(5), indStab: false, infos: [(2, [0, 2]), (2, [0, 2])]);
TestOrth(FG.DiCyclic(6), indStab: false, infos: [(2, [0, 2]), (2, [0, 2])]);

TestOrth(FG.SL2p(3));
TestOrth(FG.GL2p(3));
TestOrth(Group.SemiDirectProd(FG.SL2p(3), FG.AbelianMat(2)), infos: (2, [0, 1, 2, 3, 4, 5]));
TestOrth(Product.Generate(FG.SL2p(3), FG.AbelianMat(2)), infos: (2, [0, 1, 2, 3, 4, 5]));

TestOrth(FG.Quaternion(16), indStab: false, infos: (2, [0, 1]));
TestOrth(FG.MetaCyclicSdp(4, 4, 3), indStab: false, infos: (2, [0, 4]));
TestOrth(FG.DiCyclic(5), indStab: false, infos: [(2, [0, 2]), (2, [0, 2])]);
TestOrth(FG.DiCyclic(6), indStab: false, infos: [(2, [0, 2]), (2, [0, 2])]);
GlobalStopWatch.Show(); // Time:54.696s
}

{
// runOrth();
foreach (var g in FG.AllGroupsOfOrder(1, 63))
LinChisMulGroup(g);
}

0 comments on commit 8b55d92

Please sign in to comment.