/* Copyright (C) 1992 by Jeffrey S. Leon. This software may be used freely for educational and research purposes. Any other use requires permission
from the author. */
/* Main program for generate command, which may be used to find a base and strong generating set for a permutation group using the random Schreier and/or Schreier-Todd-Coxeter-Sims methods. The format of the command is:
where the meaning of the parameters is as follows:
<permGroup>: the permutation group G for which a base and strong generating set is to be found.
<generatedPermGroup>: the same permutation group G with a base and strong generating set, depending on options, possibly a strong presentation.
The general options are as follows:
-nr Omit random-Schreier phase.
-ns Omit Schreier-Todd-Coxeter-Sims phase (automatically omitted if order is known in advance and random-Schreier phases generates full order, unless the -p option is given.
-p Find a presentation.
-q Don't write status information to standard output.
-in:<group> Group G is contained in <group>. Only base of <group> is used; <group> need not be valid as long as its base , base size, and degree fields are filled in correctly.
-overwrite Overwrite, rather than append to, the output file.
-i Image format for output group.
-c Cycle format for output group.
-gn:<name>
Options applicable specifically to the random-Schreier phase are:
-s:<integer> Seed for random number generator.
-tr:<integer> Random Schreier phase terminates after this many consecutive "successes" (quasi-random elements that are factorable).
-ti:<integer> This many consecutive non-involutory generators will be rejected in an attempt to choose involutory generators.
-th:k This many consecutive generators will be rejected in an attempt to choose a generator of order 3 (or less).
-nro Suppress normal attempt to reduce generator order by replacing generators with powers.
-wi:w,x Here w and x are integers with w <= x. The word length increment will be random between w and x.
-z Redundant strong generators will be removed after the algorithm completes..
Options applicable to the STCS phase are:
-go:m Automatically include the order of each generator as a relator when the generator order does not exceed m (default 15).
-po:m Automatically include the order of each product of generators as a relator when the product order does not exceed m (default 5).
-x2:m If the STCS phase terminates with more than m generators (excluding inverses), redundant generators are removed.
-pr:a,b,c,d,e Determines priority for relator selection. The priority of a relator r is a - b * (len+symLen)/2. Relators are selected if their priority exceeds c + d * chosen - e * omitted, where chosen represents the number of relators chosen at this level and omitted represents the number not chosen.
-sh:i1,k1,i2.. Specifies which cyclic shifts of relators will be used in the Felsch enumeration. Specifies that an i1 position shift will be used if the relator priority exceeds the selection priority by at least k1, etc. By default, all shifts are always used. -x:k Specifies use of up to k extra cosets during enumeration (default 0). When k > 0, a different procedure is used to check point stabilizers.
-y:m The number of extra cosets used will be m/100 * degree (rounded up), but in no case more than
k, as above (default 10). */
/* Provide usage info if no arguments are specified. */ if ( argc == 1 ) {
printf( "\nUsage: generate [options] originalPermGroup permGroupWithBaseSGS\n");
freeIntArrayBaseSize( pointList);
freeIntArrayBaseSize( knownBase); return 0;
}
/* Check for limits option. If present in position 1 give limits and
return. */ if ( strcmp( argv[1], "-l") == 0 || strcmp( argv[1], "-L") == 0 ) {
showLimits();
freeIntArrayBaseSize( pointList);
freeIntArrayBaseSize( knownBase); return 0;
}
/* Check for verify option. If present, perform verify (Note verifyOptions
terminates program). */ if ( strcmp( argv[1], "-v") == 0 || strcmp( argv[1], "-V") == 0 )
verifyOptions();
/* Check for 1 or 2 parameters following options. */ for ( optionCountPlus1 = 1 ; optionCountPlus1 <= argc-1 &&
argv[optionCountPlus1][0] == '-' ; ++optionCountPlus1 )
;
if ( argc - optionCountPlus1 < 1 || argc - optionCountPlus1 > 2 ) {
printf( "\n\nError: 1 or 2 non-option parameters are required.\n"); exit(ERROR_RETURN_CODE);
}
/* Set initialize option for STCS. */
sOptions.initialize = omitRandomSchreierOption;
/* Set default generator name prefix, if not specified. */ if ( options.genNamePrefix[0] == ' ' )
strncpy( options.genNamePrefix, genGroupLibraryName, 4);
/* Read in input group, and base for containing group, if requested. */
G = readPermGroup( groupFileName, groupLibraryName, 0, ""); if ( containingGroupFileName[0] ) {
containingGroup = readPermGroup( containingGroupFileName,
containingGroupLibraryName, G->degree, ""); for ( i = 1 ; i <= containingGroup->baseSize ; ++i )
knownBase[i] = containingGroup->base[i];
knownBase[containingGroup->baseSize+1] = 0;
deletePermGroup( containingGroup);
}
startTime = CPU_TIME();
/* Apply random Schreier algorithm. */ if ( !omitRandomSchreierOption ) { /* SETUP OPTIONS STRING */
randomSchreier( G, rOptions); if ( removeRedunStrGens )
removeRedunSGens( G, 1);
}
randSchrTime = CPU_TIME();
optGroupTime = CPU_TIME();
/* Apply Schreier-Todd-Coxeter-Sims algorithm, if appropriate. */ if ( !omitStcsOption /* FIX THIS */ )
schreierToddCoxeterSims( G, knownBase);
stcsTime = CPU_TIME();
/* Write out the generated group. */
sprintf( comment, "The group %s, base and strong generating set constucted.",
G->name); if ( cycleFormatFlag )
G->printFormat = cycleFormat; if ( imageFormatFlag )
G->printFormat = imageFormat; if ( genGroupObjectName[0] )
strcpy( G->name, genGroupObjectName); if ( argc - optionCountPlus1 == 1 && !noBackupFlag ) if ( rename(groupFileName,"oldgroup") == -1 )
ERROR1s( "main (generate command)", "Original group ", groupFileName, " could not be renamed as oldgroup.")
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.