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

Constructing Reflections and Pseudoreflections

Let X and Y be vector spaces over the field k with bilinear pairing < , >:X x Y -> k that identifies Y with the dual of X. Take alpha in X and alpha^star in Y such that < alpha, alpha^star >=2. The pseudoreflection in alpha and alpha^star of order m is the linear map s_(alpha, alpha^star, m):X -> X defined by

x s_(alpha, alpha^star, m) = v - frac12(zeta_m - 1) < x, alpha^star >alpha.

where zeta_m= RootOfUnity(m, k). Of course, k must contain a primitive mth root of unity for order m pseudoreflections to exist. We call alpha the root and alpha^star the coroot of the pseudoreflection. Note that lambdaalpha and alpha^star/lambda are also a root and coroot of the same reflection, for every scalar lambda.

When m=2, we call s_(alpha, alpha^star)=s_(alpha, alpha^star, m) a reflection. Note that this agrees with the definition of a reflection given in Chapters ROOT SYSTEMS and ROOT DATA.

In magma, we take X=Y to be a row space, with the bilinear pairing given by the standard inner product < x, y > = xy^T.

Reflection( root, coroot ) : ModTupRngElt, ModTupRngElt -> AlgMatElt
The reflection with the given root and coroot.
IsReflection( R ) : AlgMatElt -> BoolElt, ModTupRngElt, ModTupRngElt
Returns true if, and only if, R is a reflection. If R is a reflection, a root and coroot is also returned.

Example GrpRfl_Reflections (H85E1)

Note that we do not require that the root and coroot are only defined up to a scalar.

> V := VectorSpace( Rationals(), 2 );                                          
> A := Reflection( V![1,0], V![1,0] );
> A;
[-1  0]
[ 0  1]
> IsReflection( A );
true (1 0)
(2 0)

Pseudoreflection(root, coroot, {order}) : ModTupRngElt, ModTupRngElt RngIntElt -> AlgMatElt
The reflection with the given root, coroot and order.
IsPseudoreflection( R ) : AlgMatElt -> BoolElt, ModTupRngElt, ModTupRngElt, RngIntElt
Returns true if, and only if, R is a pseudoreflection. If R is a pseudoreflection, a root, coroot and order is also returned.

Example GrpRfl_Pseudoreflections (H85E2)

> V := VectorSpace( CyclotomicField(7), 2 );
> a := V![1,1];
> A := Pseudoreflection( a, a, 7 );
> A;
[1/2*(zeta_7 + 1) 1/2*(zeta_7 - 1)]
[1/2*(zeta_7 - 1) 1/2*(zeta_7 + 1)]
> IsPseudoreflection( A );
true 7 ( 1 -1)
( 1 -1)


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