> < ^ From:

> < ^ Subject:

Dear Gap Forum,

Jacob Hirbawi asked about a way to construct the first 1000 elements

of an infinite matrix group.

It is true, that the 'Random' function will not work for infinite

matrix groups, because 'Random' (and many other matrix group

functions) try to construct an isomorphic permutation group. However,

if you have a matrix of finite order you can asked for its order. But

if your matrix has a very large orbit, this function will run for

ages, because it constructs orbits in order to find the order of the

matrix.

In order to construct elements of an infinite matrix group, one could

form random products in the generators. I have found to following

heuristic useful for matrix groups over finite fields: Create a

product of 100 * Length(G.generators) randomly chosen generators as

seed, and multiply this seed from the left or right (again randomly

chosen) with a random generator for the next element.

This random function is used in a program which will try to decide

whether a given group over a finite field contains the SL or not. If

your group is called G the following program will generate 1000

Elements of G:

E := []; while Length(E) < 1000 do AddSet( E, RecSL.Random(G,0) ); od;

As this function 'RecSL.Random' does not invert the generators, you

might want to add the inverses of the generators of your matrix group

to the generators of G. As you are (maybe) not interested in (pseudo)

random elements, you should skip the seed generating process by starting

with the identity as seed element:

G := Group( m1, ..., mn );

G.randomSeed := G.identity;

best wishes

Frank Celler

> < [top]