17namespace layer3_group_actions {
53 int verbose_level = 0;
54 int f_v = (verbose_level >= 1);
57 cout <<
"direct_product::freeself" << endl;
91 cout <<
"direct_product::freeself finished" << endl;
98 int f_v = (verbose_level >= 1);
101 cout <<
"direct_product::init" << endl;
113 label.append(
"_product");
134 cout <<
"direct_product::init "
135 "degree_of_product_action = "
137 cout <<
"direct_product::init "
148 cout <<
"direct_product::init "
160 cout <<
"direct_product::init "
162 cout <<
"direct_product::init "
164 cout <<
"direct_product::init "
166 cout <<
"direct_product::init "
171 cout <<
"direct_product::init "
172 "base_len_in_component1 = "
177 cout <<
"direct_product::init "
178 "base_len_in_component1 = "
180 cout <<
"direct_product::init "
181 "base_len_in_component2 = "
192 cout <<
"direct_product::init "
193 "base_for_component1 = ";
197 cout <<
"direct_product::init "
198 "tl_for_component1 = ";
213 cout <<
"direct_product::init base_for_component2 = ";
216 cout <<
"direct_product::init tl_for_component2 = ";
226 cout <<
"direct_product::init "
227 "before compute_base_and_transversals" << endl;
231 cout <<
"direct_product::init "
232 "after compute_base_and_transversals" << endl;
235 cout <<
"direct_product::init the_base = ";
238 cout <<
"direct_product::init the_transversal_length = ";
244 cout <<
"direct_product::init done" << endl;
249 long int a,
int verbose_level)
251 int f_v = (verbose_level >= 1);
252 long int a0, b, c, c1, c2, i, j;
255 cout <<
"direct_product::element_image_of" << endl;
259 if (a < M1->degree) {
261 cout <<
"direct_product::element_image_of "
262 "we are in component " << 0
263 <<
" reduced input a=" << a << endl;
267 cout <<
"direct_product::element_image_of "
268 "we are in component " << 0
269 <<
" reduced output c=" << c << endl;
276 if (a < M2->degree) {
278 cout <<
"direct_product::element_image_of "
279 "we are in component " << 1
280 <<
" reduced input a=" << a << endl;
284 cout <<
"direct_product::element_image_of "
285 "we are in component " << 1
286 <<
" reduced output c=" << c << endl;
297 cout <<
"direct_product::element_image_of "
298 "we are in the product component "
299 "reduced input a = " << a
300 <<
" i=" << i <<
" j=" << j << endl;
306 cout <<
"direct_product::element_image_of "
307 "we are in the product component "
308 " reduced output c=" << c << endl;
312 cout <<
"direct_product::element_image_of "
313 "we are in the product component "
314 " output b=" << b << endl;
319 cout <<
"direct_product::element_image_of " << a0 <<
" maps to " << b << endl;
344 int f_v = (verbose_level >= 1);
347 cout <<
"direct_product::element_mult" << endl;
359 cout <<
"direct_product::element_mult done" << endl;
365 int f_v = (verbose_level >= 1);
368 cout <<
"direct_product::element_move" << endl;
372 cout <<
"direct_product::element_move done" << endl;
378 int f_v = (verbose_level >= 1);
381 cout <<
"direct_product::element_invert" << endl;
386 cout <<
"direct_product::element_invert done" << endl;
400 cout <<
"direct_product::offset_i illegal value of f" << endl;
454 for (h = 0; h < nb_bits; h++) {
484 for (h = nb_bits - 1; h >= 0; h--) {
498 int f_v = (verbose_level >= 1);
501 cout <<
"direct_product::make_element" << endl;
504 cout <<
"direct_product::make_element data:" << endl;
515 cout <<
"direct_product::make_element "
516 "created this element:" << endl;
520 cout <<
"direct_product::make_element done" << endl;
528 ost <<
"begin element of direct product: " << endl;
529 if (
M1->
n == 1 &&
M2->
n == 1) {
530 cout <<
"(" << Elt[0] <<
"," << Elt[1] <<
","
531 << Elt[4] <<
"," << Elt[5] <<
")" << endl;
534 for (f = 0; f < 2; f++) {
535 ost <<
"component " << f <<
":" << endl;
546 ost <<
"end element of direct product" << endl;
551 int f_v = (verbose_level >= 1);
555 cout <<
"direct_product::compute_base_and_transversals" << endl;
570 cout <<
"direct_product::compute_base_and_transversals "
571 "h != base_length (1)" << endl;
583 cout <<
"direct_product::compute_base_and_transversals "
584 "h != base_length (2)" << endl;
588 cout <<
"direct_product::compute_base_and_transversals done" << endl;
593 int &size,
int &nb_gens,
int verbose_level)
595 int f_v = (verbose_level >= 1);
606 cout <<
"direct_product::make_strong_generators_data" << endl;
609 cout <<
"direct_product::make_strong_generators_data "
610 "before strong_generators_for_general_linear_group" << endl;
613 GL1_data, GL1_size, GL1_nb_gens,
616 GL2_data, GL2_size, GL2_nb_gens,
620 cout <<
"direct_product::make_strong_generators_data "
621 "after strong_generators_for_general_linear_group" << endl;
623 nb_gens = GL1_nb_gens + GL2_nb_gens;
625 data =
NEW_int(nb_gens * size);
630 for (g = 0; g < GL2_nb_gens; g++) {
642 for (g = 0; g < GL1_nb_gens; g++) {
654 cout <<
"h != nb_gens" << endl;
661 cout <<
"direct_product::make_strong_generators_data done" << endl;
671 int f_v = (verbose_level >= 1);
678 int i, len1, len2, len3;
683 cout <<
"direct_product::lift_generators" << endl;
692 gens->
init(A, verbose_level - 2);
693 gens->
allocate(len3, verbose_level - 2);
700 for (i = 0; i < len1; i++) {
708 for (i = 0; i < len2; i++) {
717 cout <<
"direct_product::lift_generators "
718 "the generators are:" << endl;
723 D.
mult(go1, go2, go3);
730 cout <<
"direct_product::lift_generators done" << endl;
a catch-all container class for everything related to data structures
int bitvector_s_i(uchar *bitvec, long int i)
void bitvector_m_ii(uchar *bitvec, long int i, int a)
bulk storage of group elements in compressed form
void init(int entry_size, int page_length_log, int verbose_level)
linear_algebra::linear_algebra * Linear_algebra
void identity_matrix(int *A, int n)
domain to compute with objects of type longinteger
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_one(void *elt, int verbose_level)
void element_move(void *a, void *b, int verbose_level)
void generators_to_strong_generators(int f_target_go, ring_theory::longinteger_object &target_go, data_structures_groups::vector_ge *gens, groups::strong_generators *&Strong_gens, int verbose_level)
to hold a vector of group elements
void allocate(int length, int verbose_level)
void init(actions::action *A, int verbose_level)
void print_quick(std::ostream &ost)
data_structures::page_storage * Elts
int base_len_in_component1
void init(matrix_group *M1, matrix_group *M2, int verbose_level)
field_theory::finite_field * F2
void element_pack(int *Elt, uchar *elt)
void compute_base_and_transversals(int verbose_level)
void make_strong_generators_data(int *&data, int &size, int &nb_gens, int verbose_level)
void put_digit(uchar *elt, int f, int i, int d)
void element_unpack(uchar *elt, int *Elt)
void lift_generators(strong_generators *SG1, strong_generators *SG2, actions::action *A, strong_generators *&SG3, int verbose_level)
int base_len_in_component2
field_theory::finite_field * F1
void element_print_easy(int *Elt, std::ostream &ost)
int * the_transversal_length
long int * base_for_component2
void make_element(int *Elt, int *data, int verbose_level)
int degree_of_matrix_group2
void element_invert(int *A, int *Av, int verbose_level)
int dimension_of_matrix_group1
void element_mult(int *A, int *B, int *AB, int verbose_level)
void element_move(int *A, int *B, int verbose_level)
int get_digit(uchar *elt, int f, int i)
int degree_of_product_action
int element_is_one(int *Elt)
int degree_of_matrix_group1
long int element_image_of(int *Elt, long int a, int verbose_level)
int dimension_of_matrix_group2
void element_one(int *Elt)
long int * base_for_component1
a matrix group over a finite field in projective, vector space or affine action
void GL_print_easy(int *Elt, std::ostream &ost)
void GL_invert(int *A, int *Ainv)
int base_len(int verbose_level)
void base_and_transversal_length(int base_len, long int *base, int *transversal_length, int verbose_level)
void GL_invert_internal(int *A, int *Ainv, int verbose_level)
void GL_mult(int *A, int *B, int *AB, int verbose_level)
void make_element(int *Elt, int *data, int verbose_level)
void strong_generators_low_level(int *&data, int &size, int &nb_gens, int verbose_level)
field_theory::finite_field * GFq
long int image_of_element(int *Elt, long int a, int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
data_structures_groups::vector_ge * gens
void group_order(ring_theory::longinteger_object &go)
#define Int_vec_zero(A, B)
#define Lint_vec_print(A, B, C)
#define Int_vec_copy(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects