[Next][Prev] [Right] [Left] [Up] [Index] [Root]

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.

Subsections
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
Returns true if G is a group generated by reflections.

Example GrpRfl_pseudoreflection (H99E1)

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 (H99E2)

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);
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 (H99E3)

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.

enddes

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 uniqely 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 (H99E4)

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>
}

 [Next][Prev] [Right] [Left] [Up] [Index] [Root]

Version: V2.19 of Wed Apr 24 15:09:57 EST 2013