# 67.50 IsPpdElement

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
April 1997