> < ^ Date: Fri, 01 Mar 2002 18:15:35 +0100
> < ^ From: Thomas Breuer <Thomas.Breuer@Math.RWTH-Aachen.DE >
< ^ Subject: Re: Question on "Extending the Character Table Library"

Dear GAP Forum,

Thomas Haeberlen wrote

I have a problem with the Gap Character Table Library: according to the
Reference Manual, I should be able to save a computed character table to a
file(via "PrintToLib" and re-define it in the next session (via
"NotifyCharacterTable"). However this does not work for me.
Here is an example of what I would like to do:

g := ProjectiveSpecialLinearGroup( 4,3 );;
ct := CharacterTable( g );;
Display( ct);

The character table is then displayed after some time... a rather long time,
so I try a

PrintToLib( "psl_4_3" , ct );

which creates a file called "psl_4_3.tbl" in my home directory. Now I
thought that after doing a

> NotifyCharacterTable( "foo" , "path-from-tbl-dir-to-home-dir/psl_4_3" ,

I would get the character table back by saying

foo := CharacterTable( "foo" );

but instead I get

#W revision entry missing in "/path-from-tbl-dir-to-home-dir/psl_4_3.tbl"

I must be missing something... but what?

The problem is that the table stored in the file `psl_4_3.tbl' does not
know about the name one wants to use later;
the table in the file will have an identifier of the kind `"CT1"', `"CT2"'
etc., which identifies the table within a GAP session.

If one would use this identifier as the first argument in the call of
`NotifyCharacterTable' then the example would work.

However, this is probably not the name one prefers for the table,
and if one constructs tables in different GAP sessions then these names
will not be unique.
So a better solution is to exchange the table identifier in the file for
the name one wants to use in `NotifyCharacterTable'.
(This is also sketched in the manual section for `NotifyCharacterTable'.)

(If one needs a more programmatic approach for producing files of library
tables, it might be easier to exchange the identifier within the GAP
session before printing the tables to the files.
For that, one could use for example `ResetFilterObj( ct, "Identifier" )'
followed by `SetIdentifier( ct, "foo" )';
but this is somewhat dangerous, one should use it only if one does not
access the table object in the current GAP session.)

I hope this helps.

Kind regards,
Thomas Breuer

The table of the group PSL(4,3) is of course available
in the GAP character table library, as `CharacterTable( "L4(3)" )'.

Miles-Receive-Header: reply

> < [top]