/* File cstrbas.c. Contains function constructRBase, which may be used to construct an RRR-base. Also contains function getOptimInfo, which may invoked during RRR-base construction by functions that check
RRR-reducbility. */
/* This function allocates and constructs an RRR-base for a permutation group, and it returns a pointer to the R-base that is constructed. The parameters are as follows:
G: The permutation group (pointer) for which the RRR-base is to be constructed. A base and strong generating set must be known. Note that the base and strong generating set for G will be changed to that in the RRR-base. RRR: A null terminated list of refinement family pointers (zero based). These describe the refinement families that compose the superfamily RRR. isReducible: A null terminated list of functions that check reducibility (zero-based). Specifically, for each i the function *isReducible[i] checks RRR[i]-reducibility. L: A known subgroup (pointer)of the group G_pP that is to be constructed. A base and strong generating set must be known. Optionally, if L = 1, the argument may be NULL. Note that L the base and strong generating set for L will be changed to that the base is AlphaHat (in the RRR-base).
The line numbers referred to below are those in Figure 10 of "Permutation
group algorithms based on Partitions" by J. Leon. */
/* Set tHatWord to a trivial word. */
tHatWord.invWord = malloc( 8 * sizeof(UnsignedS *) );
tHatWord.revWord = malloc( 8 * sizeof(UnsignedS *) );
tHatWord.invWord[0] = tHatWord.revWord[0] = NULL;
/* Here we trim unnecessary strong generators if so requested. */ for ( sGenCount = 0 , gen = G->generator ; gen ;
gen = gen->next )
++sGenCount; if ( sGenCount > options.trimSGenSetToSize )
removeRedunSGens( G, 1);
/* Here we construct the complete orbit structure at the top level. */ for ( m = 0 ; specialRefinement[m] ; ++m )
constructAllOrbitInfo( specialRefinement[m]->leftGroup, 1);
/* Figure 10, lines 12-14. Line 11 is omitted since an explicit
representation of Pi is not maintained; note Pi_i = Psi_{n_{i+1}}.*/
++AAA->ell;
AAA->n_[AAA->ell] = h;
/* Figure 10, lines 15-17. CAUTION: Note that the second and third lines below depend on the numbering of the refinement parameters
in function pointStabRefine. */
refPriPair = isPointStabReducible( &ptStabFamily,
AAA->PsiStack, G, AAA, k[0]+1);
AAA->alphaHat[AAA->ell] = refPriPair.refn.refnParm[0].intParm;
AAA->p_[AAA->ell] = refPriPair.refn.refnParm[1].intParm;
AAA->aAA[h] = refPriPair.refn;
basicCellSize[AAA->ell] =
AAA->PsiStack->cellSize[ refPriPair.refn.refnParm[1].intParm ];
}
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.