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.
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.
The matrix of the pseudo-reflection with root a and coroot b.
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.
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.
Returns true if r is the matrix of a pseudo-reflection, in which case a root and a coroot are returned as well.
Returns true if r is the matrix of a transvection, in which case a root and a coroot are returned as well.
Returns true if r is the matrix of a reflection, in which case a root and a coroot are returned as well.
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).
> 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
> 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]
> 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
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.
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.
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.
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.
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.
> 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> }