^ From:

> ^ Subject:

Hello,

I am learning to use GAP for about a week now, and I have some questions and

suggestions. I haven't had the time to read the forum9??.txts entirely yet, so

there might be some 'old hat' among them.

In no particular order:

1. Given an FpGroup, ie FreeGroup(2)/[a^3,b^2,a*b*a^-1*b^-1] (cyclic group of

order 6). You can get the elements of this group by using Elements, and now

I want to compute (a^2*b) * (a). You get a^2*b*a, which is NOT in the list

of elements. It seems to me that GAP has a way of reducing this expression

to one which is in the list. How do you do this ?

The reason I want to do this is to make a data structure containing the

*entire* multiplication table for a (hopefully small) group, no matter

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

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...

2. It would be nice to be able to get some input from the user while executing

a function. As an example, try

PrintArray(RecFields(GroupOps));

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:

waitKey:=function()

Print("Press Ctrl-D to continue\n"); ## ctrl-d works for MS-DOS

Read(*stdin*);

end;I don't think this is particularly elegant or easy. To make GAP programs

interactive, ie. accept numbers or strings as input you would have to do

something likereadInt:=function() local input; while not IsBound(input) do Print("Enter 'input:=' <the number you want> ';' + ctrl-d"); Read(*stdin*); if not IsInt(input) then Unbind(input); fi; od; return input; end; I haven't tried this yet, but it's the only solution I can think of.

3. 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 !

For most people this is not a problem, but for me it is, running GAP on an

MS-DOS machine with 4M (ie 3M extended space): after the group libraries

have loaded, I have about 300K free space left (and swapping to disk is

SSSLLLLLOOOOOWWWW, goodbye GAPSTONES!).

4. Have the algorithms and their implementations been proved correct by some

kind of formal method? If not you might just try something that's so

complicated you can't verify the result by hand (Imagine someone writing

a thesis using incorrect results obtained by GAP...). I guess most of the

abstract algorithms have been proved correct, but I wonder about the

implementation.

Well, that's about it, I hope my questions aren't too stupid for you to ponder

over. I want to add that GAP looks great, most features I don't even know

(I'm just a third-year mathematics student at Utrecht University ).

Yours sincerely,

Jan de Wit

> < [top]