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.
The reflection with the given root and coroot.
Returns true if, and only if, R is a reflection. If R is a reflection, a root and coroot is also returned.
> V := VectorSpace( Rationals(), 2 ); > A := Reflection( V![1,0], V![1,0] ); > A; [-1 0] [ 0 1] > IsReflection( A ); true (1 0) (2 0)
The reflection with the given root, coroot and order.
Returns true if, and only if, R is a pseudoreflection. If R is a pseudoreflection, a root, coroot and order is also returned.
> 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)