Ask Your Question
2

Question in general orthogonal group

asked 2024-01-19 02:10:47 +0100

woojoshua78 gravatar image

updated 2024-01-19 02:43:42 +0100

In sagemath, the general orthogonal group over a binary field is defined by

> G = GO(n, GF(2), e)

in which G indicates the n*n binary orthogonal matrices in GF(2).(When n is odd, that is for sure). What I don't get is when n is even. It says that parameter 'e' is relevant only when n is even. The sagemath description for e is:

e+1 or -1, and ignored by default; only relevant for finite fields and if the degree is even: a parameter that distinguishes inequivalent invariant forms.

What exactly is the mathematical meaning of e? Simple example gives

> G = GO(4, GF(2), 1)
> G.order() = 72
> H = GO(4, GF(2), -1)
> H.order() = 120
> inter = G.intersection(H)
> inter.order() = 12

Would this mean that the set of all binary orthogonal matrices of size 4 is constructed by the union of G and H(so that they have order 72+120-12 = 180)? More generally, how can i find the whole group of binary orthogonal matrices of size n(n even)?


Edit) Now I'm confused about the whole general orthogonal group. When I did

> G = GO(3, GF(2))
> set = [matrix(element) * matrix(element).transpose() for element in G]

set does not check out to be all identites. I thought that the general orthogonal group had the definition of $$GO(n, GF(q)) = \{Q \in GL(n, GF(q)) | QQ^T = Q^TQ = I_n\}$$ Is this not what the GO command does?

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
2

answered 2024-01-22 19:13:57 +0100

dan_fulea gravatar image

As reference i am using https://doc.sagemath.org/html/en/reference/groups/sage/groups/matrix_gps/orthogonal_gap.html.

The group G constructed in the OP comes with the information on the used invariant (bilinear) form, and the quadratic form determining $G$:

sage: G = GO(4, GF(2), 1)
sage: B = G.invariant_bilinear_form()
sage: B
[0 1 0 0]
[1 0 0 0]
[0 0 0 1]
[0 0 1 0]
sage: M = G.invariant_form()
sage: M
[0 1 0 0]
[1 0 0 0]
[0 0 0 1]
[0 0 1 0]
sage: G.order()
72

Let us check that for every $g$ in $G$ we have the equality $gBg^t=B$, where $B$ is the invariated (bilinear) form:

sage: [g.matrix() * B * g.matrix().transpose() == B for g in G] == 72*[True]
True

So we have $72$ times True in both lists above. So what we expect is not the equality $gg^t=1$, but rather in the matrix world the conservation of the (symplectic, characteristic is two, $1=-1$) bilinear form $B$. This is answering the last confusion in the post.

Same sage game for the value $-1$ for `e`, the bilinear form does not distinguish between the "isotopes".
But the quadratic form does:
sage: G = GO(4, GF(2), 1)
sage: H = GO(4, GF(2), -1)
sage: G.invariant_quadratic_form() == H.invariant_quadratic_form()
False
sage: G.invariant_quadratic_form()
[0 1 0 0]
[0 0 0 0]
[0 0 0 1]
[0 0 0 0]
sage: H.invariant_quadratic_form()
[0 1 0 0]
[0 0 0 0]
[0 0 1 1]
[0 0 0 1]
sage: G.invariant_bilinear_form() == H.invariant_bilinear_form()
True

As in loc. cit or in the doc string for

sage: G.invariant_quadratic_form??

And the info starts with

Type:            CachedMethodCallerNoArgs
String form:     Cached version of <function OrthogonalMatrixGroup_gap.invariant_quadratic_form at 0x7f7d1073bd80>
File:            /usr/lib/python3.11/site-packages/sage/groups/matrix_gps/orthogonal_gap.py
Source:
    @cached_method
    def invariant_quadratic_form(self):
        r"""
        Return the quadratic form preserved by the orthogonal group.

        OUTPUT:

        The matrix `Q` defining "orthogonal" as follows. The matrix
        determines a quadratic form `q` on the natural vector space
        `V`, on which `G` acts, by `q(v) = v Q v^t`. A matrix `M` is
        an element of the orthogonal group if `q(v) = q(v M)` for all
        `v \in V`.

This is in fact the definition. We can check as follows, that each matrix in $G$ preserves $Q$. Let's say for $e=+1$ first. I'll do this in dialog form. We define the space $V=F^4$ of dimension four over $F=\Bbb F_2$, the field with two elements. Then ask for $G=$GO(4, GF(2), 1). Its quadratic form $q$ is determined by the matrix $Q$ from above, $q(v)=vQv^t$, if row vectors are used. Somehow, matrix multiplication is arranged to work for $v$ in $V$ without any need of transposition, so in sage the formula is $q(v) = vQv$.

sage: V = VectorSpace(GF(2), 4)
sage: G = GO(4, GF(2), 1)
sage: Q = G.invariant_quadratic_form()
sage: v = V.random_element()
sage: v
(0, 1, 0, 1)
sage: g = G.random_element()
sage: g
[0 1 0 0]
[1 0 1 0]
[0 0 1 0]
[0 1 0 1]
sage: w = v * g.matrix()
sage: w
(1, 1, 1, 1)
sage: v * Q * v
0
sage: w * Q * w
0

This was one random check. To do the check for all $v\in V$ and all $g\in G$ we build the corresponding list (using list comprehension) of true or false values...

sage: # and now for all elements
sage: q = lambda v: v*Q*v
sage: False not in [q(v) == q(v*g.matrix()) for v in V for g in G]
True

There is thus no false in the list, all equalities are verifies.

We may want ourselves to construct the set of all invertible $g$'s that preserve $q$... Let us check that there are

sage: G.order()
72

elements. Well, this is a very pedestrian search, we let $s$ run in $SL(4,\Bbb F_2)$, a group with $(16-1)(16-2)(16-4)(16-8)=$ elements.

sage: S = SL(4, GF(2))
sage: len([s for s in S if False not in [q(v) == q(v*s) for v in V]])
72
sage: G.order()
72

It may be interesting to see the GAP documentation for this group, since gap generously gives it. Related links are:

  • https://docs.gap-system.org/doc/ref/chap50_mj.html - Search for 50.2-6 GeneralOrthogonalGroup here to see which parameters can be used.

  • See also the reference KL90 in the above link, we have a mathematical source for the construction of the group,

    Kleidman, P. and Liebeck, M., The subgroup structure of the finite classical groups, Cambridge University Press, London Mathematical Society Lecture Note Series, 129, Cambridge (1990), x+303 pages.

    however the GAP doc mentions that the notation GO is used in the book for some other object, pointing further to the implemented one.

  • https://www.gap-system.org/ForumArchive2/2009/002619.html - Here we have some GAP code mentioning the GAP version of our groups and how to use the arguments, GO(1, 4, 2) with $72$ elements, and GO(-1, 4, 2) with $120$ elements.

edit flag offensive delete link more

Comments

Ahhh...thank you so much for your detailed answer. I will read the documents of GAP.

woojoshua78 gravatar imagewoojoshua78 ( 2024-01-23 02:39:04 +0100 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2024-01-19 02:10:47 +0100

Seen: 486 times

Last updated: Jan 22