gap-packages / forms

Forms -- sesquilinear and quadratic, a package for GAP
https://gap-packages.github.io/forms
2 stars 2 forks source link

`PreservedSesquilinearForms` does not recognise an invariant unitary form #22

Open maxhauck opened 2 years ago

maxhauck commented 2 years ago

I was writing some code for the ClassicalMaximals package and wanted to use the function PreservedSesquilinearForms in order to determine the unitary form a group I constructed preserves (and I knew for certain that it did preserve some non-trivial unitary form), but PreservedSesquilinearForms did not give a non-trivial unitary form even after 10 000 trials.

Specifically, the example group was generated by the following two matrices:

                [  1    0    0   ]                    [ z^39  z^9  z^24 ]
                [ z^33 z^14 z^26 ]                    [ z^25 z^16  z^6  ]
                [ z^19 z^31 z^5  ]                    [  z^7 z^32  z^28 ]          where z is a primitive element of GF(49).

Note that one can actually compute a unitary form preserved by this group by other means (for example in Magma), so, in principle, PreservedSesquilinearForms should recognise that.

It seems that this problem occurs for subgroups of SU(d, q) in the Aschbacher class C3 (constructed as in the Magma code for ClassicalMaximals or as described in [HR05], Prop. 6.6) in general.

For the purposes of the ClassicalMaximals package, I have now translated a function which does manage to recognise these preserved unitary forms, namely UnitaryForm in https://github.com/gap-packages/ClassicalMaximals/blob/main/gap/Forms.gi.

[HR05] D. F. Holt, C. M. Roney-Dougal. "Constructing Maximal Subgroups of Classical Groups." LMS Journal of Computation and Mathematics, vol. 8, 2005, pp. 46-79.

fingolfin commented 2 years ago

Here's GAP code to reproduce the issue:

z:=Z(49);
G:=Group(z^0*[[[1,0,0],[z^33,z^14,z^26],[z^19,z^31,z^5]],[[z^39,z^9,z^24],[z^25,z^16,z^6],[z^7,z^32,z^28]]]);

This results in:

gap> PreservedSesquilinearForms(G);
[ < trivial form > ]

Yet:

gap> LoadPackage("ClassicalMaximals");
true
gap> form:=UnitaryForm(G);
[ [ Z(7), Z(7^2)^12, Z(7^2)^38 ], [ Z(7^2)^36, Z(7)^0, Z(7)^5 ], [ Z(7^2)^26, Z(7)^5, Z(7)^0 ] ]
gap> Display(form);
z = Z(49)
    3 z^12 z^38
 z^36    1    5
 z^26    5    1
gap> G.1*form*HermitianConjugate(G.1,7) = form;
true
gap> G.2*form*HermitianConjugate(G.2,7) = form;
true
fingolfin commented 2 years ago

I note that ClassicalForms_GeneratorsWithoutScalarsFrobenius returns false for this group, which then is used to indicate that there is no invariant sesquilinear form. Clearly this is wrong.

fingolfin commented 1 year ago

I've contacted @jdebeule and @johnbamberg about this in June 2022. They pointed me to a preprint with details which however was never published (I've never seen that preprint myself). They also pointed me to @aniemeyer (one of the authors of that preprint) as someone to talk to. @aniemeyer has a copy of that preprint. I've talked to here since then, and she wants to look into it; she will also soon be in Australia and intends to talk with @johnbamberg about it.

It would be great to get this resolved.

johnbamberg commented 1 year ago

Thanks Max. This will happen! Jan will be in Perth soon, and Alice N too. We will make this a priority.

Best wishes,

John.

From: Max Horn @.> Date: Wednesday, 6 September 2023 at 9:59 pm To: gap-packages/forms @.> Cc: John Bamberg @.>, Mention @.> Subject: Re: [gap-packages/forms] PreservedSesquilinearForms does not recognise an invariant unitary form (#22)

I've contacted @jdebeulehttps://github.com/jdebeule and @johnbamberghttps://github.com/johnbamberg about this in June 2022. They pointed me to a preprint with details which however was never published (I've never seen that preprint myself). They also pointed me to @aniemeyerhttps://github.com/aniemeyer (one of the authors of that preprint) as someone to talk to. @aniemeyerhttps://github.com/aniemeyer has a copy of that preprint. I've talked to here since then, and she wants to look into it; she will also soon be in Australia and intends to talk with @johnbamberghttps://github.com/johnbamberg about it.

It would be great to get this resolved.

— Reply to this email directly, view it on GitHubhttps://github.com/gap-packages/forms/issues/22#issuecomment-1708431407, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGGZLCYZU2I5MNKULN6CQHTXZB6T7ANCNFSM5FL4N2BQ. You are receiving this because you were mentioned.Message ID: @.***>

fingolfin commented 12 months ago

@johnbamberg @jdebeule @aniemeyer did you already have a chance to look into this?

johnbamberg commented 12 months ago

Hi Max,

I’ve pencilled in the second week of November for this.

Best wishes,

John.

From: Max Horn @.> Date: Friday, 6 October 2023 at 5:00 pm To: gap-packages/forms @.> Cc: John Bamberg @.>, Mention @.> Subject: Re: [gap-packages/forms] PreservedSesquilinearForms does not recognise an invariant unitary form (#22)

@johnbamberghttps://github.com/johnbamberg @jdebeulehttps://github.com/jdebeule @aniemeyerhttps://github.com/aniemeyer did you already have a chance to look into this?

— Reply to this email directly, view it on GitHubhttps://github.com/gap-packages/forms/issues/22#issuecomment-1750235402, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGGZLC3FTDHASSQPB3GJKVLX57CENAVCNFSM5FL4N2B2U5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TCNZVGAZDGNJUGAZA. You are receiving this because you were mentioned.Message ID: @.***>

fingolfin commented 1 week ago

With my patch for the GAP meataxe, one can get the invariant sesquilinear form quite nicely without the forms package:

gap> M:=GModuleByMats(z^0*[[[1,0,0],[z^33,z^14,z^26],[z^19,z^31,z^5]],[[z^39,z^9,z^24],[z^25,z^16,z^6],[z^7,z^32,z^28]]], GF(49));
rec( IsOverFiniteField := true, dimension := 3, field := GF(7^2), generators := [ [ [ Z(7)^0, 0*Z(7), 0*Z(7) ], [ Z(7^2)^33, Z(7^2)^14, Z(7^2)^26 ], [ Z(7^2)^19, Z(7^2)^31, Z(7^2)^5 ] ],
      [ [ Z(7^2)^39, Z(7^2)^9, Z(7)^3 ], [ Z(7^2)^25, Z(7)^2, Z(7^2)^6 ], [ Z(7^2)^7, Z(7)^4, Z(7^2)^28 ] ] ], isMTXModule := true )
gap> MTX.InvariantSesquilinearForm(M);
[ [ Z(7), Z(7^2)^12, Z(7^2)^38 ], [ Z(7^2)^36, Z(7)^0, Z(7)^5 ], [ Z(7^2)^26, Z(7)^5, Z(7)^0 ] ]

Indeed looking at that, and re-reading the forms package documentation, I now wonder what complicated stuff forms is doing, and why it matters? It seems the main difference is that forms does not just recognize forms that are invariant in the "classical" sense, but also forms that are invariant "up to a scalar", which the meataxe routine does not?!

I think the forms manual section on PreservedSesquilinearForms is really vague and should be clarified.