File format for finitely presented groups in the STLP system R. A. Parker and P. E. Holmes 01.09.07 Version 3.1 ----------xxxxxxxxxx----------xxxxxxxxxx----------xxxxxxxxxx----------xx A finitely presented group file shall consist of a sequence of integers separated by whitespace. Hence spaces and newlines can appear anywhere within the file. The file shall consist of a sequence of groups. The information for each group is divided into "blimps". Each blimp contains a specific piece of information and has a blimp type, which is a positive integer. For each blimp, the first number is the blimp type, and the second is the number of integers in the blimp, not counting the type or the length. The blimps shall be in increasing order of type, and no blimp type shall be present more than once. Blimps 0, 1 and 2 are essential. Every file of this format must contain Blimp 0 at the end, and every group in the file must have Blimps 1 and 2 and 999. The other blimps will be essential for some of the programs and not others, and can be created, updated, copied or deleted by the programs. We use two presentations for each group. These are the "external" presentation and the "internal" one. The external presentation is the one that is given by the user, for example giving the group as a 2,3-group, while the internal presentation is the one that is used by the programs. Both presentations must give isomorphic groups. None of the programs in the main group analysis suite shall change blimps 1 or 2. The maps between the two groups are given in blimps 4 and 5. Let f4 and f5 be the two maps. Then f4.f5 must take each internal generator to a word in the interal generators that is equal modulo the relators in blimp 6 (basic relators) and f5.f4 must take each external generator to a word that is equal modulo the relators in blimp 2 (external presentation). Here are the descriptions of each blimp: ----------xxxxxxxxxx----------xxxxxxxxxx----------xxxxxxxxxx----------xx 0 - This is the "end of file" blimp. It must follow the last group in the file. Hence the first integer after the start of the file, or after the 999 blimp of a group is either 0 (no more groups) or 1 (name of next group). ----------xxxxxxxxxx----------xxxxxxxxxx----------xxxxxxxxxx----------xx 1 - This blimp contains the "name" of the group, to be used by programs to indicate which group this is. The first integer is a globally significant integer to indicate what sort of group this is. Further information for such types of groups may also be stored in the name. The name is a sequence of integers. ----------xxxxxxxxxx----------xxxxxxxxxx----------xxxxxxxxxx----------xx 2 - This blimp holds the external presentation. After the type and the length, the next integer is the number ng of generators and then the number nr of relators. This is followed by nr relators each terminated by a zero. Each relator is therefore given as a sequence of integers from 1 to ng or from -1 down to -ng, where each integer i is identified with the i-th generator, and a negative integer -i identified with the inverse of generator i. The sequence is read as a word in those generators. ----------xxxxxxxxxx----------xxxxxxxxxx----------xxxxxxxxxx----------xx 3 - This blimp holds the internal generators and the inverse table. The first integer shall be the number of generators g. The set of generators shall be closed under inversion, and the next g integers shall be the inverse of each generator. The generators shall be numbered from 1 to g. ----------xxxxxxxxxx----------xxxxxxxxxx----------xxxxxxxxxx----------xx 4 - The map from the generating set of the internal presentation into the group generated by the external generators. This blimp consists of words of integers separated by zeroes. These words give each internal generator in turn as a word in the external generators and their inverses, where a negative integer -i represents the inverse of the external generator i. ----------xxxxxxxxxx----------xxxxxxxxxx----------xxxxxxxxxx----------xx 5 - As blimp 4, but the map goes in the opposite direction, from the external generators to the internal ones. The ng words give the external generators as words in the internal ones, and in this case negative generators are not allowed since the internal generators are closed under inversion. ----------xxxxxxxxxx----------xxxxxxxxxx----------xxxxxxxxxx----------xx 6 - This blimp gives the basic relators. These are in terms of the internal generators. The first integer in this blimp shall be the number of (basic) relators r. There then follows r strings of generators each terminated by 0, being the basic relators as words in the internal generators. All generators are positive. ----------xxxxxxxxxx----------xxxxxxxxxx----------xxxxxxxxxx----------xx 100 - This blimp gives the "project". It is (famous last words) a temporary blimp to enable work to start on the second batch or programs to do the triangle project. It consists of four words. The first must be 1 to indicate a triangle group. The remaining 3 words are then the smallest triangle relator whose inclusion in the external presentation has not been decided. ----------xxxxxxxxxx----------xxxxxxxxxx----------xxxxxxxxxx----------xx 999 - This blimp is the last blimp of a group. It has no length, and is immediately followed by a 1 (the name of the next group) or a 0 to indicate that there are no more groups in the file ----------xxxxxxxxxx----------xxxxxxxxxx----------xxxxxxxxxx----------xx