IsPpdElement( F, m, d, s, c)
For natural numbers b and e greater than 1 a primitive prime divisor of b^e - 1 is a prime dividing b^e-1 but not dividing b^i-1 for any 1 le i < e. If r is a primitive prime divisor of b^e-1 then r = ce+1 for some positive integer c and in particular r ge e+1. If either r ge e+2, or r = e+1 and r^2 divides b^e-1 then r is called a large primitive prime divisor of b^e-1.
Let e be a positive integer greater than 1, such that d/2 < e le d. Let p be a prime and q = p^a. An element g of GL(d,q) whose order is divisible a primitive prime divisor of q^{e}-1 is a ppd-element, or ppd(d, q; e)-element. An element g of GL(d,q) whose order is divisible by a primitive prime divisor of p^{ae}-1 is a basic ppd-element, or basic ppd(d, q; e)-element. An element g of GL(d,q) is called a large ppd-element if there exists a large primitive prime divisor r of q^e-1 such that the order of g is divisible by r, if r ge e+2, or by r^2, if r = e+1.
The function IsPpdElement
takes as input a field F, and a parameter
m, and integers d, s and c, where s^c is the size q =p^a of
the field F. For the recognition algorithm, (s,c) is either (q,
1) or (p,a). The parameter m is either an element of GL(d,F) or
a characteristic polynomial of such an element. If m is not (the
characteristic polynomial of) a ppd( dc, s; ec)-element for
some e such that d/2 < e le d then IsPpdElement
returns false
.
Otherwise it returns a list of length 2, whose first entry is the integer
e and whose second entry is true
if m is (the characteristic
polynomial of) a large ppd( dc, s; ec)-element or false
if it
is not large. When c is 1 and s is q this function decides whether
m is (the characteristic polynomial of) a ppd( d, q; e)-element
whereas when s is the characteristic p of F and c is such that
a then it decides whether m is (the characteristic polynomial of) a
basic ppd( d, q; e)-element.
gap> G := GL (6, 3);; gap> g := [ [ 2, 2, 2, 2, 0, 2 ], > [ 1, 0, 0, 0, 0, 1 ], > [ 2, 2, 1, 0, 0, 0 ], > [ 2, 0, 2, 0, 2, 0 ], > [ 1, 2, 0, 1, 1, 0 ], > [ 1, 2, 2, 1, 2, 0 ] ] * Z(3)^0;; gap> IsPpdElement( G.field, g, 6, 3, 1); [ 5, true ] gap> Collected( Factors( 3^5 - 1) ); [ [ 2, 1 ], [ 11, 2 ] ] gap> Order (G, g) mod 11; 0
The algorithm is described in [2] and [11].
GAP 3.4.4