20namespace layer3_group_actions {
27 int f_v = (verbose_level >= 1);
28 int f_vv = (verbose_level >= 2);
32 cout <<
"sims::compute_base_orbits" << endl;
35 cout <<
"sims::compute_base_orbits "
38 for (i =
A->
base_len() - 1; i >= 0; i--) {
40 cout <<
"sims::compute_base_orbits "
41 "level " << i << endl;
45 cout <<
"sims::compute_base_orbits level " << i
46 <<
" base point " <<
A->
base_i(i)
47 <<
" orbit length " << orbit_len[i] << endl;
51 cout <<
"sims::compute_base_orbits done, orbit_len=";
60 int f_v = (verbose_level >= 1);
65 cout <<
"sims::compute_base_orbits_known_length: ";
68 cout <<
"verbose_level=" << verbose_level << endl;
70 for (i =
A->
base_len() - 1; i >= 0; i--) {
72 cout <<
"sims::compute_base_orbits_known_length "
73 "computing level " << i << endl;
77 cout <<
"sims::compute_base_orbits_known_length "
79 <<
" base point " <<
A->
base_i(i)
80 <<
" orbit length " << orbit_len[i]
81 <<
" has been computed" << endl;
83 if (orbit_len[i] != tl[i]) {
84 cout <<
"sims::compute_base_orbits_known_length "
85 "orbit_len[i] != tl[i]" << endl;
86 cout <<
"orbit_len[i]=" << orbit_len[i] << endl;
87 cout <<
"tl[i]=" << tl[i] << endl;
93 cout <<
"sims::compute_base_orbits_known_length done" << endl;
100 int f_v = (verbose_level >= 1);
102 int f_vvv = (verbose_level >= 3);
103 int i, cur, cur_pt, total, total0;
104 int next_pt, next_pt_loc, gen_idx, nbg;
107 cout <<
"sims::extend_base_orbit " << lvl <<
" verbose_level = " << verbose_level << endl;
110 total = total0 = orbit_len[lvl];
112 cout <<
"sims::extend_base_orbit " << lvl <<
" orbit_len[lvl] = " << orbit_len[lvl] << endl;
116 cout <<
"sims::extend_base_orbit " << lvl <<
" nbg = " << nbg << endl;
118 if (orbit[lvl] == NULL) {
119 cout <<
"sims::extend_base_orbit orbit[lvl] == NULL" << endl;
122 while (cur < total) {
123 cur_pt = orbit[lvl][cur];
125 cout <<
"sims::extend_base_orbit: cur=" << cur <<
" total = " << total <<
" cur_pt=" << cur_pt << endl;
127 for (i = 0; i < nbg; i++) {
129 cout <<
"sims::extend_base_orbit: applying generator " << i <<
" / " << nbg << endl;
134 cout <<
"sims::extend_base_orbit: next_pt = " << next_pt << endl;
136 next_pt_loc = orbit_inv[lvl][next_pt];
138 cout <<
"sims::extend_base_orbit: next_pt_loc = " << next_pt_loc << endl;
141 cout <<
"sims::extend_base_orbit "
142 "generator " << gen_idx <<
" maps "
143 << cur_pt <<
" to " << next_pt << endl;
145 if (next_pt_loc < total) {
149 cout <<
"sims::extend_base_orbit "
150 "additional pt " << next_pt <<
" reached from "
151 << cur_pt <<
" under generator "
155 prev[lvl][total] = cur_pt;
156 label[lvl][total] = gen_idx;
159 cout <<
"cur = " << cur << endl;
160 cout <<
"total = " << total << endl;
166 orbit_len[lvl] = total;
168 cout <<
"sims::extend_base_orbit " << lvl <<
" finished" << endl;
169 cout << lvl <<
"-th base point " <<
A->
base_i(lvl)
170 <<
" orbit extended to length " << orbit_len[lvl];
173 for (i = 0; i < orbit_len[lvl]; i++) {
174 cout << orbit[lvl][i];
175 if (i < orbit_len[lvl] - 1)
178 cout <<
" }" << endl;
185 cout <<
"sims::extend_base_orbit " << lvl <<
" done" << endl;
194 int f_v = (verbose_level >= 1);
197 int pt, pt_loc, cur, cur_pt, i, next_pt, next_pt_loc, gen_idx;
200 pt_loc = orbit_inv[lvl][pt];
202 cout <<
"sims::compute_base_orbit: "
203 "computing orbit of " << lvl <<
"-th base point "
204 << pt <<
" with " <<
nb_gen[lvl] <<
" generators" << endl;
211 while (cur < orbit_len[lvl]) {
212 cur_pt = orbit[lvl][cur];
214 cout <<
"sims::compute_base_orbit "
215 "applying generator to " << cur_pt << endl;
217 for (i = 0; i <
nb_gen[lvl]; i++) {
220 next_pt_loc = orbit_inv[lvl][next_pt];
222 cout <<
"sims::compute_base_orbit "
223 "generator " << i <<
" maps " << cur_pt
224 <<
" to " << next_pt << endl;
226 if (next_pt_loc < orbit_len[lvl]) {
230 cout <<
"additional pt " << next_pt <<
" reached from "
231 << cur_pt <<
" under generator "
235 prev[lvl][orbit_len[lvl]] = cur_pt;
236 label[lvl][orbit_len[lvl]] = gen_idx;
239 cout <<
"sims::compute_base_orbit "
240 "cur = " << cur << endl;
241 cout <<
"sims::compute_base_orbit "
242 "orbit_len[lvl] = " << orbit_len[lvl] << endl;
249 cout <<
"sims::compute_base_orbit finished, "
250 << lvl <<
"-th base orbit of length "
251 << orbit_len[lvl] << endl;
255 for (i = 0; i < orbit_len[lvl]; i++) {
256 cout << orbit[lvl][i];
257 if (i < orbit_len[lvl] - 1)
260 cout <<
" }" << endl;
263 cout <<
"sims::compute_base_orbit done" << endl;
268 int target_length,
int verbose_level)
273 int f_v = (verbose_level >= 1);
277 int pt, pt_loc, cur, cur_pt, i, next_pt, next_pt_loc, gen_idx;
281 pt_loc = orbit_inv[lvl][pt];
283 cout <<
"sims::compute_base_orbit_known_length: "
284 "computing orbit of " << lvl
285 <<
"-th base point " << pt
286 <<
" target_length = " << target_length
287 <<
" nb_gens=" <<
nb_gen[lvl] << endl;
289 if (target_length > 1000000) {
293 for (i = 0; i <
nb_gen[lvl]; i++) {
295 cout <<
"sims::compute_base_orbit_known_length "
296 "generator " << i <<
":" << endl;
305 while (cur < orbit_len[lvl] && orbit_len[lvl] < target_length) {
306 cur_pt = orbit[lvl][cur];
309 progress = (double) cur / (
double) target_length;
314 if (cur % ((1 << 21) - 1) == 0) {
315 cout <<
"sims::compute_base_orbit_known_length "
316 "lvl=" << lvl <<
" cur=" << cur
317 <<
" orbit_len[lvl]=" << orbit_len[lvl]
318 <<
" target_length=" << target_length
319 <<
" progress=" << progress * 100 <<
"%" << endl;
323 cout <<
"sims::compute_base_orbit_known_length "
324 "applying " <<
nb_gen[lvl] <<
" generators to "
325 << cur_pt <<
" orbit_len[lvl]=" << orbit_len[lvl]
326 <<
" target_length=" << target_length << endl;
328 for (i = 0; i <
nb_gen[lvl]; i++) {
331 next_pt_loc = orbit_inv[lvl][next_pt];
333 cout <<
"sims::compute_base_orbit_known_length "
334 "generator " << i <<
" maps " << cur_pt
335 <<
" to " << next_pt << endl;
337 if (next_pt_loc < orbit_len[lvl]) {
341 cout <<
"sims::compute_base_orbit_known_length "
342 "additional pt " << next_pt <<
" reached from "
343 << cur_pt <<
" under generator " << i << endl;
346 prev[lvl][orbit_len[lvl]] = cur_pt;
347 label[lvl][orbit_len[lvl]] = gen_idx;
350 cout <<
"sims::compute_base_orbit_known_length "
351 "cur = " << cur << endl;
352 cout <<
"sims::compute_base_orbit_known_length "
353 "orbit_len[lvl] = " << orbit_len[lvl] << endl;
360 cout <<
"sims::compute_base_orbit_known_length finished, "
361 << lvl <<
"-th base orbit of length "
362 << orbit_len[lvl] << endl;
366 for (i = 0; i < orbit_len[lvl]; i++) {
367 cout << orbit[lvl][i];
368 if (i < orbit_len[lvl] - 1) {
372 cout <<
" }" << endl;
375 cout <<
"sims::compute_base_orbit_known_length done" << endl;
383 int drop_out_level, image;
384 int f_v = (verbose_level >= 1);
389 cout <<
"sims::strip_and_add" << endl;
391 if (
strip(elt, residue, drop_out_level,
394 cout <<
"sims::strip_and_add element strips to the identity, finished" << endl;
399 cout <<
"sims::strip_and_add after strip, drop_out_level = "
400 << drop_out_level <<
" image = " << image << endl;
403 cout <<
"sims::strip_and_add residue = " << endl;
410 cout <<
"sims::strip_and_add calling add_generator_at_level "
411 << drop_out_level << endl;
418 cout <<
"sims::strip_and_add increased set of generators:" << endl;
423 cout <<
"sims::strip_and_add finished, final group order is ";
428 cout <<
"sims::strip_and_add done" << endl;
434 int &drop_out_level,
int &image,
int verbose_level)
437 int f_v = (verbose_level >= 1);
438 int f_vv = (verbose_level >= 2);
439 int i, bi, j, j_coset;
442 cout <<
"sims::strip" << endl;
446 cout <<
"sims::strip A==NULL" << endl;
450 cout <<
"sims::strip A=" <<
A->
label << endl;
451 cout <<
"A->base_len=" <<
A->
base_len() << endl;
460 cout <<
"sims::strip level " << i <<
" / " <<
my_base_len << endl;
466 cout <<
"computing image of " << i
467 <<
"-th base element " << bi << endl;
471 cout <<
"sims::strip level " << i
472 <<
" base point " << bi
473 <<
" gets mapped to " << j << endl;
476 cout <<
"sims::strip level " << i <<
" / " <<
A->
base_len() <<
" before get_orbit_inv j=" << j << endl;
480 cout <<
"sims::strip j_coset " << j_coset << endl;
482 if (j_coset >= orbit_len[i]) {
484 cout <<
"sims::strip not in the orbit, "
485 "dropping out" << endl;
491 cout <<
"sims::strip returns FALSE, "
492 "drop_out_level=" << drop_out_level << endl;
498 cout <<
"sims::strip computing representative "
499 "of coset " << j_coset << endl;
503 cout <<
"sims::strip representative "
504 "of coset " << j_coset <<
" is " << endl;
509 cout <<
"sims::strip before element_mult, "
515 cout <<
"sims::strip before element_mult, "
522 cout <<
"sims::strip before element_move" << endl;
526 cout <<
"sims::strip after dividing off, "
527 "we have strip1= " << endl;
534 cout <<
"sims::strip after loop" << endl;
538 cout <<
"sims::strip returns TRUE" << endl;
544 int lvl,
int verbose_level)
548 int f_v = (verbose_level >= 1);
552 cout <<
"sims::add_generator_at_level adding generator at "
553 "level " << lvl <<
" verbose_level = " << verbose_level<< endl;
561 cout <<
"sims::add_generator_at_level before add_generator" << endl;
565 cout <<
"sims::add_generator_at_level after add_generator" << endl;
568 for (i = lvl; i >= 0; i--) {
570 cout <<
"sims::add_generator_at_level "
571 << lvl <<
" calling extend_base_orbit " << i << endl;
576 cout <<
"sims::add_generator_at_level done" << endl;
581 int lvl,
int verbose_level)
585 int f_v = (verbose_level >= 1);
587 int f_vvv = (verbose_level >= 3);
590 cout <<
"sims::add_generator_at_level_only level " << lvl << endl;
602 cout <<
"sims::add_generator_at_level_only level " << lvl <<
" done" << endl;
607 sims *old_G,
int verbose_level)
609 int f_v = (verbose_level >= 1);
614 cout <<
"sims::build_up_group_random_process_no_kernel" << endl;
618 cout <<
"target group order = " << go << endl;
620 K.
init(
A, verbose_level - 2);
624 cout <<
"sims::build_up_group_random_process_no_kernel "
625 "kernel group order " << go1 << endl;
629 cout <<
"sims::build_up_group_random_process_no_kernel "
630 "before build_up_group_random_process" << endl;
637 cout <<
"sims::build_up_group_random_process_no_kernel "
638 "after build_up_group_random_process" << endl;
646 int f_v = (verbose_level >= 1);
652 cout <<
"sims::extend_group_random_process_no_kernel" << endl;
658 cout <<
"target group order = " << target_go << endl;
661 K.
init(
A, verbose_level - 2);
671 cout <<
"sims::extend_group_random_process_no_kernel done" << endl;
678 int f_override_choose_next_base_point,
680 int *Elt,
int verbose_level),
683 int f_v = (verbose_level >= 1);
687 int f_vv = (verbose_level >= 2);
688 int f_vvv = (verbose_level >= 6);
689 int f_v4 = (verbose_level >= 7);
692 int drop_out_level, image, cnt, b, c, old_base_len;
698 cout <<
"sims::build_up_group_random_process verbose_level=" << verbose_level << endl;
706 D.
mult(G_order, K_order, KG_order);
708 cout <<
"sims::build_up_group_random_process: "
709 "current group order is " << G_order
710 <<
" target " << target_go << endl;
711 cout <<
"the old_G action " << old_G->
A->
label
712 <<
" has base_length = " << old_G->
A->
base_len()
713 <<
" and degree " << old_G->
A->
degree << endl;
714 cout <<
"the kernel action " << KA->
label
715 <<
" has base_length = " << KA->
base_len()
716 <<
" and degree " << KA->
degree << endl;
717 cout <<
"the image action has base_length = " << GA->
base_len()
718 <<
" and degree " << GA->
degree << endl;
719 cout <<
"current action " << GA->
label << endl;
720 cout <<
"current group order = " << G_order << endl;
721 cout <<
"current kernel order = " << K_order << endl;
722 cout <<
"together = " << KG_order << endl;
723 cout <<
"target_go = " << target_go << endl;
729 cout <<
"sims::build_up_group_random_process "
730 "iteration " << cnt << endl;
733 cout <<
"sims::build_up_group_random_process "
734 "cnt > 1000, something seems to be wrong" << endl;
742 if ((cnt % 2) == 0) {
744 cout <<
"sims::build_up_group_random_process: "
745 "choosing random schreier generator" << endl;
750 cout <<
"sims::build_up_group_random_process: "
751 "random element chosen:" << endl;
756 else if ((cnt % 2) == 1){
758 cout <<
"sims::build_up_group_random_process: "
759 "choosing random element in the group by "
760 "which we extend" << endl;
764 cout <<
"sims::build_up_group_random_process: "
765 "random element chosen, path = ";
775 cout <<
"sims::build_up_group_random_process: "
776 "calling strip:" << endl;
779 verbose_level - 5)) {
781 cout <<
"sims::build_up_group_random_process: "
782 "element strips through" << endl;
784 cout <<
"sims::build_up_group_random_process: "
785 "residue = " << endl;
793 cout <<
"sims::build_up_group_random_process: "
794 "the residue is not trivial, we need to "
795 "choose another base point" << endl;
797 if (f_override_choose_next_base_point) {
798 b = (*choose_next_base_point_method)(GA,
799 GA->
Elt2, verbose_level - 5);
803 GA->
Elt2, verbose_level - 5);
807 cout <<
"sims::build_up_group_random_process: "
808 "suggested next base point " << b << endl;
812 cout <<
"sims::build_up_group_random_process: "
813 "cannot find next base point" << endl;
816 drop_out_level, image, 0)) {
818 cout <<
"sims::build_up_group_random_process: "
819 "element strips through kernel" << endl;
821 cout <<
"sims::build_up_group_random_"
822 "process: residue = " << endl;
827 cout <<
"sims::build_up_group_random_"
828 "process: residue" << endl;
831 cout <<
"sims::build_up_group_random_"
832 "process: Elt2" << endl;
838 cout <<
"sims::build_up_group_random_process: "
839 "element strips through kernel, "
840 "residue = " << endl;
841 cout <<
"but the element is not the identity, "
842 "something is wrong" << endl;
846 cout <<
"sims::build_up_group_random_process: "
847 "current group order is " << G_order
848 <<
" target " << target_go << endl;
849 cout <<
"the old_G action " << old_G->
A->
label
850 <<
" has base_length = "
852 <<
" and degree " << old_G->
A->
degree << endl;
853 cout <<
"the kernel action " << KA->
label
854 <<
" has base_length = " << KA->
base_len()
855 <<
" and degree " << KA->
degree << endl;
856 cout <<
"the image action has base_length = "
858 <<
" and degree " << GA->
degree << endl;
859 cout <<
"current action " << GA->
label << endl;
860 cout <<
"current group order = "
862 cout <<
"current kernel order = "
864 cout <<
"together = " << KG_order << endl;
865 cout <<
"target_go = " << target_go << endl;
872 cout <<
"sims::build_up_group_random_process before K->add_generator_at_level drop_out_level=" << drop_out_level << endl;
875 drop_out_level, verbose_level - 3);
877 cout <<
"sims::build_up_group_random_process: "
878 "the residue has been added as kernel "
879 "generator at level " << drop_out_level
887 cout <<
"sims::build_up_group_random_process: "
888 "choosing additional base point " << b << endl;
893 cout <<
"sims::build_up_group_random_process before reallocate_base" << endl;
897 cout <<
"sims::build_up_group_random_process after reallocate_base" << endl;
900 cout <<
"sims::build_up_group_random_process: "
901 "additional base point " << b
902 <<
" chosen, increased base has length "
904 cout <<
"sims::build_up_group_random_process: "
905 "calling add_generator_at_level" << endl;
908 cout <<
"sims::build_up_group_random_process before add_generator_at_level" << endl;
911 GA->
base_len() - 1, verbose_level - 3);
913 cout <<
"sims::build_up_group_random_process after add_generator_at_level" << endl;
916 cout <<
"sims::build_up_group_random_process: "
917 "the residue has been added at level "
924 cout <<
"sims::build_up_group_random_process: "
925 "the residue is trivial" << endl;
929 cout <<
"sims::build_up_group_random_process: "
930 "before closure_group" << endl;
935 cout <<
"sims::build_up_group_random_process: "
936 "after closure_group" << endl;
942 cout <<
"sims::build_up_group_random_process: "
943 "element needs to be inserted at level = "
944 << drop_out_level <<
" with image "
952 cout <<
"sims::build_up_group_random_process before add_generator_at_level" << endl;
957 cout <<
"sims::build_up_group_random_process after add_generator_at_level" << endl;
962 cout <<
"sims::build_up_group_random_process: "
963 "computing group order G" << endl;
967 cout <<
"sims::build_up_group_random_process: "
968 "G_order=" << G_order << endl;
972 cout <<
"sims::build_up_group_random_process: "
973 "K_order=" << K_order << endl;
979 D.
mult(G_order, K_order, KG_order);
981 cout <<
"sims::build_up_group_random_process: "
982 "current group order is " << KG_order
983 <<
" = " << G_order <<
" * " << K_order << endl;
989 cout <<
"sims::build_up_group_random_process "
990 "before D.compare" << endl;
992 c = D.
compare(target_go, KG_order);
994 cout <<
"sims::build_up_group_random_process "
995 "after D.compare c=" << c
996 <<
" cnt=" << cnt << endl;
1001 cout <<
"sims::build_up_group_random_process: "
1002 "reached the full group after "
1003 << cnt <<
" iterations" << endl;
1009 cout <<
"sims::build_up_group_random_process "
1010 "overshooting the expected group after "
1011 << cnt <<
" iterations" << endl;
1012 cout <<
"current group order is " << KG_order
1013 <<
" = |G| * |K| = " << G_order <<
" * " << K_order <<
", target_go=" << target_go << endl;
1021 cout <<
"sims::build_up_group_random_process finished: "
1022 "found a group of order " << KG_order
1023 <<
" = " << G_order <<
" * " << K_order << endl;
1025 cout <<
"the n e w action has base_length = "
1027 <<
" and degree " << GA->
degree << endl;
1038 cout <<
"sims::build_up_group_random_process done" << endl;
1045 int f_override_choose_next_base_point,
1047 int *Elt,
int verbose_level),
1050 int f_v = (verbose_level >= 1);
1051 int f_vv = (verbose_level >= 2);
1052 int f_vvv = (verbose_level >= 3);
1055 int drop_out_level, image, f_added, j;
1056 int level, base_point, b, old_base_len;
1066 cout <<
"sims::build_up_group_from_generators base: ";
1071 cout <<
"generators:" << endl;
1077 cout <<
"sims::build_up_group_from_generators target group order: " << *target_go << endl;
1080 cout <<
"sims::build_up_group_from_generators no target group order given" << endl;
1082 cout <<
"sims::build_up_group_from_generators verbose_level=" << verbose_level << endl;
1086 D.
mult(G_order, K_order, KG_order);
1087 for (level = GA->
base_len() - 1; level >= 0; level--) {
1088 base_point = GA->
base_i(level);
1090 cout <<
"sims::build_up_group_from_generators level " << level <<
" base point "
1091 << base_point << endl;
1095 *
gens, subset_of_gens, verbose_level - 3);
1101 cout <<
"sims::build_up_group_from_generators calling O.init" << endl;
1104 O.
init(GA, verbose_level - 2);
1107 cout <<
"sims::build_up_group_from_generators calling O.init_generators" << endl;
1112 cout <<
"sims::build_up_group_from_generators generators in schreier" << endl;
1117 cout <<
"sims::build_up_group_from_generators computing orbit of point " << base_point << endl;
1121 cout <<
"sims::build_up_group_from_generators point " << base_point <<
" lies in an orbit "
1130 cout <<
"sims::build_up_group_from_generators level " << level <<
" coset rep " << j << endl;
1138 drop_out_level, image, 0 )) {
1140 cout <<
"sims::build_up_group_from_generators element strips through" << endl;
1142 cout <<
"sims::build_up_group_from_generators residue=" << endl;
1148 cout <<
"sims::build_up_group_from_generators element strips through." << endl;
1149 cout <<
"if it is the identity element, that's OK,"
1151 cout <<
"sims::build_up_group_from_generators otherwise please add another base point,"
1153 cout <<
"sims::build_up_group_from_generators a point which is moved by the residue"
1159 cout <<
"sims::build_up_group_from_generators the residue is not trivial, "
1160 "we need to chose another base point"
1163 if (f_override_choose_next_base_point) {
1164 b = (*choose_next_base_point_method)(
1165 GA, GA->
Elt2, verbose_level);
1169 GA->
Elt2, verbose_level);
1173 cout <<
"sims::build_up_group_from_generators: "
1174 "cannot find next base point" << endl;
1177 drop_out_level, image, verbose_level - 3)) {
1179 cout <<
"sims::build_up_group_from_generators element strips through kernel, "
1180 "residue = " << endl;
1187 cout <<
"sims::build_up_group_from_generators residue" << endl;
1190 cout <<
"sims::build_up_group_from_generators Elt2" << endl;
1195 cout <<
"sims::build_up_group_from_generators but the element is not the identity, "
1196 "something is wrong" << endl;
1203 drop_out_level, verbose_level - 3);
1205 cout <<
"sims::build_up_group_from_generators the residue has been added as "
1206 "kernel generator at level "
1207 << drop_out_level << endl;
1213 cout <<
"sims::build_up_group_from_generators: "
1214 "choosing additional base point "
1227 cout <<
"sims::build_up_group_from_generators additional base point " << b
1228 <<
" chosen, increased base has length "
1230 cout <<
"sims::build_up_group_from_generators calling add_generator_at_level" << endl;
1233 GA->
base_len() - 1, verbose_level - 3);
1235 cout <<
"sims::build_up_group_from_generators the residue has been added at level "
1242 cout <<
"sims::build_up_group_from_generators the residue is trivial" << endl;
1251 cout <<
"sims::build_up_group_from_generators before add_generator_at_level" << endl;
1254 drop_out_level, 0 );
1256 cout <<
"sims::build_up_group_from_generators after add_generator_at_level" << endl;
1262 D.
mult(G_order, K_order, KG_order);
1265 if (f_v && f_added) {
1266 cout <<
"sims::build_up_group_from_generators level " << level <<
" coset " << j
1267 <<
" group of order increased to " << KG_order
1268 <<
" = " << G_order <<
" * " << K_order << endl;
1271 cout <<
"sims::build_up_group_from_generators level " << level <<
" coset " << j
1272 <<
" found a group of order " << KG_order
1273 <<
" = " << G_order <<
" * " << K_order << endl;
1288 D.
mult(G_order, K_order, KG_order);
1290 c = D.
compare(*target_go, KG_order);
1294 cout <<
"sims::build_up_group_from_generators reached the full group after "
1295 << cnt <<
" iterations" << endl;
1301 cout <<
"sims::build_up_group_from_generators "
1302 "overshooting the expected group after "
1303 << cnt <<
" iterations" << endl;
1304 cout <<
"current group order is " << KG_order
1305 <<
" = " << G_order <<
" * " << K_order << endl;
1311 cout <<
"sims::build_up_group_from_generators after "
1312 << cnt <<
" iterations, we seem to be having "
1313 "problems reaching the target group order" << endl;
1314 cout <<
"sims::build_up_group_from_generators group order = " << KG_order << endl;
1315 cout <<
"sims::build_up_group_from_generators target group order = " << *target_go << endl;
1320 cout <<
"sims::build_up_group_from_generators "
1321 "calling closure group" << endl;
1329 cout <<
"sims::build_up_group_from_generators finished: "
1330 "found a group of order " << KG_order
1331 <<
" = " << G_order <<
" * " << K_order << endl;
1332 cout <<
"sims::build_up_group_from_generators the n e w action has base_length = " << GA->
base_len()
1333 <<
" and degree " << GA->
degree << endl;
1346 cout <<
"sims::build_up_group_from_generators found a group of order " << G_order << endl;
1349 cout <<
"sims::build_up_group_from_generators done" << endl;
1355 int f_v = (verbose_level >= 1);
1358 int f_vv = (verbose_level >= 2);
1359 int f_v3 = (verbose_level >= 6);
1360 int i, f_extended =
FALSE;
1367 cout <<
"sims::closure_group" << endl;
1371 cout <<
"verbose_level=" << verbose_level << endl;
1379 cout <<
"sims::closure_group for group of order "
1386 cout <<
"sims::closure_group finishing with FALSE "
1387 "because the old group order is one" << endl;
1392 for (i = 0; i < nb_times; i++) {
1394 cout <<
"sims::closure_group loop " << i <<
" / "
1395 << nb_times <<
" go=" << go << endl;
1398 cout <<
"sims::closure_group "
1399 "before random_schreier_generator" << endl;
1403 cout <<
"sims::closure_group "
1404 "after random_schreier_generator" << endl;
1409 verbose_level - 3)) {
1412 cout <<
"closure_group: iteration " << i
1413 <<
" the group has been extended, old order "
1414 << go <<
" extended group order " << go1 << endl;
1418 cout <<
"original element:" << endl;
1420 cout <<
"additional generator:" << endl;
1431 cout <<
"sims::closure_group group order extended from "
1432 << old_go <<
" to " << go1 << endl;
1440 cout <<
"sims::closure_group group order stays at "
domain to compute with objects of type longinteger
int compare(longinteger_object &a, longinteger_object &b)
void mult(longinteger_object &a, longinteger_object &b, longinteger_object &c)
a class to represent arbitrary precision integers
a permutation group in a fixed action.
void element_print_quick(void *elt, std::ostream &ost)
void element_print(void *elt, std::ostream &ost)
void element_mult(void *a, void *b, void *ab, int verbose_level)
void find_strong_generators_at_level(int base_len, long int *the_base, int level, data_structures_groups::vector_ge &gens, data_structures_groups::vector_ge &subset_of_gens, int verbose_level)
int element_is_one(void *elt, int verbose_level)
stabilizer_chain_base_data * Stabilizer_chain
void element_print_image_of_set(void *elt, int size, long int *set)
int choose_next_base_point_default_method(int *Elt, int verbose_level)
void element_move(void *a, void *b, int verbose_level)
long int element_image_of(long int a, void *elt, int verbose_level)
void reallocate_base(int new_base_point)
to hold a vector of group elements
void print_as_permutation(std::ostream &ost)
void print(std::ostream &ost)
Schreier trees for orbits of groups on points.
void init_generators(data_structures_groups::vector_ge &generators, int verbose_level)
void compute_point_orbit(int pt, int verbose_level)
void init(actions::action *A, int verbose_level)
void print(std::ostream &ost)
void coset_rep(int j, int verbose_level)
void print_tables(std::ostream &ost, int f_with_cosetrep)
a permutation group represented via a stabilizer chain
void coset_rep_inv(int *Elt, int i, int j, int verbose_level_le)
void random_element(int *elt, int verbose_level)
int get_orbit_inv(int i, int j)
void swap_points(int lvl, int i, int j)
int test_if_subgroup(sims *old_G, int verbose_level)
void init(actions::action *A, int verbose_level)
void extend_base_orbit(int new_gen_idx, int lvl, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void compute_base_orbit(int lvl, int verbose_level)
void build_up_group_from_generators(sims *K, data_structures_groups::vector_ge *gens, int f_target_go, ring_theory::longinteger_object *target_go, int f_override_choose_next_base_point, int(*choose_next_base_point_method)(actions::action *A, int *Elt, int verbose_level), int verbose_level)
void init_trivial_group(int verbose_level)
void print_generator_depth_and_perm()
void add_generator_at_level_only(int *elt, int lvl, int verbose_level)
void print_generators_at_level_or_below(int lvl)
void extend_group_random_process_no_kernel(sims *extending_by_G, ring_theory::longinteger_object &target_go, int verbose_level)
void compute_base_orbits_known_length(int *tl, int verbose_level)
int get_image(int i, int gen_idx)
void print_transversals()
int closure_group(int nb_times, int verbose_level)
void print(int verbose_level)
void add_generator_at_level(int *elt, int lvl, int verbose_level)
void print_basic_orbits()
data_structures_groups::vector_ge gens
void add_generator(int *elt, int verbose_level)
void random_schreier_generator(int *Elt, int verbose_level)
void build_up_group_random_process_no_kernel(sims *old_G, int verbose_level)
void reallocate_base(int old_base_len, int verbose_level)
int strip(int *elt, int *residue, int &drop_out_level, int &image, int verbose_level)
void print_transversal_lengths()
void compute_base_orbits(int verbose_level)
void print_group_order(std::ostream &ost)
void compute_base_orbit_known_length(int lvl, int target_length, int verbose_level)
void build_up_group_random_process(sims *K, sims *old_G, ring_theory::longinteger_object &target_go, int f_override_choose_next_base_point, int(*choose_next_base_point_method)(actions::action *A, int *Elt, int verbose_level), int verbose_level)
int strip_and_add(int *elt, int *residue, int verbose_level)
#define Lint_vec_print(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects