14namespace layer3_group_actions {
97 int f_v = (verbose_level >= 1);
100 cout <<
"schreier_sims::init action:" << endl;
114 cout <<
"schreier_sims::init action A:" << endl;
116 cout <<
"schreier_sims::init before G->init" << endl;
118 G->
init(
GA, verbose_level - 2);
120 cout <<
"schreier_sims::init after G->init" << endl;
123 cout <<
"schreier_sims::init before G->init_trivial_group" << endl;
127 cout <<
"schreier_sims::init after G->init_trivial_group" << endl;
130 cout <<
"schreier_sims::init done" << endl;
137 int f_v = (verbose_level >= 1);
140 cout <<
"schreier_sims::interested_in_kernel "
141 "kernel action:" << endl;
146 K->
init(
KA, verbose_level - 2);
155 int f_v = (verbose_level >= 1);
158 cout <<
"schreier_sims::init_target_group_order " <<
tgo << endl;
167 int f_v = (verbose_level >= 1);
170 cout <<
"schreier_sims::init_generators " << endl;
173 cout <<
"schreier_sims::init_generators copying generators in" << endl;
178 cout <<
"schreier_sims::init_generators generators are:" << endl;
189 void (*callback_choose_random_generator)(
int iteration,
190 int *Elt,
void *data,
int verbose_level),
191 void *callback_choose_random_generator_data,
194 int f_v = (verbose_level >= 1);
197 cout <<
"schreier_sims::init_random_process" << endl;
208 int f_v = (verbose_level >= 1);
211 cout <<
"schreier_sims::init_old_G" << endl;
218 int base_of_choice_len,
int *base_of_choice,
221 int f_v = (verbose_level >= 1);
224 cout <<
"schreier_sims::init_base_of_choice" << endl;
233 int *Elt,
int verbose_level),
236 int f_v = (verbose_level >= 1);
239 cout <<
"schreier_sims::init_choose_next_base_point_method" << endl;
261 cout <<
"current group order is " <<
G_order;
263 cout <<
" target group order is " <<
tgo;
269 int *Elt,
int verbose_level)
271 int f_v = (verbose_level >= 1);
273 int f_vvv = (verbose_level >= 3);
276 cout <<
"schreier_sims::get_generator_internal "
277 "choosing random schreier generator" << endl;
278 cout <<
"verbose_level=" << verbose_level << endl;
283 cout <<
"schreier_sims::get_generator_internal "
284 "we picked the following random Schreier generator:" << endl;
291 int *Elt,
int verbose_level)
293 int f_v = (verbose_level >= 1);
298 cout <<
"schreier_sims::get_generator_external" << endl;
302 cout <<
"schreier_sims::get_generator_external before get_generator_external_from_generators" << endl;
308 cout <<
"schreier_sims::get_generator_external before get_generator_external_random_process" << endl;
314 cout <<
"schreier_sims::get_generator_external before get_generator_external_old_G" << endl;
319 cout <<
"schreier_sims::get_generator_external "
320 "we have chosen the following generator" << endl;
325 cout <<
"schreier_sims::get_generator_external done" << endl;
330 int *Elt,
int verbose_level)
332 int f_v = (verbose_level >= 1);
337 cout <<
"schreier_sims::get_generator_external_"
338 "from_generators" << endl;
343 cout <<
"schreier_sims::get_generator_external_"
344 "from_generators choosing generator "
351 cout <<
"schreier_sims::get_generator_external_"
352 "from_generators gens->len == 0" << endl;
358 cout <<
"schreier_sims::get_generator_external_"
359 "from_generators done" << endl;
364 int *Elt,
int verbose_level)
366 int f_v = (verbose_level >= 1);
369 cout <<
"schreier_sims::get_generator_external_"
370 "random_process" << endl;
372 (*callback_choose_random_generator)((
iteration >> 1),
377 int *Elt,
int verbose_level)
379 int f_v = (verbose_level >= 1);
383 cout <<
"schreier_sims::get_generator_external_old_G" << endl;
387 cout <<
"schreier_sims::get_generator_external_old_G "
388 "random element chosen, path = ";
396 int f_v = (verbose_level >= 1);
399 cout <<
"schreier_sims::get_generator" << endl;
403 cout <<
"schreier_sims::get_generator before get_generator_internal" << endl;
407 cout <<
"schreier_sims::get_generator after get_generator_internal" << endl;
412 cout <<
"schreier_sims::get_generator before get_generator_external" << endl;
416 cout <<
"schreier_sims::get_generator after get_generator_external" << endl;
420 cout <<
"schreier_sims::get_generator done" << endl;
426 int f_v = (verbose_level >= 1);
427 int f_vvv = (verbose_level >= 3);
433 cout <<
"schreier_sims::closure_group" << endl;
438 cout <<
"schreier_sims::closure_group iteration "
440 <<
": remainder is not zero, "
441 "this is not a subgroup" << endl;
446 cout <<
"schreier_sims::closure_group "
447 "calling G->closure_group" << endl;
453 cout <<
"schreier_sims::closure_group iteration "
455 <<
": after closure_group: remaining factor: "
456 << quo <<
" remainder " << rem << endl;
460 cout <<
"schreier_sims::closure_group cnt == 100, "
461 "KG_order=" <<
KG_order <<
", we are breaking off" << endl;
466 cout <<
"schreier_sims::closure_group done ";
473 int f_v = (verbose_level >= 1);
474 int f_vv = (verbose_level >= 3);
475 int f_vvv = (verbose_level >= 4);
476 int f_vvvv = (verbose_level >= 5);
478 int drop_out_level, image, b, c, f_added, old_base_len;
481 cout <<
"schreier_sims::create_group" << endl;
483 cout <<
"schreier_sims::create_group target group order is " <<
tgo << endl;
486 cout <<
"schreier_sims::create_group no target group order given" << endl;
490 cout <<
"schreier_sims::create_group target group order is 0" << endl;
501 cout <<
"schreier_sims::create_group "
506 cout <<
"schreier_sims::create_group iteration > 1000, "
507 "something seems to be wrong" << endl;
508 cout <<
"target group order = " <<
tgo << endl;
509 cout <<
"KG_order = " <<
KG_order << endl;
516 cout <<
"schreier_sims::create_group "
517 "iteration == 1000, we seem to be done" << endl;
523 cout <<
"schreier_sims::create_group "
525 <<
" before get_generator" << endl;
530 cout <<
"schreier_sims::create_group "
532 <<
" after get_generator" << endl;
535 cout <<
"schreier_sims::create_group "
537 <<
" generator: " << endl;
542 cout <<
"schreier_sims::create_group "
543 "calling strip:" << endl;
548 cout <<
"schreier_sims::create_group: "
549 "element strips through" << endl;
551 cout <<
"schreier_sims::create_group: "
552 "residue = " << endl;
560 cout <<
"schreier_sims::create_group: "
561 "the residue is not trivial, "
562 "we need to choose another base point" << endl;
566 cout <<
"schreier_sims::create_group "
567 "before (*choose_next_base_point_method)" << endl;
569 b = (*choose_next_base_point_method)(
GA,
570 Elt2, verbose_level - 5);
574 cout <<
"schreier_sims::create_group "
575 "before GA->choose_next_base_point_default_method" << endl;
578 Elt2, verbose_level - 5);
582 cout <<
"schreier_sims::create_group: "
583 "next suggested base point is "
588 cout <<
"schreier_sims::create_group: "
589 "cannot find next base point" << endl;
594 cout <<
"schreier_sims::create_group: "
595 "element strips through kernel" << endl;
597 cout <<
"schreier_sims::create_group: "
598 "residue = " << endl;
603 cout <<
"schreier_sims::create_group: "
607 cout <<
"schreier_sims::create_group: "
614 cout <<
"schreier_sims::create_group: "
615 "element strips through kernel, "
616 "residue = " << endl;
617 cout <<
"but the element is not the "
618 "identity, something is wrong" << endl;
628 cout <<
"schreier_sims::create_group: "
629 "before K->add_generator_at_level" << endl;
632 drop_out_level, verbose_level - 3);
634 cout <<
"schreier_sims::create_group: "
635 "the residue has been added as "
636 "kernel generator at level "
637 << drop_out_level << endl;
643 cout <<
"schreier_sims::create_group: "
644 "choosing n e w base point " << b << endl;
656 cout <<
"schreier_sims::create_group: "
657 "n e w base point " << b
658 <<
" chosen, n e w base has length "
660 cout <<
"schreier_sims::create_group: "
661 "calling add_generator_at_level" << endl;
666 cout <<
"schreier_sims::create_group: "
667 "the residue has been added "
674 cout <<
"schreier_sims::create_group: "
675 "the residue is trivial" << endl;
683 cout <<
"schreier_sims::create_group: "
684 "element needs to be inserted at level = "
685 << drop_out_level <<
" with image "
691 drop_out_level, verbose_level - 3);
697 if ((f_v && f_added) || f_vv) {
698 cout <<
"schreier_sims::create_group: "
699 "n e w group order is ";
708 cout <<
"schreier_sims::create_group: "
709 "reached the full group after "
716 cout <<
"schreier_sims::create_group "
717 "overshooting the expected group after "
721 cout <<
"schreier_sims::create_group so far, "
722 "the group elements are:" << endl;
731 cout <<
"schreier_sims::create_group: before closure_group" << endl;
735 cout <<
"schreier_sims::create_group: after closure_group" << endl;
741 cout <<
"schreier_sims::create_group: before closure_group" << endl;
745 cout <<
"schreier_sims::create_group: after closure_group" << endl;
750 cout <<
"schreier_sims::create_group finished:";
753 cout <<
"the n e w action has base ";
755 cout <<
" of length " <<
GA->
base_len() << endl;
interface to system functions
int random_integer(int p)
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)
void integral_division(longinteger_object &a, longinteger_object &b, longinteger_object &q, longinteger_object &r, int verbose_level)
a class to represent arbitrary precision integers
void assign_to(longinteger_object &b)
a permutation group in a fixed action.
void element_print_quick(void *elt, std::ostream &ost)
void element_print(void *elt, std::ostream &ost)
int element_is_one(void *elt, int verbose_level)
stabilizer_chain_base_data * Stabilizer_chain
void element_one(void *elt, int verbose_level)
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)
void reallocate_base(int new_base_point)
to hold a vector of group elements
void print_for_make_element(std::ostream &ost)
void print(std::ostream &ost)
void copy(vector_ge *&vector_copy, int verbose_level)
void get_generator_external_from_generators(int *Elt, int verbose_level)
void get_generator_internal(int *Elt, int verbose_level)
void * callback_choose_random_generator_data
void get_generator(int *Elt, int verbose_level)
int f_override_choose_next_base_point_method
void init_base_of_choice(int base_of_choice_len, int *base_of_choice, int verbose_level)
void init(actions::action *A, int verbose_level)
void init_choose_next_base_point_method(int(*choose_next_base_point_method)(actions::action *A, int *Elt, int verbose_level), int verbose_level)
int(* choose_next_base_point_method)(actions::action *A, int *Elt, int verbose_level)
void get_generator_external_old_G(int *Elt, int verbose_level)
void get_generator_external(int *Elt, int verbose_level)
int f_has_target_group_order
void init_old_G(sims *old_G, int verbose_level)
int f_from_random_process
int f_interested_in_kernel
void init_generators(data_structures_groups::vector_ge *gens, int verbose_level)
void closure_group(int verbose_level)
void print_group_orders()
void compute_group_orders()
ring_theory::longinteger_object K_order
void get_generator_external_random_process(int *Elt, int verbose_level)
data_structures_groups::vector_ge * external_gens
void(* callback_choose_random_generator)(int iteration, int *Elt, void *data, int verbose_level)
void interested_in_kernel(actions::action *KA, int verbose_level)
ring_theory::longinteger_object tgo
void create_group(int verbose_level)
ring_theory::longinteger_object KG_order
void init_random_process(void(*callback_choose_random_generator)(int iteration, int *Elt, void *data, int verbose_level), void *callback_choose_random_generator_data, int verbose_level)
void init_target_group_order(ring_theory::longinteger_object &tgo, int verbose_level)
ring_theory::longinteger_object G_order
a permutation group represented via a stabilizer chain
void random_element(int *elt, int verbose_level)
void init(actions::action *A, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void init_trivial_group(int verbose_level)
void print_generator_depth_and_perm()
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()
void random_schreier_generator(int *Elt, 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)
#define Lint_vec_print(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects