> < ^ Date: Wed, 01 Sep 1993 12:41:48 +0200
> < ^ From: Frank Celler <frank.celler@math.rwth-aachen.de >
> ^ Subject: Invariants
Rejected message sent to gap-forum@samson.math.rwth-aachen.de
-------------------------------------------------------------------------------
Date: Tue, 24 Aug 1993 18:58:43 +0200
Comment: GAP Forum
Originator: gap-forum@samson.math.rwth-aachen.de
Errors-To: martin@samson
Reply-To: <gap-forum@samson>
Sender: gap-forum@samson
Version: 5.31 -- Copyright (c) 1991, Anastasios Kotsikonas
From: gap-forum@samson
To: martin@samson
Subject: Invariants

Having published a paper last year in Communications in Algebra
in which I computed the ring of invarinats of the simple group
of order 660 in a 5 dimensional complex representation, I
can point to some experience with such computations.

I am not aware of any package for doing them and if there was, I would
certainly want to use it. Based on my experience with the case I published
and some others, I have some ideas on how to attack such problems and
what kinds of software tools would be useful. Unfortunately, I am not
a very good programmer and I would need to work with someone who
is.

Actually, I did work with someone on this a couple of years ago, but
since I can't pay anyone to do this work and since programmers have a
tendency to be busy for long periods of time with things that they do get
paid to do, we didn't get very far. In addition, since the programmer in
question has asserted some of his rights over the code, I do not feel free
to distribute it, although I do tinker with it a little. I would actually
prefer to bury the package as it exists at the moment and start from scratch to
produce something that I can legally distribute freely to all who want to
use it or who want to help develop it further.

In addition, the programmer in question would have to know more mathematics
than most programmers that I have seen know. One of the reasons for the
painfully slow pace of development is that I could not take any
knowledge for granted on the part of the programmer and had to explain
even fairly routine computations in minute detail with examples that
I had to work out by hand. As the computations got more complicated, this
was more and more of a burden on me. It was also a burden that the
programmer had no idea whether the code was doing what it was supposed
to do at any level beyond conformity with the examples I had worked out by
hand.

I should add that I may not be as feeble a programmer as I thought.
The evidence is that after my collaborator left the project, I went
through the code he had written minutely and wrote detailed
comentary on exactly what was happening at each moment. In this way,
I found and corrected some of the outstanding bugs that caused performance
to deviate from the description of the manual. In the process, I learned a
certain amount about REDUCE symbolic mode programming conventions
and the resources lying around in the REDUCE source code. But I still have
a long way to go.

GAP has attractive features that lend itself to such computations,
namely the facility for working with groups, character tables,
representations, etc. But it is weak in more traditional computer
algebra such as polynomial manipulation. What is needed is an interface
between GAP and other packages.

If I am to be involved in a project like this, I would have to have
access to any computer algebra packages that would be used in
it. At the moment, the only computer algebra package I have
access to that is close to being adequate for my needs is REDUCE.
However, I am often frustrated by what I perceive as a "proprietary
mentality" when I try to learn about its inner workings. I think it
is something like the following at work: whereas I think of the programmer
as someone who is helping me develop a package and educating me an all that I
want to know in order to understand the final product (in particular,
that I am in charge of it and need to know minutely what I am in charge of),
the corporate mentality instead views me as the individual whose
job it is to provide the programmer with algorithms in order to produce
proprietary software which it ultimately doesn't matter whether I
understand. In short, it is the point of view that I am part of a work
group in which my "need to know" is sharply curtailed by my perceived
function. Perhaps that is just what life is like when one works with
commercial packages. For that reason, I would much prefer to work with
a public domain algebra package. But a sufficiently powerful such package
doesn't seem to exist yet.

In fairness to the REDUCE people, I feel that they do a much better job of
documenting the inner workings of their product than the MACSYMA people
do. In both packages, there is a computer algebra package running over
a LISP substrate. In MACSYMA that substrate and the interface to it are
not documented while in REDUCE they are somewhat documented. Also,
there are now books available that discuss symbolic mode programming in
REDUCE. In addition, REDUCE comes with source code for REDUCE over
the LISP substrate and one can pay an extra $500 to get the source code
for the underlying LISP too. At any rate, I am more familiar with REDUCE
and although I am willing to learn other pacakges, my learning curve
would have to be taken into account, including the millions of naive and
apparently frivolous questions that I would have about it the
software and its inner workings, not to mention my insistence on having
access to complete source code. If one is willing to put up with that
and with my insistence of distributing the resulting code freely,
read on.

Actually, on second thought, I am probably making impossible demands
by insisting that in addition to having the program I also have a certain
working relationship to the programmers. So I will do the following:
(1) When I have a moment, I will make a revised copy of the manual
available by anonymous ftp. It will be typeset in TeX (it already is).
Anyone is then free to read the descriptions of the functions contained
therein and write their own functions that duplicate the described
behavior. If you do, please let me know. If it is in a package
I don't have access to, I would appreciate it if you find a way to
provide me access to the necessary packages.
(2) The manual only describes the work as far as we got with it. There are
lot more functions that need to be included which are not described in the
manual. I will be happy to collaborate with people in the development of
those functions.

I would like to add that since I have been unemployed for 7 years and
have no income, I would not object if someone found a way to
compensate me for my efforts. However, that is not a condition for
the cooperation I have offered above.

Allan Adler
ara@altdorf.ai.mit.edu


> < [top]