Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

problem with orthogonal groups in dimension 2? #5

Open
ThomasBreuer opened this issue May 14, 2021 · 4 comments
Open

problem with orthogonal groups in dimension 2? #5

ThomasBreuer opened this issue May 14, 2021 · 4 comments
Labels
bug Something isn't working

Comments

@ThomasBreuer
Copy link
Contributor

ThomasBreuer commented May 14, 2021

When I wrote tests for the extension of GAP functionality based on the Forms package (see pull request #4), I found the following strange behaviour with some orthogonal groups in dimension 2.

I start with the group GO(-1,2,3) in GAP.

gap> d:= 2;;  q:= 3;;  g:= GO(-1,d,q);;
gap> mat1:= InvariantQuadraticForm( g ).matrix;;
gap> form1:= QuadraticFormByMatrix( mat1, GF(q) );;
gap> Display( form1 );
Quadratic form
Gram Matrix:
 1 1
 . 2
gap> bas1:= BaseChangeToCanonical( form1 );;
gap> can1:= bas1 * mat1 * TransposedMat( bas1 );
[ [ Z(3)^0, Z(3) ], [ Z(3)^0, Z(3)^0 ] ]
gap> canform1:= QuadraticFormByMatrix( can1, GF(q) );;
gap> Display( canform1 );
Quadratic form
Gram Matrix:
 1 .
 . 1

Now I conjugate the group with a permutation matrix.
A Gram matrix of the invariant quadratic form of the image is given by conjugating the Gram matrix of the form for the original group.
However, I get a different canonical form for it.

gap> pi:= PermutationMat( (1,2), d, GF(q) );;
gap> mat2:= pi * mat1 * TransposedMat( pi );;
gap> g2:= ConjugateGroup( g, pi );;
gap> form2:= QuadraticFormByMatrix( mat2, GF(q) );;
gap> bas2:= BaseChangeToCanonical( form2 );;
gap> can2:= bas2 * mat2 * TransposedMat( bas2 );
[ [ Z(3), Z(3)^0 ], [ Z(3), Z(3) ] ]
gap> canform2:= QuadraticFormByMatrix( can2, GF(q) );;
gap> Display( canform2 );
Quadratic form
Gram Matrix:
 2 .
 . 2
gap> canform1 = canform2;
false

(With the base change bas1 * pi^-1 instead of bas2, we would get can1 from mat2, and everything would work as expected.)
What am I missing?

P.S.:
PreservedQuadraticForms( GO(-1,2,q) ) seems to find nothing if q is odd. As far as I see, this is not related to the problem sketched above.

@fingolfin
Copy link
Member

This seems like a bug to me. It seems to contradict what https://www.gap-system.org/Manuals/pkg/forms/doc/chap5.html says is the canonical form of a elliptic bilinear form.

@fingolfin
Copy link
Member

This doesn't seem to be limited to dimension 2. The manual contains this example:

gap> go := GO(5, 5);
GO(0,5,5)
gap> x := 
> [ [ Z(5)^0, Z(5)^3, 0*Z(5), Z(5)^3, Z(5)^3 ], 
>   [ Z(5)^2, Z(5)^3, 0*Z(5), Z(5)^2, Z(5) ], 
>   [ Z(5)^2, Z(5)^2, Z(5)^0, Z(5), Z(5)^3 ],
>   [ Z(5)^0, Z(5)^3, Z(5), Z(5)^0, Z(5)^3 ], 
>   [ Z(5)^3, 0*Z(5), Z(5)^0, 0*Z(5), Z(5) ] 
>  ];;
gap> go2 := go^x;
<matrix group of size 18720000 with 2 generators>
gap> forms := PreservedSesquilinearForms( go2 );
[ < bilinear form > ]
gap> Display( forms[1] );
Bilinear form
Gram Matrix:
 4 2 4 3 3
 2 2 2 3 3
 4 2 3 1 4
 3 3 1 2 4
 3 3 4 4 3

But when I run this in GAP 4.11 or master, I get

 1 3 1 2 2
 3 3 3 2 2
 1 3 2 4 1
 2 2 4 3 1
 2 2 1 1 2

and in GAP 4.10, I get

 2 1 2 4 4
 1 1 1 4 4
 2 1 4 3 2
 4 4 3 1 2
 4 4 2 2 4

All of these just differ by a scalar.

@ThomasBreuer
Copy link
Contributor Author

When I ask for the forms that are preserved by a given group then the natural result is a vector space of forms, and one has to be aware of scalar multiples. However, if a function promises to compute a (base change to a) canonical form from a given form then the result should be unique.

@fingolfin
Copy link
Member

@ThomasBreuer is right, and I was wrong: of course nothing anywhere claims that PreservedSesquilinearForms returns specific forms, just that it returns "all" forms "up to scalar". Which now leaves me wondering: what if the space of preserved forms has more than one dimension? Is then a list of forms returned which are a basis of the space of all forms? Perhaps this could be clarified?

(And in the case of a 1-dimensional form space, one could make them "canonical" by e.g. forcing the first entry of the first non-zero row to be 1 -- whether that's necessary or useful beyond making it a tad easier to make the rests reproducible is another question, though ;-) )

@fingolfin fingolfin added the bug Something isn't working label Jun 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants