13namespace layer3_group_actions {
19 int *Elt,
int verbose_level)
21 int f_v = (verbose_level >= 1);
23 int *Elt1, *Elt2, *Elt3, *Elt4, *Elt5, *Elt6;
27 cout <<
"choose_random_generator_derived_group" << endl;
41 A->
mult(Elt3, Elt4, Elt5);
42 A->
mult(Elt1, Elt2, Elt6);
43 A->
mult(Elt5, Elt6, Elt);
54 void (*choose_random_generator_for_subgroup)(
sims *G,
55 int *Elt,
int verbose_level),
58 int f_v = (verbose_level >= 1);
59 int f_vv = (verbose_level >= 2);
60 int f_vvv = (verbose_level >= 3);
63 int drop_out_level, image, cnt, f_added;
69 cout <<
"sims::build_up_subgroup_random_process" << endl;
74 cout <<
"sims::build_up_subgroup_random_process(): "
75 "old group order is " << G_order << endl;
76 cout <<
"the group is in action " << G->
A->
label
77 <<
" with base_length = " << G->
A->
base_len()
78 <<
" and degree " << G->
A->
degree << endl;
79 cout <<
"the image action has base_length = " << GA->
base_len()
80 <<
" and degree " << GA->
degree << endl;
81 cout <<
"current action " << GA->
label << endl;
82 cout <<
"current group order = " << go << endl;
88 cout <<
"sims::build_up_subgroup_random_process iteration " << cnt << endl;
92 cout <<
"sims::build_up_group_random_process "
93 "cnt > 1000, something seems to be wrong" << endl;
102 if ((cnt % 2) == 0) {
104 cout <<
"sims::build_up_subgroup_random_process choosing random schreier generator" << endl;
109 cout <<
"sims::build_up_subgroup_random_process random element chosen:" << endl;
114 else if ((cnt % 2) == 1){
116 cout <<
"sims::build_up_subgroup_random_process choosing random element in the "
117 "group by which we extend" << endl;
119 (*choose_random_generator_for_subgroup)(G,
120 GA->
Elt1, verbose_level - 1);
122 cout <<
"sims::build_up_subgroup_random_process random element chosen" << endl;
132 cout <<
"sims::build_up_subgroup_random_process element strips through" << endl;
134 cout <<
"sims::build_up_subgroup_random_process residue = " << endl;
145 cout <<
"sims::build_up_subgroup_random_process element needs to be inserted at level = "
146 << drop_out_level <<
" with image "
158 if ((f_v && f_added) || f_vv) {
159 cout <<
"sims::build_up_subgroup_random_process new group order is " << go <<
" : ";
165 cout <<
"sims::build_up_subgroup_random_process "
166 "finished: found a group of order " << go << endl;
a class to represent arbitrary precision integers
a permutation group in a fixed action.
void element_print(void *elt, std::ostream &ost)
void mult(void *a, void *b, void *ab)
void invert(void *a, void *av)
a permutation group represented via a stabilizer chain
void random_element(int *elt, int verbose_level)
int test_if_subgroup(sims *old_G, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void build_up_subgroup_random_process(sims *G, void(*choose_random_generator_for_subgroup)(sims *G, int *Elt, int verbose_level), int verbose_level)
int closure_group(int nb_times, int verbose_level)
void add_generator_at_level(int *elt, int lvl, int verbose_level)
void random_schreier_generator(int *Elt, int verbose_level)
int strip(int *elt, int *residue, int &drop_out_level, int &image, int verbose_level)
void print_transversal_lengths()
void choose_random_generator_derived_group(sims *G, int *Elt, int verbose_level)
the orbiter library for the classification of combinatorial objects