15namespace layer5_applications {
16namespace apps_algebra {
57 int verbose_level = 0;
58 int f_v = (verbose_level >= 1);
62 cout <<
"young::freeself" << endl;
66 cout <<
"young::freeself before delete Sch" << endl;
72 cout <<
"young::freeself before delete SG" << endl;
84 cout <<
"young::freeself before delete D" << endl;
102 cout <<
"young::freeself before delete gens1" << endl;
111 cout <<
"young::freeself before delete S1" << endl;
122 cout <<
"young::freeself before delete A" << endl;
135 cout <<
"young::freeself before delete Aconj" << endl;
142 cout <<
"young::freeself before delete ABC" << endl;
149 cout <<
"young::freeself done" << endl;
155 int f_v = (verbose_level >= 1);
156 int f_vv = (verbose_level >= 2);
160 cout <<
"young::init" << endl;
162 int f_no_base =
FALSE;
172 cout <<
"Created group Sym(" <<
n <<
") of size " <<
goi << endl;
182 cout <<
"Listing all elements in the group "
183 "Sym(" <<
n <<
"):" << endl;
184 for (i = 0; i <
goi; i++) {
186 cout <<
"element " << i <<
" is ";
194 cout <<
"computing conjugacy classes:" << endl;
202 cout <<
"computing conjugacy classes done" << endl;
211 cout <<
"young::init done" << endl;
216 int *&Base,
int *&base_cols,
int &rk,
219 int f_v = (verbose_level >= 1);
223 cout <<
"young::create_module" << endl;
237 for (j = 0; j < sz; j++) {
238 M1[0 * sz + j] = h_alpha[j];
247 for (i = 1; i <
goi; i++) {
251 for (j = 0; j < sz; j++) {
252 M1[i * sz + j] = elt5[j];
258 cout <<
"M1=" << endl;
262 for (i = 0; i <
goi * sz; i++) {
267 cout <<
"A basis is:" << endl;
271 int f_special =
FALSE;
272 int f_complete =
TRUE;
278 cout <<
"Calling Gauss_echelon_form:" << endl;
282 f_P, NULL,
goi, sz,
goi, 0 );
285 cout <<
"rk=" << rk << endl;
286 cout <<
"Basis=" << endl;
291 cout <<
"base_cols=" << endl;
302 cout <<
"young::create_module done" << endl;
307 int *base_cols,
int rk,
int verbose_level)
309 int f_v = (verbose_level >= 1);
310 int f_v3 = (verbose_level >= 3);
314 cout <<
"young::create_representations" << endl;
320 int *elt3, *elt4, *elt5;
339 for (i = 0; i < rk; i++) {
340 for (j = 0; j < sz; j++) {
347 for (ii = 0; ii < rk * sz; ii++) {
350 for (j = 0; j < sz; j++) {
357 cout <<
"The extended matrix is:" << endl;
362 for (ii = 0; ii < rk; ii++) {
365 D->
offset(Mtx, i * rk + ii), 0);
368 for (ii = 0; ii < rk; ii++) {
371 D->
offset(M4, rk * sz), sz, idx,
374 cout <<
"Row " << i <<
" basis vector " << ii
375 <<
" has been subtracted" << endl;
382 cout <<
"The vector does not lie in the span of the "
383 "basis, something is wrong" << endl;
388 cout <<
"Row " << i <<
" has been computed" << endl;
394 cout <<
"Conjugacy class " << c <<
" is represented "
395 "by group element " << h;
397 cout <<
" which is ";
399 cout <<
" which is represented by the matrix:" << endl;
413 cout <<
"young::create_representations done" << endl;
418 int *Base_inv,
int rk,
int group_elt,
int *Mtx,
422 int f_v = (verbose_level >= 1);
423 int f_v3 = (verbose_level >= 3);
427 cout <<
"young::create_representation" << endl;
432 int *elt3, *elt4, *elt5;
443 for (i = 0; i < rk; i++) {
444 for (j = 0; j < sz; j++) {
451 for (ii = 0; ii < rk * sz; ii++) {
454 for (j = 0; j < sz; j++) {
461 cout <<
"The extended matrix is:" << endl;
466 D->
offset(Mtx, i * rk), 1, rk, rk, 0);
469 for (ii = 0; ii < rk; ii++) {
472 D->
offset(Mtx, i * rk + ii), 0);
474 D->
offset(M4, rk * sz), sz, idx,
477 cout <<
"Row " << i <<
" basis vector " << ii
478 <<
" has been subtracted" << endl;
485 cout <<
"The vector does not lie in the span of the "
486 "basis, something is wrong" << endl;
492 cout <<
"Row " << i <<
" has been computed" << endl;
498 cout <<
"The element " << group_elt <<
" is represented "
499 "by the matrix:" << endl;
511 cout <<
"young::create_representation done" << endl;
517 int *elt1,
int *elt2,
int *elt3,
520 int f_v = (verbose_level >= 1);
521 int f_vv = (verbose_level >= 2);
526 cout <<
"young::young_symmetrizer" << endl;
536 for (j = 0; j < a; j++) {
539 for (i =
l1 - 2; i >= 0; i--) {
545 for ( ; j < b; j++) {
552 cout <<
"row_part: ";
555 cout <<
"col_part: ";
561 for (i = 0; i <
l1; i++) {
563 for (j = 0; j < a; j++) {
570 cout <<
"We are using the following tableau:" << endl;
579 for (i = 0; i <
l1; i++) {
581 for (j = 0; j < a; j++) {
588 for (i = 0; i <
l2; i++) {
590 for (j = 0; j < a; j++) {
598 cout <<
"Row partition:" << endl;
600 cout <<
"Col partition:" << endl;
613 cout <<
"Row stabilizer created" << endl;
618 for (i = 0; i < go1; i++) {
620 cout <<
"element " << i <<
" is ";
631 cout <<
"Column stabilizer created" << endl;
635 for (i = 0; i < go2; i++) {
637 cout <<
"element " << i <<
" is ";
651 for (i = 0; i < go1; i++) {
662 for (i = 0; i < go2; i++) {
673 cout <<
"elt1=" << endl;
677 cout <<
"elt2=" << endl;
687 cout <<
"elt3=" << endl;
695 cout <<
"young::young_symmetrizer done" << endl;
701 int f_v = (verbose_level >= 1);
706 cout <<
"young::compute_generators" << endl;
709 int nb_gens1, nb_gens2;
712 for (i = 0; i <
l1; i++) {
719 cout <<
"nb_gens1 = " << nb_gens1 << endl;
723 for (i = 0; i <
l2; i++) {
730 cout <<
"nb_gens2 = " << nb_gens2 << endl;
742 for (i = 0; i <
l1; i++) {
746 for (j = 1; j < a; j++, h++) {
747 for (u = 0; u <
n; u++) {
760 cout <<
"go1=" << go1 << endl;
761 cout <<
"Generators for row stabilizer:" << endl;
769 for (i = 0; i <
l2; i++) {
773 for (j = 1; j < a; j++, h++) {
774 for (u = 0; u <
n; u++) {
787 cout <<
"go2=" << go2 << endl;
788 cout <<
"Generators for col stabilizer:" << endl;
793 cout <<
"young::compute_generators done" << endl;
799 int dim_of_module,
int dim_of_submodule,
803 int f_v = (verbose_level >= 1);
804 int f_vv = (verbose_level >= 2);
809 int *g, *gv, *Tau, *Theta, *TauTheta;
812 cout <<
"young::Maschke" << endl;
816 k = dim_of_submodule;
821 cout <<
"young::Maschke n=" <<
n << endl;
822 cout <<
"young::Maschke k=" << k << endl;
823 cout <<
"young::Maschke r=" << r << endl;
828 cout <<
"young::Maschke checking if submodule "
829 "is invariant" << endl;
831 for (h = 0; h <
goi; h++) {
833 for (i = 0; i < dim_of_submodule; i++) {
834 for (j = dim_of_submodule; j < dim_of_module; j++) {
836 cout <<
"The submodule is not invariant "
837 "under the action" << endl;
844 cout <<
"young::Maschke submodule is invariant, OK" << endl;
867 cout <<
"Mu (beginning) = " << endl;
873 for (h = 0; h <
goi; h++) {
878 cout <<
"h=" << h <<
" / " <<
goi <<
" hv=" << hv << endl;
884 for (i = 0; i < r; i++) {
885 for (j = 0; j < r; j++) {
892 cout <<
"Tau(hv) = " << endl;
898 for (i = 0; i < r; i++) {
899 for (j = 0; j < k; j++) {
901 D->
offset(Theta, i * k + j), 0);
905 cout <<
"Theta(h) = " << endl;
916 cout <<
"TauTheta = " << endl;
927 cout <<
"Mu (partial sum) = " << endl;
938 cout <<
"Mu = " << endl;
953 cout <<
"young::Maschke done" << endl;
993 int *elt_from,
int *elt_to)
1019 for (i = 0; i <
goi; i++) {
1021 for (j = 0; j <
goi; j++) {
related to the computation of Young representations
void Gauss_step(int *v1, int *v2, int len, int idx, int verbose_level)
void copy(int *elt_from, int *elt_to, int verbose_level)
int Gauss_echelon_form(int *A, int f_special, int f_complete, int *base_cols, int f_P, int *P, int m, int n, int Pn, int verbose_level)
void add_apply_matrix(int *A, int *B, int m, int n, int verbose_level)
void mult_matrix(int *A, int *B, int *C, int ma, int na, int nb, int verbose_level)
void make_zero_vector(int *elt, int len, int verbose_level)
void init_integer_fractions(int verbose_level)
void make_integer(int *elt, int n, int verbose_level)
void matrix_mult_apply_scalar(int *A, int *s, int m, int n, int verbose_level)
int is_zero(int *elt, int verbose_level)
void negate(int *elt, int verbose_level)
void inverse(int *elt_a, int *elt_b, int verbose_level)
int * offset(int *A, int i)
int size_of_instance_in_int
int as_int(int *elt, int verbose_level)
int is_zero_vector(int *elt, int len, int verbose_level)
void print_matrix(int *A, int m, int n)
a collection of combinatorial functions
void print_tableau(int *Tableau, int l1, int l2, int *row_parts, int *col_parts)
int perm_signum(int *perm, long int n)
void init_basic_with_Sz_in_int(int underlying_set_size, int nb_sets, int *Sz, int verbose_level)
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 init_symmetric_group(int degree, int f_no_base, int verbose_level)
void make_element(int *Elt, int *data, int verbose_level)
void element_move(void *a, void *b, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
groups::sims * create_sims_from_generators_with_target_group_order_lint(data_structures_groups::vector_ge *gens, long int target_go, int verbose_level)
to hold a vector of group elements
void allocate(int length, int verbose_level)
void print(std::ostream &ost)
void init(actions::action *A, int verbose_level)
a permutation group represented via a stabilizer chain
long int invert_by_rank(long int rk_a, int verbose_level)
long int mult_by_rank(long int rk_a, long int rk_b, int verbose_level)
void element_unrank_lint(long int rk, int *Elt, int verbose_level)
long int element_rank_lint(int *Elt)
void compute_conjugacy_classes(actions::action *&Aconj, induced_actions::action_by_conjugation *&ABC, schreier *&Sch, strong_generators *&SG, int &nb_classes, int *&class_size, int *&class_rep, int verbose_level)
long int group_order_lint()
data_structures::set_of_sets * Col_partition
groups::strong_generators * SG
void create_module(int *h_alpha, int *&Base, int *&base_cols, int &rk, int verbose_level)
ring_theory::longinteger_object go
void compute_generators(int &go1, int &go2, int verbose_level)
void group_ring_element_mult(actions::action *A, groups::sims *S, int *elt1, int *elt2, int *elt3)
long int group_ring_element_size(actions::action *A, groups::sims *S)
void Maschke(int *Rep, int dim_of_module, int dim_of_submodule, int *&Mu, int verbose_level)
void create_representation(int *Base, int *base_cols, int rk, int group_elt, int *Mtx, int verbose_level)
void init(int n, int verbose_level)
void create_representations(int *Base, int *Base_inv, int rk, int verbose_level)
void group_ring_element_print(actions::action *A, groups::sims *S, int *elt)
void group_ring_element_copy(actions::action *A, groups::sims *S, int *elt_from, int *elt_to)
induced_actions::action_by_conjugation * ABC
data_structures_groups::vector_ge * gens2
data_structures_groups::vector_ge * gens1
void young_symmetrizer(int *row_parts, int nb_row_parts, int *tableau, int *elt1, int *elt2, int *elt3, int verbose_level)
void group_ring_element_zero(actions::action *A, groups::sims *S, int *elt)
data_structures::set_of_sets * Row_partition
void group_ring_element_free(actions::action *A, groups::sims *S, int *elt)
void group_ring_element_create(actions::action *A, groups::sims *S, int *&elt)
#define Int_vec_zero(A, B)
#define Int_matrix_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