Construction of Pseudo- reflections

Let V be a vector space of dimension n over a field F. As defined in Bourbaki [Bou68], a pseudo-reflection in Magma is a linear transformation of V whose space of fixed points is a subspace of dimension n - 1, namely a hyperplane. (Some authors require a pseudo-reflection to be invertible and diagonalisable.)

A reflection, as defined above, is a pseudo-reflection and so too is a transvection. The Magma package described in this chapter includes code for the construction of transvections but the emphasis is on groups generated by reflections.

If r is a pseudo-reflection, then dim(im(1 - r)) = 1 and a basis element of im(1 - r) is called a root of r.

Let a be a root of the pseudo-reflection r and let H = ker(1 - r) be the hyperplane of fixed points of r. For all v∈V there exists φ(v) ∈F such that v - vr = φ(v)a. Then φ∈V * and kerφ = H. This means that every pseudo-reflection has the form

vr = v - φ(v)a

and its determinant is 1 - φ(a). The linear functional φ is a coroot of r.

If φ(a) = 1, then r is not invertible; it is the projection of V onto H along a.

If φ(a) = 0 (equivalently, a∈H), then r is by definition a transvection.

If φ(a) ≠0, 1, then r is called a reflection. For the most part we consider only reflections of finite order, but not necessarily of order two.

In magma both V and its dual space V * are identified with the space Fn of row vectors of length n and the standard bilinear pairing between V and V * is (a, b) |-> abtr, where btr denotes the column vector which is the transpose of b.

The row vector b which represents the coroot φ is also called a coroot of the pseudo-reflection; it is uniquely determined by r and a. The matrix of r is

I - btr a

and, in particular, ar = (1 - abtr)a. Thus r is a reflection of finite order d if and only if abtr ≠0, 1 and 1 - abtr is a d-th root of unity.

Contents

PseudoReflection(a, b) : ModTupRngElt, ModTupRngElt -> AlgMatElt
The matrix of the pseudo-reflection with root a and coroot b.
Transvection(a, b) : ModTupRngElt, ModTupRngElt -> AlgMatElt
The matrix of the transvection with root a and coroot b. The input is checked to ensure that the root and coroot define a transvection.
Reflection(a, b) : ModTupRngElt, ModTupRngElt -> AlgMatElt
The matrix of the reflection with root a and coroot b. The input is checked to ensure that the root and coroot define a reflection.
IsPseudoReflection(r) : Mtrx -> BoolElt, ModTupRngElt, ModTupRngElt
Returns true if r is the matrix of a pseudo-reflection, in which case a root and a coroot are returned as well.
IsTransvection(r) : Mtrx -> BoolElt, ModTupRngElt, ModTupRngElt
Returns true if r is the matrix of a transvection, in which case a root and a coroot are returned as well.
IsReflection(r) : Mtrx -> BoolElt, ModTupRngElt, ModTupRngElt
Returns true if r is the matrix of a reflection, in which case a root and a coroot are returned as well.
IsReflectionGroup(G) : GrpMat -> BoolElt
    Strict: BoolElt                     Default: true
The default action is to return true if every generator of G is a reflection. If Strict is false, the function checks if G can be generated by some of its reflections, not necessarily those returned by Generators(G).

Example GrpRfl_pseudoreflection (H106E1)

Create a pseudo-reflection directly and then check that it is a transvection.
> V := VectorSpace(GF(5), 3);
> t := PseudoReflection(V![1,0,0],V![0,1,0]);
> t;
[1 0 0]
[4 1 0]
[0 0 1]
> IsTransvection(t);
true (1 0 0)
(0 1 0)
> IsReflection(t);
false

Example GrpRfl_ref-group (H106E2)

An example of a group which can be generated by reflections even though not every given generator is a reflection.
> F<omega> := CyclotomicField(3);
> r := Matrix(F,2,2,[1,omega^2,0,omega]);
> IsReflection(r);
true (         0 -omega + 1)
(1/3*(2*omega + 1)                 1)
> s := Matrix(F,2,2,[0,-1,1,0]);
> IsReflection(s);
false
> G := MatrixGroup<2,F | r,s >;
> IsReflectionGroup(G);
false
> IsReflectionGroup(G : Strict := false);
true
> #G;
24

To find reflection generators for this group we look for a reflection which, together with the reflection r, generates G. (This is a rather special example; not every finite reflection group of rank two can be generated by two reflections.)

> exists(t){ t : t in G | IsReflection(t) and G eq sub<G|r,t> };
true
> t;
[        0 omega + 1]
[        1    -omega]

Example GrpRfl_transvections (H106E3)

The groups SL(n, q) are generated by transvections. To illustrate this we find representatives for the conjugacy classes of GL(3, 25) which are transvections and then check that the normal closure is SL(3, 25).
> G := GL(3,25);
> ccl := Classes(G);
> T := [ c : c in ccl | IsTransvection(c[3]) ];
> #T;
1
> t := T[1][3]; t;
[     1      0      0]
[     0      1      1]
[     0      0      1]
> S := ncl< G | t >;
> S eq SL(3,25);
true

Pseudo-reflections Preserving Reflexive Forms

Let J be the matrix of a non-degenerate reflexive bilinear or sesquilinear form β on the vector space V over a field F. Then β is either a symmetric, alternating or hermitian form.

We may assume that F is equipped with an automorphism σ such that σ2 = 1. If β is a symmetric or alternating form, σ is the identity; if β is hermitian, the order of σ :α |-> barα is two and J = bar Jtr. If a is the row vector (α1, α2, ..., αn), define σ(a) = (σ(α1), σ(α2), ..., σ(αn)).

If a is a root of a pseudo-reflection r and if r preserves β, then the coroot of r is α σ(a) Jtr for some α∈F. Thus the matrix of r is I - α Jtrσ(a)tr a.

SymplecticTransvection(a, alpha) : ModTupRngElt, FldElt -> AlgMatElt
The symplectic transvection with root a and multiplier α with respect to the form attached to the parent of a. If the form is not alternating a runtime error is generated.

If β is a non-degenerate alternating form preserved by a pseudo-reflection r, then the dimension of V is even and r must be a transvection. If a is a root of r, the coroot is α aJtr and the matrix of r is I - α J atr a, for some α≠0 in F.

UnitaryTransvection(a, alpha) : ModTupRngElt, FldElt -> AlgMatElt
The unitary transvection with root a and multiplier α with respect to the hermitian form attached to the parent of a.

The matrix of the unitary transvection is I - α J bar atr a, where a is isotropic and the trace of α is 0; that is, a J bar atr = 0 and α + barα = 0.

A runtime error is generated if the form is not hermitian, if a is not isotropic, or if the trace of α is not 0.

UnitaryReflection(a, zeta) : ModTupRngElt, FldElt -> AlgMatElt
The unitary reflection with root a and determinant ζ, where ζ is a root of unity. The reflection preserves the hermitian form attached to the ambient space of a and sends a to ζ a.

In the case of a unitary reflection r with matrix I - α Jtrσ(a)tr a, the root a must be non-isotropic and ar = ζ a, where ζ is a root of unity. Therefore, α = (1 - ζ)/aJ bar atr.

The vector av = barα a is the coroot of a and the definition of r becomes

v r = v - β(v, av)a.

OrthogonalReflection(a) : ModTupFldElt -> AlgMatElt
The reflection determined by a non-singular vector a of a quadratic space.

A quadratic space is a vector space V equipped with a quadratic form Q (see Chapter CLIFFORD ALGEBRAS for more details). The polar form of Q is the symmetric bilinear form β(u, v) = Q(u + v) - Q(u) - Q(v). Thus β(v, v) = 2Q(v) and therefore, if the characteristic of F is not two, Q is uniquely determined by β.

If a is non-singular (that is, Q(a) ≠0), the formula

vr = v - Q(a) - 1β(v, a)a

defines a pseudo-reflection. If the characteristic of F is 2, this is a transvection; in all other cases it is a reflection. However, in characteristic 2 there is a certain ambivalence in the literature and the pseudo-reflections just defined are often called reflections.

The coroot of a is av = Q(a) - 1a. If the characteristic of F is not two, then av = 2a/β(a, a) and this coincides with the usual notion of coroot, as found in [Hum90], for example. In particular, if β(u, v) is the standard inner product (u, v) = uvtr, then the inner product and the pairing between V and its dual are essentially the same and the concepts of coroot and coroot coincide.

Example GrpRfl_unitary-transvection (H106E4)

We create an hermitian space by attaching an hermitian form J to a vector space V over a field with complex conjugation. The vector a = (1, 0, 0, 0) is isotropic with respect to this form and therefore we can use it to create a unitary transvection.
> K<i> := CyclotomicField( 4 );
> sigma := hom< K -> K | x :-> ComplexConjugate(x) >;
> J := Matrix(4,4,[K|0,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]);
> V := UnitarySpace(J,sigma);
> a := V![1,0,0,0];
> t := UnitaryTransvection(a,i);
> t;
[ 1  0  0  0]
[ 0  1  0  0]
[ 0  0  1  0]
[-i  0  0  1]

Continuing the previous example we note that b = (1, 1, 1, 1) is non-isotropic and we create a unitary reflection of order 4 with b as root.

> b := V![1,1,1,1];
> InnerProduct(b,b);
4
> r := UnitaryReflection(b,i);
> r, Eigenvalues(r);
[1/4*(i + 3) 1/4*(i - 1) 1/4*(i - 1) 1/4*(i - 1)]
[1/4*(i - 1) 1/4*(i + 3) 1/4*(i - 1) 1/4*(i - 1)]
[1/4*(i - 1) 1/4*(i - 1) 1/4*(i + 3) 1/4*(i - 1)]
[1/4*(i - 1) 1/4*(i - 1) 1/4*(i - 1) 1/4*(i + 3)]
{
    <i, 1>,
    <1, 3>
}
V2.28, 13 July 2023