static Logical select_group(int *min_step, int *max_step, int order_bound, struct pga_vars *pga, struct pcp_vars *pcp);
/* prepare to construct, partially or completely, some or all of the
immediate descendants of group group_nmr stored on start_file */
int construct(int call_depth, struct pga_vars *flag, int option,
FILE *output_file,
FILE *start_file, int k, int order_bound, int group_nmr, struct pga_vars *pga, struct pcp_vars *pcp)
{ int ***auts; char *name; registerint step; int min_step, max_step; int nmr_of_descendants = 0; int nmr_of_capables = 0; int nmr_of_covers; int x_dim, y_dim;
FILE *tmp_file;
Logical change;
if (option == ITERATION) {
restore_pcp(start_file, pcp);
auts = restore_pga(start_file, pga, pcp); /* enforce any law on the p-covering group of starting group */ if (call_depth == 1)
enforce_laws(flag, pga, pcp);
start_group(&tmp_file, auts, pga, pcp);
} else {
auts = restore_group(TRUE, start_file, group_nmr, pga, pcp);
RESET(start_file);
}
/* save dimension of autormorphism array for later call to free */
x_dim = pga->m;
y_dim = pcp->lastg;
if (nmr_of_descendants != 0) {
printf("# of immediate descendants of order %d^%d is %d\n",
pcp->p,
y[pcp->clend + pcp->cc - 1] + pga->step_size,
nmr_of_descendants); if (nmr_of_capables != 0)
printf("# of capable immediate descendants is %d\n", nmr_of_capables);
} elseif (nmr_of_covers != 0)
printf("# of reduced %d-covering groups is %d\n", pcp->p, nmr_of_covers);
}
/* print out basic information about the starting group */