> < ^ From:

< ^ Subject:

Dear Jan de Wit,

you wrote:

permutation group - and the FpGroup above. (Yes, this is brute force, and I

should write a program in C for it, but I want to try it using GAP).

Maybe there are other ways of doing this that I'm not aware of yet...

As Derek has explained the complexity of a brute force algorithm is (n-1)!,

so I doubt that even using assembler or a very good C optimizer will help

to speed up the computation by a factor of 15!/11! ~ 30000 to get a

pratical algorithm for groups of size 16 (which is the next "interesting"

size, 13 & 15 being cyclic, 14 being cyclic or dihedral) instead of 12.

what the exact elements are, and start working on that. Then it would be

possible ,for instance, to check isomorphism between CyclicGroup(6) - a

permutation group - and the FpGroup above. (Yes, this is brute force, and I

If you need that isomorphism explicitly then you have to implement Derek's

algorithm, if you only want to know if two groups are isomorphic you can

use 'GroupId' for permutations/ag groups of size less than 101 (this

function will *not* work for fp groups, so you have to convert a fp group

first).

gap> f := FreeGroup(2); Group( f.1, f.2 ) gap> g := f / [ f.1^4, f.2^2, f.1^f.2/f.1^-1 ]; Group( f.1, f.2 ) gap> p := OperationCosetsFpGroup( g, TrivialSubgroup(g) ); Group( (1,2,4,7)(3,6,8,5), (1,3)(2,5)(4,8)(6,7) ) gap> GroupId(p); rec( catalogue := [ 8, 4 ], names := [ "D8" ], 3primes := [ "A", 2 ], size := 8, pGroupId := 3 )

The entry 'catalogue' identifies the groups of size less than 101 and two

such groups are isomorphic if and only if their 'catalogue' numbers are

equal. The other entries in this record ('3primes' and 'pGroupId') refer

to other classifications, please see the manual for details.

Now that wasn't too easy to follow, wasn't it?

To solve this problem I wrote a function which loops through the list,

counts the number of lines printed, and at regular intervals calls a func-

tion waitKey, defined like this:

Yes, the GAP output is sometimes hard to read or too verbose. GAP 4.1 will

address this problem by being brief per default and might offer a pager if

asked to be verbose.

Is it possible to load the libraries more selectively, so that when I type

G:=Group((1,2),(1,2,3)); not nearly all the libraries are loaded?

I mean, I want to work with permutation groups, not with Cohomology- or

SagGroups !

Again, GAP 4.1 will solve this problem by loading only library files which

are needed, but the current version of GAP indeed reads quite a lot of

stuff which is not necessary to define, say, <(1,2)>.

You can remove the line 'ReadLib("ratclass")' in "permgrp.g", this will

avoid loading the solvable group functions. Removing this line however

will break the functions 'RationalClasses', 'ConjugacyClasses' because

'RationalClasses' computes the classes by taking the Sylow subgroups,

converting them into ag groups and using ag group methods there.

Unfortunately, GAP is at the moment quite generous when reading in files,

so if you define a permutation group, GAP reads in every file you might

need. Even if you are never going to use 'RationalClasses' (or functions

which rely on the classes) it will fetch the methods used to compute

classes in permutation groups in advance.

best wishes

Frank

> < [top]