13namespace layer3_group_actions {
21 int f_v = (verbose_level >= 1);
26 cout <<
"action::induced_action_on_interior_direct_product" << endl;
34 snprintf(str1, 1000,
"_on_interior_direct_product_%ld_%d", A->
degree, nb_rows);
35 snprintf(str2, 1000,
" {\\rm OnIntDirectProduct}_{%ld,%d}", A->
degree, nb_rows);
38 A->
label.append(str1);
46 cout <<
"the old_action " <<
label
47 <<
" has base_length = " <<
base_len()
48 <<
" and degree " <<
degree << endl;
54 IDP->
init(
this, nb_rows, verbose_level);
67 cout <<
"action::induced_action_on_interior_direct_product "
68 "before init_function_pointers_induced_action" << endl;
79 cout <<
"action::induced_action_on_interior_direct_product "
80 "before allocate_element_data" << endl;
86 cout <<
"action::induced_action_on_interior_direct_product "
87 "finished, created action " << A->
label << endl;
88 cout <<
"degree=" << A->
degree << endl;
98 int partition_class_size,
101 int f_v = (verbose_level >= 1);
106 cout <<
"action::induced_action_on_set_partitions" << endl;
114 snprintf(str1, 1000,
"_on_set_partitions_%ld_%d", A->
degree, partition_class_size);
115 snprintf(str2, 1000,
" {\\rm OnSetPart}_{%ld,%d}", A->
degree, partition_class_size);
118 A->
label.append(str1);
128 cout <<
"the old_action " <<
label
129 <<
" has base_length = " <<
base_len()
130 <<
" and degree " <<
degree << endl;
136 OSP->
init(partition_class_size,
137 this, verbose_level);
149 cout <<
"action::induced_action_on_set_partitions "
150 "before init_function_pointers_induced_action" << endl;
161 cout <<
"action::induced_action_on_set_partitions "
162 "before allocate_element_data" << endl;
168 cout <<
"action::induced_action_on_set_partitions "
169 "finished, created action " << A->
label << endl;
170 cout <<
"degree=" << A->
degree << endl;
182 int f_v = (verbose_level >= 1);
183 int f_vv = (verbose_level >= 2);
188 cout <<
"action::init_action_on_lines" << endl;
197 cout <<
"action::init_action_on_lines "
198 "before Grass_lines->init" << endl;
200 Grass_lines->
init(n, 2, F, verbose_level - 2);
203 cout <<
"action::init_action_on_lines "
204 "before A_lines->init" << endl;
206 A_lines->
init(*A, Grass_lines, verbose_level - 5);
210 cout <<
"action::init_action_on_lines "
211 "action on grassmannian established" << endl;
215 cout <<
"action::init_action_on_lines "
216 "initializing A2" << endl;
221 S.
init(A, verbose_level - 2);
227 cout <<
"action::init_action_on_lines "
228 "group order " << go1 << endl;
232 cout <<
"action::init_action_on_lines "
233 "initializing action on grassmannian" << endl;
236 TRUE , &S, verbose_level);
238 cout <<
"action::init_action_on_lines "
239 "after induced_action_on_grassmannian" << endl;
246 cout <<
"action::init_action_on_lines done" << endl;
256 int f_v = (verbose_level >= 1);
261 cout <<
"action::induced_action_by_representation_on_conic "
262 "f_induce_action=" << f_induce_action << endl;
270 snprintf(str1, 1000,
"_OnConic");
271 snprintf(str2, 1000,
" {\\rm OnConic}");
281 cout <<
"the old_action " << A->
label
282 <<
" has base_length = " << A->
base_len()
283 <<
" and degree " << A->
degree << endl;
288 cout <<
"action::induced_action_by_representation_on_conic "
289 "action not of matrix group type" << endl;
317 if (f_induce_action) {
322 cout <<
"action::induced_action_by_representation_on_conic "
323 "finished, created action " <<
label << endl;
324 cout <<
"degree=" << A->
degree << endl;
337 int f_v = (verbose_level >= 1);
341 cout <<
"action::induced_action_on_cosets "
342 "f_induce_action=" << f_induce_action << endl;
359 cout <<
"the old_action is " << A->
label << endl;
366 cout <<
"action::induced_action_on_cosets "
367 "action not of linear type" << endl;
399 if (f_induce_action) {
404 cout <<
"action::induced_action_on_cosets "
405 "finished, created action " <<
label <<
" of degree=" <<
degree << endl;
417 int f_v = (verbose_level >= 1);
421 cout <<
"action::induced_action_on_factor_space "
422 "f_induce_action=" << f_induce_action << endl;
438 cout <<
"the old_action " << A->
label
439 <<
" has base_length = " << A->
base_len()
440 <<
" and degree " << A->
degree << endl;
445 cout <<
"action::induced_action_on_factor_space "
446 "action not of linear type" << endl;
447 cout <<
"the old action is:" << endl;
472 if (f_induce_action) {
477 cout <<
"action::induced_action_on_factor_space "
478 "finished, created action " <<
label << endl;
479 cout <<
"degree=" << A->
degree << endl;
486 int f_v = (verbose_level >= 1);
492 cout <<
"action::induced_action_on_grassmannian" << endl;
499 snprintf(str1, 1000,
"_Gr_%d", k);
500 snprintf(str2, 1000,
" {\\rm OnGr}_{%d}", k);
504 A->
label.append(str1);
509 cout <<
"the old_action " <<
label
510 <<
" has base_length = " <<
base_len()
511 <<
" and degree " <<
degree << endl;
516 cout <<
"action::induced_action_on_grassmannian "
517 "old action not of matrix group type" << endl;
526 Gr->
init(M->
n, k, M->
GFq, verbose_level);
527 AG->
init(*
this, Gr, verbose_level);
539 cout <<
"action::induced_action_on_grassmannian "
540 "before init_function_pointers_induced_action" << endl;
551 cout <<
"action::induced_action_on_grassmannian "
552 "before allocate_element_data" << endl;
558 cout <<
"action::induced_action_on_grassmannian "
559 "finished, created action " << A->
label << endl;
560 cout <<
"degree=" << A->
degree << endl;
574 int f_v = (verbose_level >= 1);
578 cout <<
"action::induced_action_on_grassmannian "
579 "f_induce_action=" << f_induce_action << endl;
585 snprintf(str1, 1000,
"_Gr_%d_%d", AG->
n, AG->
k);
586 snprintf(str2, 1000,
" {\\rm OnGr}_{%d,%d}", AG->
n, AG->
k);
595 cout <<
"action::induced_action_on_grassmannian "
596 "the old_action " << A->
label
597 <<
" has base_length = " << A->
base_len()
598 <<
" and degree " << A->
degree << endl;
602 cout <<
"action::induced_action_on_grassmannian "
603 "before subaction = A" << endl;
607 cout <<
"action::induced_action_on_grassmannian "
608 "action not of linear type" << endl;
613 cout <<
"action::induced_action_on_grassmannian "
614 "action is of linear type" << endl;
627 cout <<
"action::induced_action_on_grassmannian "
628 "before init_function_pointers_induced_action" << endl;
633 cout <<
"action::induced_action_on_grassmannian "
634 "after init_function_pointers_induced_action" << endl;
643 cout <<
"action::induced_action_on_grassmannian "
644 "before allocate_element_data" << endl;
648 cout <<
"action::induced_action_on_grassmannian "
649 "after allocate_element_data" << endl;
652 if (f_induce_action) {
654 cout <<
"action::induced_action_on_grassmannian "
655 "before induced_action_override_sims" << endl;
659 cout <<
"action::induced_action_on_grassmannian "
660 "after induced_action_override_sims" << endl;
665 cout <<
"action::induced_action_on_grassmannian finished, "
666 "created action " <<
label << endl;
667 cout <<
"action::induced_action_on_grassmannian "
668 "degree=" <<
degree << endl;
669 cout <<
"action::induced_action_on_grassmannian "
671 cout <<
"action::induced_action_on_grassmannian "
674 cout <<
"action::induced_action_on_grassmannian finished, "
675 "after print_info()" << endl;
678 cout <<
"action::induced_action_on_grassmannian done" << endl;
687 int f_v = (verbose_level >= 1);
691 cout <<
"action::induced_action_on_spread_set "
692 "f_induce_action=" << f_induce_action << endl;
698 snprintf(str1, 1000,
"_SpreadSet_%d_%d", AS->
k, AS->
q);
699 snprintf(str2, 1000,
" {\\rm OnSpreadSet %d,%d}", AS->
k, AS->
q);
709 cout <<
"the old_action " << A->
label
710 <<
" has base_length = " << A->
base_len()
711 <<
" and degree " << A->
degree << endl;
716 cout <<
"action::induced_action_on_spread_set "
717 "action not of linear type" << endl;
744 if (f_induce_action) {
750 cout <<
"action::induced_action_on_spread_set finished, "
751 "created action " <<
label << endl;
752 cout <<
"degree=" <<
degree << endl;
764 int f_v = (verbose_level >= 1);
768 cout <<
"action::induced_action_on_orthogonal "
769 "f_induce_action=" << f_induce_action << endl;
777 snprintf(str1, 1000,
"_Opts_%d_%d_%d", AO->
O->
epsilon, AO->
O->
n, AO->
O->
q);
778 snprintf(str2, 1000,
" {\\rm OnOpts %d,%d,%d}", AO->
O->
epsilon, AO->
O->
n, AO->
O->
q);
781 snprintf(str1, 1000,
"_Olines_%d_%d_%d", AO->
O->
epsilon, AO->
O->
n, AO->
O->
q);
782 snprintf(str2, 1000,
" {\\rm OnOlines %d,%d,%d}", AO->
O->
epsilon, AO->
O->
n, AO->
O->
q);
785 snprintf(str1, 1000,
"_Optslines_%d_%d_%d", AO->
O->
epsilon, AO->
O->
n, AO->
O->
q);
786 snprintf(str2, 1000,
" {\\rm OnOptslines %d,%d,%d}", AO->
O->
epsilon, AO->
O->
n, AO->
O->
q);
799 cout <<
"the old_action " << A->
label
800 <<
" has base_length = " << A->
base_len()
801 <<
" and degree " << A->
degree << endl;
806 cout <<
"action::induced_action_on_orthogonal "
807 "action not of linear type" << endl;
830 if (f_induce_action) {
835 cout <<
"action::induced_action_on_orthogonal "
836 "finished, created action " <<
label << endl;
837 cout <<
"degree=" <<
degree << endl;
847 int f_v = (verbose_level >= 1);
852 cout <<
"action::induced_action_on_wedge_product" << endl;
859 snprintf(str1, 1000,
"_Wedge");
860 snprintf(str2, 1000,
" {\\rm OnWedge}");
864 A->
label.append(str1);
869 cout <<
"the old_action " <<
label
870 <<
" has base_length = " <<
base_len()
871 <<
" and degree " <<
degree << endl;
876 cout <<
"action::induced_action_on_wedge_product "
877 "old action not of matrix group type" << endl;
890 cout <<
"action::induced_action_on_wedge_product before AW->init" << endl;
892 AW->
init(*
this, verbose_level);
894 cout <<
"action::induced_action_on_wedge_product after AW->init" << endl;
908 cout <<
"action::induced_action_on_wedge_product "
909 "before init_function_pointers_induced_action" << endl;
923 cout <<
"action::induced_action_on_wedge_product "
924 "before allocate_element_data" << endl;
930 cout <<
"action::induced_action_on_wedge_product "
931 "finished, created action " << A->
label << endl;
932 cout <<
"degree=" << A->
degree << endl;
942 action_on_wedge_product *AW,
943 int f_induce_action, sims *old_G,
946 int f_v = (verbose_level >= 1);
950 cout <<
"action::induced_action_on_wedge_product "
951 "f_induce_action=" << f_induce_action << endl;
958 snprintf(str1, 1000,
"_Wedge");
959 snprintf(str2, 1000,
" {\\rm OnWedge}");
969 cout <<
"the old_action " << A->
label
970 <<
" has base_length = " << A->
base_len()
971 <<
" and degree " << A->
degree << endl;
976 cout <<
"action::induced_action_on_wedge_product "
977 "action not of matrix group type" << endl;
1003 if (f_induce_action) {
1008 cout <<
"action::induced_action_on_wedge_product "
1009 "finished, created action " <<
label << endl;
1010 cout <<
"degree=" << A->
degree << endl;
1023 int f_v = (verbose_level >= 1);
1027 cout <<
"action::induced_action_by_subfield_structure "
1028 "f_induce_action=" << f_induce_action << endl;
1035 snprintf(str1, 1000,
"_subfield_%d", SubfieldStructure->
q);
1036 snprintf(str2, 1000,
" {\\rm OnSubfield F%d}", SubfieldStructure->
q);
1045 cout <<
"the old_action " << A->
label
1046 <<
" has base_length = " << A->
base_len()
1047 <<
" and degree " << A->
degree << endl;
1052 cout <<
"action::induced_action_by_subfield_structure "
1053 "action not of matrix group type" << endl;
1079 if (f_induce_action) {
1085 cout <<
"action::induced_action_by_subfield_structure "
1086 "finished, created action " <<
label << endl;
1087 cout <<
"degree=" << A->
degree << endl;
1098 int f_v = (verbose_level >= 1);
1104 cout <<
"action::induced_action_on_Galois_group" << endl;
1111 snprintf(str1, 1000,
"_gal");
1112 snprintf(str2, 1000,
" {\\rm OnGal}");
1120 cout <<
"the old_action " << A->
label
1121 <<
" has base_length = " << A->
base_len()
1122 <<
" and degree " << A->
degree << endl;
1127 cout <<
"action::induced_action_on_Galois_group "
1128 "action not of matrix group type" << endl;
1133 AG->
init(A, M->
n, verbose_level);
1157 cout <<
"action::induced_action_on_Galois_group before induced_action_override_sims" << endl;
1161 cout <<
"action::induced_action_on_Galois_group "
1162 "finished, created action " <<
label << endl;
1170 int f_v = (verbose_level >= 1);
1176 cout <<
"action::induced_action_on_determinant" << endl;
1183 snprintf(str1, 1000,
"_det");
1184 snprintf(str2, 1000,
" {\\rm OnDet}");
1193 cout <<
"the old_action " << A->
label
1194 <<
" has base_length = " << A->
base_len()
1195 <<
" and degree " << A->
degree << endl;
1200 cout <<
"action::induced_action_on_determinant "
1201 "action not of matrix group type" << endl;
1231 cout <<
"action::induced_action_on_determinant "
1232 "finished, created action " <<
label << endl;
1240 int f_v = (verbose_level >= 1);
1245 cout <<
"action::induced_action_on_sign" << endl;
1252 snprintf(str1, 1000,
"_OnSign");
1253 snprintf(str2, 1000,
" {\\rm OnSign}");
1262 cout <<
"the old_action " << A->
label
1263 <<
" has base_length = " << A->
base_len()
1264 <<
" and degree " << A->
degree << endl;
1269 OnSign->
init(A, verbose_level);
1294 cout <<
"action::induced_action_on_sign finished, "
1295 "created action " <<
label << endl;
1304 int f_v = (verbose_level >= 1);
1308 cout <<
"action::create_induced_action_by_conjugation" << endl;
1312 cout <<
"action::create_induced_action_by_conjugation "
1313 "before A->induced_action_on_sets" << endl;
1316 Base_group, f_ownership,
FALSE ,
1319 cout <<
"action::create_induced_action_by_conjugation "
1320 "after A->induced_action_by_conjugation" << endl;
1323 cout <<
"action::create_induced_action_by_conjugation done" << endl;
1330 int f_basis,
int verbose_level)
1332 int f_v = (verbose_level >= 1);
1340 cout <<
"action::induced_action_by_conjugation" << endl;
1341 cout <<
"the old_action " << A->
label
1342 <<
" has base_length = " << A->
base_len()
1343 <<
" and degree " << A->
degree << endl;
1348 cout <<
"we are acting on a group of order " << goi << endl;
1355 snprintf(str1, 1000,
"_C%ld", goi);
1356 snprintf(str2, 1000,
" {\\rm ByConj%ld}", goi);
1368 ABC->
init(Base_group, f_ownership, verbose_level);
1393 cout <<
"action::induced_action_by_conjugation "
1394 "calling induced_action_override_sims" << endl;
1399 cout <<
"action::induced_action_by_conjugation "
1400 "finished, created action " <<
label << endl;
1407 groups::sims *Base_group,
int f_ownership,
int verbose_level)
1409 int f_v = (verbose_level >= 1);
1417 cout <<
"action::induced_action_by_right_multiplication" << endl;
1418 cout <<
"the old_action " << A->
label
1419 <<
" has base_length = " << A->
base_len()
1420 <<
" and degree " << A->
degree << endl;
1428 snprintf(str1, 1000,
"_R%d", goi);
1429 snprintf(str2, 1000,
" {\\rm RightMult%d}", goi);
1438 cout <<
"we are acting on a group of order " << goi << endl;
1443 ABRM->
init(Base_group, f_ownership, verbose_level);
1470 cout <<
"action::induced_action_by_right_multiplication "
1471 "finished, created action " <<
label << endl;
1477 int nb_sets,
int set_size,
long int *sets,
1480 int f_v = (verbose_level >= 1);
1484 cout <<
"action::create_induced_action_on_sets" << endl;
1488 cout <<
"action::create_induced_action_on_sets "
1489 "before A->induced_action_on_sets" << endl;
1492 nb_sets, set_size, sets,
1493 FALSE , verbose_level);
1495 cout <<
"action::create_induced_action_on_sets "
1496 "after A->induced_action_on_sets" << endl;
1499 cout <<
"action::create_induced_action_on_sets done" << endl;
1507 int nb_sets,
int set_size,
long int *sets,
1508 int f_induce_action,
int verbose_level)
1510 int f_v = (verbose_level >= 1);
1514 cout <<
"action::induced_action_on_sets" << endl;
1515 cout <<
"action::induced_action_on_sets "
1516 "f_induce_action=" << f_induce_action << endl;
1518 cout <<
"action::induced_action_on_sets "
1519 "the old_action " << old_action.
label
1521 <<
" has degree " << old_action.
degree << endl;
1523 cout <<
"action::induced_action_on_sets "
1524 "verbose_level = " << verbose_level << endl;
1529 snprintf(str1, 1000,
"_S%d", set_size);
1530 snprintf(str2, 1000,
" {\\rm S%d}", set_size);
1541 cout <<
"action::induced_action_on_sets "
1542 "allocating action_on_sets" << endl;
1546 cout <<
"action::induced_action_on_sets before AOS->init" << endl;
1548 AOS->
init(nb_sets, set_size, sets, verbose_level - 1);
1550 cout <<
"action::induced_action_on_sets after AOS->init" << endl;
1565 cout <<
"action::induced_action_on_sets "
1566 "calling allocate_base_data" << endl;
1578 if (f_induce_action) {
1580 cout <<
"action::induced_action_on_sets "
1581 "calling induced_action_override_sims" << endl;
1584 old_G, verbose_level );
1586 cout <<
"action::induced_action_on_sets "
1587 "induced_action_override_sims done" << endl;
1591 cout <<
"action::induced_action_on_sets finished, "
1592 "created action " <<
label << endl;
1603 int f_v = (verbose_level >= 1);
1607 cout <<
"action::create_induced_action_on_subgroups" << endl;
1614 cout <<
"action::create_induced_action_on_subgroups done" << endl;
1625 int f_v = (verbose_level >= 1);
1629 cout <<
"action::induced_action_on_subgroups" << endl;
1630 cout <<
"action::induced_action_on_sets "
1631 "the old_action " << old_action->
label
1632 <<
" has base_length = " << old_action->
base_len()
1633 <<
" and degree " << old_action->
degree << endl;
1634 cout <<
"action::induced_action_on_subgroups "
1635 "verbose_level = " << verbose_level << endl;
1640 snprintf(str1, 1000,
"_on_subgroups%d_%d", nb_subgroups,
group_order);
1641 snprintf(str2, 1000,
" {\\rm OnSubgroups%d,%d}", nb_subgroups,
group_order);
1651 cout <<
"action::induced_action_on_subgroups "
1652 "allocating action_on_subgroups" << endl;
1655 AOS->
init(old_action, S, nb_subgroups,
1658 cout <<
"action::induced_action_on_subgroups "
1659 "after action_on_subgroups init" << endl;
1674 cout <<
"action::induced_action_on_subgroups "
1675 "calling allocate_base_data" << endl;
1688 cout <<
"action::induced_action_on_subgroups "
1689 "finished, created action " <<
label << endl;
1700 int pt,
int verbose_level)
1702 int f_v = (verbose_level >= 1);
1706 cout <<
"action::induced_action_by_restriction_on_orbit_with_schreier_vector" << endl;
1707 cout <<
"old_action ";
1709 cout <<
"pt = " << pt << endl;
1710 cout <<
"f_induce_action = " << f_induce_action << endl;
1711 cout <<
"verbose_level = " << verbose_level << endl;
1717 snprintf(str1, 1000,
"_res_sv%d", pt);
1718 snprintf(str2, 1000,
" {\\rm res sv%d}", pt);
1730 cout <<
"action::induced_action_by_restriction_on_orbit_with_schreier_vector "
1731 "before ABR->init_single_orbit_from_schreier_vector" << endl;
1735 cout <<
"action::induced_action_by_restriction_on_orbit_with_schreier_vector "
1736 "after ABR->init_single_orbit_from_schreier_vector" << endl;
1752 cout <<
"action::induced_action_by_restriction_on_orbit_with_schreier_vector "
1753 "calling allocate_base_data" << endl;
1765 if (f_induce_action) {
1767 cout <<
"action::induced_action_by_restriction_on_orbit_with_schreier_vector "
1768 "calling induced_action_override_sims" << endl;
1773 cout <<
"action::induced_action_by_restriction_on_orbit_with_schreier_vector "
1774 "finished, created action " <<
label << endl;
1782 long int *&original_points,
int verbose_level)
1784 int f_v = (verbose_level >= 1);
1787 cout <<
"action::original_point_labels" << endl;
1792 original_points =
NEW_lint(nb_points);
1800 for (i = 0; i < nb_points; i++) {
1803 original_points[i] = b;
1807 cout <<
"action::original_point_labels type must be action_by_restriction_t" << endl;
1814 long int *points,
int nb_points,
int verbose_level)
1816 int f_v = (verbose_level >= 1);
1821 cout <<
"action::restricted_action" << endl;
1822 cout <<
"old_action ";
1824 cout <<
"nb_points = " << nb_points << endl;
1825 cout <<
"verbose_level = " << verbose_level << endl;
1831 snprintf(str1, 1000,
"_res%d", nb_points);
1832 snprintf(str2, 1000,
" {\\rm res%d}", nb_points);
1836 A->
label.append(str1);
1843 ABR->
init(nb_points, points, verbose_level);
1857 cout <<
"action::restricted_action "
1858 "calling allocate_base_data" << endl;
1871 cout <<
"action::restricted_action finished, "
1872 "created action " << A->
label << endl;
1879 groups::sims *S,
int size,
long int *set,
int f_induce,
1882 int f_v = (verbose_level >= 1);
1886 cout <<
"action::create_induced_action_by_restriction" << endl;
1890 f_induce, S, size, set, verbose_level - 1);
1892 cout <<
"action::create_induced_action_by_restriction done" << endl;
1900 int nb_points,
long int *points,
int verbose_level)
1903 int f_v = (verbose_level >= 1);
1907 cout <<
"action::induced_action_by_restriction_internal_function" << endl;
1908 cout <<
"old_action ";
1910 cout <<
"nb_points = " << nb_points << endl;
1911 cout <<
"f_induce_action = " << f_induce_action << endl;
1912 cout <<
"verbose_level = " << verbose_level << endl;
1918 snprintf(str1, 1000,
"_res%d", nb_points);
1919 snprintf(str2, 1000,
" {\\rm res%d}", nb_points);
1930 ABR->
init(nb_points, points, verbose_level);
1944 cout <<
"action::induced_action_by_restriction_internal_function "
1945 "calling allocate_base_data" << endl;
1957 if (f_induce_action) {
1959 cout <<
"action::induced_action_by_restriction_internal_function "
1960 "calling induced_action_override_sims" << endl;
1963 old_G, verbose_level - 2);
1966 cout <<
"action::induced_action_by_restriction_internal_function "
1967 "finished, created action " <<
label << endl;
1978 int f_v = (verbose_level >= 1);
1982 cout <<
"action::induced_action_on_pairs" << endl;
1983 cout <<
"the old_action " << old_action.
label
1984 <<
" has base_length = " << old_action.
base_len()
1985 <<
" and degree " << old_action.
degree << endl;
1990 snprintf(str1, 1000,
"_on_pairs");
1991 snprintf(str2, 1000,
" {\\rm OnPairs}");
2021 old_G, verbose_level - 2);
2023 cout <<
"action::induced_action_on_pairs "
2024 "finished, created action " <<
label << endl;
2031 int f_v = (verbose_level >= 1);
2035 cout <<
"action::create_induced_action_on_ordered_pairs" << endl;
2041 cout <<
"action::create_induced_action_on_ordered_pairs done" << endl;
2051 int f_v = (verbose_level >= 1);
2054 cout <<
"action::induced_action_on_ordered_pairs" << endl;
2055 cout <<
"the old_action " << old_action.
label
2056 <<
" has base_length = " << old_action.
base_len()
2057 <<
" and degree " << old_action.
degree << endl;
2062 snprintf(str1, 1000,
"_on_ordered_pairs");
2063 snprintf(str2, 1000,
" {\\rm OnOrderedPairs}");
2094 old_G, verbose_level - 2);
2097 cout <<
"action::induced_action_on_ordered_pairs "
2098 "finished, created action " <<
label << endl;
2104 action &old_action,
int k,
2107 int f_v = (verbose_level >= 1);
2111 cout <<
"action::induced_action_on_k_subsets" << endl;
2112 cout <<
"the old_action " << old_action.
label
2114 <<
" has degree " << old_action.
degree << endl;
2118 snprintf(str1, 1000,
"_on_%d_subsets",k);
2119 snprintf(str2, 1000,
"^{[%d]}", k);
2127 On_k_subsets->
init(&old_action, k, verbose_level);
2154 cout <<
"action::induced_action_on_k_subsets "
2155 "finished, created action " <<
label << endl;
2164 int f_v = (verbose_level >= 1);
2168 cout <<
"action::induced_action_on_orbits" << endl;
2169 cout <<
"the old_action " << old_action->
label
2170 <<
" has base_length = " << old_action->
base_len()
2171 <<
" and degree " << old_action->
degree << endl;
2177 snprintf(str1, 1000,
"_on_orbits_%d", Sch->
nb_orbits);
2178 snprintf(str2, 1000,
" {\\rm OnOrbits}_{%d}", Sch->
nb_orbits);
2187 On_orbits->
init(old_action, Sch, f_play_it_safe, verbose_level);
2214 cout <<
"action::induced_action_on_orbits "
2215 "finished, created action " <<
label << endl;
2221 int *type,
int type_len,
2224 int f_v = (verbose_level >= 1);
2228 cout <<
"action::induced_action_on_flags" << endl;
2229 cout <<
"the old_action " << old_action->
label
2230 <<
" has base_length = " << old_action->
base_len()
2231 <<
" and degree " << old_action->
degree << endl;
2237 snprintf(str1, 1000,
"_on_flags");
2238 snprintf(str2, 1000,
" {\\rm OnFlags}");
2247 On_flags->
init(old_action, type,
2248 type_len, verbose_level);
2275 cout <<
"action::induced_action_on_flags "
2276 "finished, created action " <<
label << endl;
2285 int f_v = (verbose_level >= 1);
2289 cout <<
"action::induced_action_on_bricks" << endl;
2290 cout <<
"the old_action " << old_action.
label
2291 <<
" has base_length = " << old_action.
base_len()
2292 <<
" and degree " << old_action.
degree << endl;
2297 snprintf(str1, 1000,
"_on_bricks");
2298 snprintf(str2, 1000,
" {\\rm OnBricks}");
2307 On_bricks->
init(&old_action, B, f_linear_action, verbose_level);
2335 cout <<
"action::induced_action_on_bricks finished, "
2336 "created action " <<
label << endl;
2345 int f_v = (verbose_level >= 1);
2349 cout <<
"action::induced_action_on_andre" << endl;
2350 cout <<
"action An = " << An->
label
2351 <<
" has degree " << An->
degree << endl;
2352 cout <<
"action An1 = " << An1->
label
2353 <<
" has degree " << An1->
degree << endl;
2358 snprintf(str1, 1000,
"_on_andre");
2359 snprintf(str2, 1000,
" {\\rm OnAndre}");
2367 On_andre->
init(An, An1, Andre, verbose_level);
2394 cout <<
"action::induced_action_on_andre "
2395 "finished, created action " <<
label << endl;
2401 int f_use_projections,
int verbose_level)
2403 int f_v = (verbose_level >= 1);
2404 int f_vv = (verbose_level >= 2);
2409 cout <<
"action::setup_product_action" << endl;
2414 snprintf(str1, 1000,
"_product_action");
2415 snprintf(str2, 1000,
" {\\rm ProductAction}");
2428 PA->
init(A1, A2, f_use_projections, verbose_level);
2459 if (f_use_projections) {
2460 for (i = 0; i < A1->
base_len(); i++) {
2463 for (i = 0; i < A2->
base_len(); i++) {
2468 for (i = 0; i < A1->
base_len(); i++) {
2471 for (i = 0; i < A2->
base_len(); i++) {
2478 cout <<
"base_len=" <<
base_len() << endl;
2481 cout <<
"action::setup_product_action finished" << endl;
2493 int f_v = (verbose_level >= 1);
2498 cout <<
"action::induced_action_on_homogeneous_polynomials "
2499 "f_induce_action=" << f_induce_action << endl;
2516 cout <<
"the old_action " << A->
label
2517 <<
" has base_length = " << A->
base_len()
2518 <<
" and degree " << A->
degree << endl;
2523 cout <<
"action::induced_action_on_homogeneous_polynomials "
2524 "action not of matrix group type" << endl;
2529 cout <<
"action::induced_action_on_homogeneous_polynomials "
2530 "before OnHP->init" << endl;
2532 OnHP->
init(A, HPD, verbose_level);
2534 cout <<
"action::induced_action_on_homogeneous_polynomials "
2535 "after OnHP->init" << endl;
2560 if (f_induce_action) {
2565 cout <<
"action::induced_action_on_homogeneous_polynomials "
2566 "finished, created action " <<
label << endl;
2567 cout <<
"degree=" << A->
degree << endl;
2577 int *Equations,
int nb_equations,
2581 int f_v = (verbose_level >= 1);
2586 cout <<
"action::induced_action_on_homogeneous_"
2587 "polynomials_given_by_equations "
2588 "f_induce_action=" << f_induce_action << endl;
2595 snprintf(str1, 1000,
"_on_homog_poly_%d_%d_eqn%d", HPD->
nb_variables, HPD->
degree, nb_equations);
2596 snprintf(str2, 1000,
" {\\rm OnHomPolyEqn}_{%d,%d%d}", HPD->
nb_variables, HPD->
degree, nb_equations);
2605 cout <<
"the old_action " << A->
label
2606 <<
" has base_length = " << A->
base_len()
2607 <<
" and degree " << A->
degree << endl;
2612 cout <<
"action::induced_action_on_homogeneous_"
2613 "polynomials_given_by_equations "
2614 "action not of matrix group type" << endl;
2619 cout <<
"action::induced_action_on_homogeneous_"
2620 "polynomials_given_by_equations "
2621 "before OnHP->init" << endl;
2623 OnHP->
init(A, HPD, verbose_level);
2625 cout <<
"action::induced_action_on_homogeneous_"
2626 "polynomials_given_by_equations "
2627 "after OnHP->init" << endl;
2631 cout <<
"action::induced_action_on_homogeneous_"
2632 "polynomials_given_by_equations "
2633 "before OnHP->init_invariant_set_of_equations" << endl;
2636 Equations, nb_equations, verbose_level);
2638 cout <<
"action::induced_action_on_homogeneous_"
2639 "polynomials_given_by_equations "
2640 "after OnHP->init_invariant_set_of_equations" << endl;
2665 if (f_induce_action) {
2671 cout <<
"action::induced_action_on_homogeneous_"
2672 "polynomials_given_by_equations "
2673 "finished, created action " <<
label << endl;
2674 cout <<
"degree=" << A->
degree << endl;
2690 cout <<
"action::induced_action_recycle_sims: "
2691 "old action must have sims" << endl;
2694 old_G = old_action.
Sims;
2695 induce(&old_action, old_G,
2704 int f_v = (verbose_level >= 1);
2707 cout <<
"action::induced_action_override_sims before induce" << endl;
2709 induce(&old_action, old_G,
2713 cout <<
"action::induced_action_override_sims done" << endl;
2718 int base_of_choice_len,
long int *base_of_choice,
2724 int f_v = (verbose_level >= 1);
2725 int f_vv = (verbose_level >= 2);
2733 int b, i, old_base_len;
2737 cout <<
"action::induce verbose_level=" << verbose_level << endl;
2740 cout <<
"inducing from action:" << endl;
2742 cout <<
"the old group is in action:" << endl;
2748 cout <<
"action::induce has subaction" << endl;
2752 cout <<
"subaction is ";
2758 cout <<
"action::induce does not have subaction" << endl;
2766 cout <<
"action::induce" << endl;
2767 cout <<
"from old action " << old_action->
label << endl;
2769 cout <<
"target order = " << go << endl;
2770 cout <<
"old_action order = " << go1 << endl;
2771 cout <<
"subaction order = " << go2 << endl;
2772 cout <<
"degree = " << old_action->
degree << endl;
2774 cout <<
"base_length = " << old_action->
base_len() << endl;
2776 if (base_of_choice_len) {
2777 cout <<
"base of choice:" << endl;
2782 cout <<
"no base of choice" << endl;
2789 cout <<
"action::induce: before G->init_without_base(this);" << endl;
2791 G->init_without_base(
this, verbose_level - 2);
2793 cout <<
"action::induce: after G->init_without_base(this);" << endl;
2797 if (base_of_choice_len) {
2799 cout <<
"action::induce: initializing base of choice" << endl;
2801 for (i = 0; i < base_of_choice_len; i++) {
2802 b = base_of_choice[i];
2804 cout << i <<
"-th base point is " << b << endl;
2808 G->reallocate_base(old_base_len, verbose_level - 2);
2811 cout <<
"action::induce initializing base of choice finished"
2820 if (fallback_action->
base_len() == 0) {
2822 cout <<
"WARNING: action::induce fallback_action->base_len == 0"
2824 cout <<
"fallback_action=" << fallback_action->
label << endl;
2826 cout <<
"old_action=" << old_action->
label << endl;
2827 cout <<
"old_G->A=" << old_G->
A->
label << endl;
2829 fallback_action = old_G->
A;
2831 cout <<
"changing fallback action to " << fallback_action->
label
2836 cout <<
"action::induce: before K->init" << endl;
2838 K->
init(fallback_action, verbose_level - 2);
2840 cout <<
"action::induce: after K->init" << endl;
2844 cout <<
"action::induce before G->init_trivial_group" << endl;
2847 G->init_trivial_group(verbose_level - 2);
2850 cout <<
"action::induce before K->init_trivial_group" << endl;
2854 cout <<
"action::induce "
2855 "after init_trivial_group" << endl;
2856 cout <<
"action::induce "
2857 "before G->build_up_group_random_process" << endl;
2860 G->build_up_group_random_process(K, old_G, go,
2865 cout <<
"action::induce "
2866 "after G->build_up_group_random_process" << endl;
2869 G->group_order(G_order);
2872 cout <<
"action::induce: ";
2873 cout <<
"found a group in action " <<
G->A->label
2874 <<
" of order " << G_order <<
" ";
2875 cout <<
"transversal lengths:" << endl;
2876 for (
int t = 0; t <
G->A->base_len(); t++) {
2877 cout <<
G->get_orbit_length(t) <<
", ";
2882 cout <<
"kernel in action " << K->
A->
label
2883 <<
" of order " << K_order <<
" ";
2884 cout <<
"transversal lengths:" << endl;
2885 for (
int t = 0; t <
G->A->base_len(); t++) {
2891 D.
mult(G_order, K_order, go3);
2892 if (D.
compare(go3, go) != 0) {
2893 cout <<
"action::induce group orders do not match: "
2894 << go3 <<
" != " << go << endl;
2898 cout <<
"action::induce product of group orders equals "
2899 "old group order" << endl;
2902 cout <<
"action::induce before init_sims_only" << endl;
2910 cout <<
"action::induce after init_sims, "
2911 "calling compute_strong_generators_from_sims" << endl;
2915 cout <<
"action::induce done" << endl;
2926 int f_v = (verbose_level >= 1);
2929 int i, lmp, old_base_len;
2932 cout <<
"action::lex_least_base_in_place action "
2933 <<
label <<
" base=";
2953 cout <<
"action::lex_least_base_in_place "
2954 "i=" << i <<
" computing the least moved point" << endl;
2958 cout <<
"action::lex_least_base_in_place "
2959 "i=" << i <<
" the least moved point is " << lmp << endl;
2961 if (lmp >= 0 && lmp <
base_i(i)) {
2963 cout <<
"action::lex_least_base_in_place "
2964 "i=" << i <<
" least moved point = " << lmp
2965 <<
" less than base point " <<
base_i(i) << endl;
2966 cout <<
"doing a base change:" << endl;
2971 cout <<
"action::lex_least_base_in_place "
2972 "after base_change_in_place: action:" << endl;
2978 cout <<
"action::lex_least_base_in_place "
2979 "done, action " <<
label <<
" base=";
2985 int f_changed =
FALSE;
2992 if (old_base[i] !=
base_i(i)) {
2999 cout <<
"The base has changed !!!" << endl;
3000 cout <<
"old base: ";
3003 cout <<
"new base: ";
3014 int f_v = (verbose_level >= 1);
3020 cout <<
"action::lex_least_base action "
3021 << old_action->
label <<
" base=";
3027 cout <<
"action::lex_least_base fatal: does not have sims" << endl;
3044 cout <<
"action::lex_least_base does not have Sims" << endl;
3048 for (i = 0; i < old_A->
base_len(); i++) {
3049 set[i] = old_A->
base_i(i);
3051 cout <<
"action::lex_least_base "
3052 "calling least_moved_point_at_level " << i << endl;
3055 if (lmp < old_A->
base_i(i)) {
3057 cout <<
"action::lex_least_base least moved point = " << lmp
3058 <<
" less than base point " << old_A->
base_i(i) << endl;
3059 cout <<
"doing a base change:" << endl;
3063 A->
base_change(old_A, i + 1, set, verbose_level - 2);
3068 old_A->
get_base(), verbose_level - 1);
3071 cout <<
"action::lex_least_base action " <<
label <<
" base=";
3079 int f_v = (verbose_level >= 1);
3084 cout <<
"action::test_if_lex_least_base:" << endl;
3094 cout <<
"action::test_if_lex_least_base "
3095 "returns FALSE" << endl;
3096 cout <<
"base[i]=" <<
base_i(i) << endl;
3097 cout <<
"AA->base[i]=" << AA->
base_i(i) << endl;
3109 int f_v = (verbose_level >= 1);
3110 int f_v5 = (verbose_level >= 5);
3115 cout <<
"action::base_change_in_place" << endl;
3120 cout <<
"action::base_change_in_place after base_change" << endl;
3124 cout <<
"action::base_change_in_place after free_base_data" << endl;
3130 cout <<
"action::base_change_in_place after allocate_base_data"
3134 for (i = 0; i < A->
base_len(); i++) {
3138 cout <<
"action::base_change_in_place after copying base" << endl;
3148 cout <<
"action::base_change_in_place "
3149 "after changing action pointer in A->Sims" << endl;
3154 cout <<
"action::base_change_in_place "
3155 "before FREE_OBJECT Sims" << endl;
3156 cout <<
"Sims=" <<
Sims << endl;
3160 cout <<
"action::base_change_in_place "
3161 "after FREE_OBJECT Sims" << endl;
3168 cout <<
"action::base_change_in_place after deleting sims" << endl;
3172 cout <<
"action::base_change_in_place before init_sims_only" << endl;
3176 cout <<
"action::base_change_in_place after init_sims_only" << endl;
3189 cout <<
"action::base_change_in_place before FREE_OBJECT(A)" << endl;
3193 cout <<
"action::base_change_in_place after FREE_OBJECT(A)" << endl;
3199 cout <<
"action::base_change_in_place finished, created action"
3210 int size,
long int *set,
int verbose_level)
3212 int f_v = (verbose_level >= 1);
3216 cout <<
"action::base_change to the following set:" << endl;
3221 cout <<
"action::base_change old_action does not have sims" << endl;
3250 cout <<
"action::base_change calling induce" << endl;
3259 snprintf(str1, 1000,
"_base_change");
3260 snprintf(str2, 1000,
" {\\rm BaseChange}");
3273 cout <<
"action::base_change finished" << endl;
3274 cout <<
"induced action has order " << go << endl;
3275 cout <<
"kernel has order " << K_go << endl;
3288 action *&A_by_restriction,
3290 int size,
long int *set,
3293 int f_v = (verbose_level >= 1);
3294 int f_induce =
FALSE;
3297 cout <<
"action::create_orbits_on_subset_using_restricted_action" << endl;
3307 S->
gens, verbose_level - 2);
3309 cout <<
"action::create_orbits_on_subset_using_restricted_action "
3317 int nb_sets,
int set_size,
long int *sets,
3320 int f_v = (verbose_level >= 1);
3324 cout <<
"action::create_orbits_on_sets_using_action_on_sets" << endl;
3328 nb_sets, set_size, sets,
3335 cout <<
"action::create_orbits_on_sets_using_action_on_sets "
3344 int *Elt,
int verbose_level)
3346 int f_v = (verbose_level >= 1);
3350 cout <<
"action::choose_next_base_point_default_method" << endl;
3351 cout <<
"calling A->find_non_fixed_point" << endl;
3356 cout <<
"action::choose_next_base_point_default_method "
3357 "cannot find another base point" << endl;
3362 cout <<
"action::choose_next_base_point_default_method current base: ";
3364 cout <<
" choosing next base point to be " << b << endl;
3375 int f_v = (verbose_level >= 1);
3378 cout <<
"action::generators_to_strong_generators" << endl;
3380 cout <<
"action::generators_to_strong_generators "
3381 "trying to create a group of order " << target_go << endl;
3388 cout <<
"action::generators_to_strong_generators "
3389 "before create_sims_from_generators_randomized" << endl;
3394 target_go, verbose_level - 2);
3397 cout <<
"action::generators_to_strong_generators "
3398 "after create_sims_from_generators_randomized" << endl;
3403 cout <<
"action::generators_to_strong_generators "
3404 "before Strong_gens->init_from_sims" << endl;
3411 cout <<
"action::generators_to_strong_generators done" << endl;
3420 int f_v = (verbose_level >= 1);
3423 cout <<
"action::orbits_on_equations" << endl;
3429 cout <<
"action::orbits_on_equations "
3430 "creating the induced action on the equations:" << endl;
3435 The_equations, nb_equations,
3439 cout <<
"action::orbits_on_equations "
3440 "The induced action on the equations has been created, "
3441 "degree = " << A_on_equations->
degree << endl;
3445 cout <<
"action::orbits_on_equations "
3446 "computing orbits on the equations:" << endl;
3452 cout <<
"action::orbits_on_equations "
3454 <<
" orbits on the equations:" << endl;
3459 cout <<
"action::orbits_on_equations done" << endl;
a collection of combinatorial functions
long int int_n_choose_k(int n, int k)
Andre / Bruck / Bose construction of a translation plane from a spread.
to rank and unrank subspaces of a fixed dimension in F_q^n
void init(int n, int k, field_theory::finite_field *F, int verbose_level)
homogeneous polynomials of a given degree in a given number of variables over a finite field GF(q)
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
interface to the implementation functions for group actions
void init_function_pointers_induced_action()
a permutation group in a fixed action.
action * induced_action_on_interior_direct_product(int nb_rows, int verbose_level)
int *& get_transversal_length()
void create_orbits_on_subset_using_restricted_action(action *&A_by_restriction, groups::schreier *&Orbits, groups::sims *S, int size, long int *set, int verbose_level)
void lex_least_base(action *old_action, int verbose_level)
action * induced_action_on_set_partitions(int partition_class_size, int verbose_level)
action * restricted_action(long int *points, int nb_points, int verbose_level)
void compute_all_point_orbits(groups::schreier &S, data_structures_groups::vector_ge &gens, int verbose_level)
void induced_action_on_orthogonal(action *A_old, induced_actions::action_on_orthogonal *AO, int f_induce_action, groups::sims *old_G, int verbose_level)
void create_orbits_on_sets_using_action_on_sets(action *&A_on_sets, groups::schreier *&Orbits, groups::sims *S, int nb_sets, int set_size, long int *sets, int verbose_level)
void induced_action_on_ordered_pairs(action &old_action, groups::sims *old_G, int verbose_level)
void induced_action_on_sign(groups::sims *old_G, int verbose_level)
int coded_elt_size_in_char
action * induced_action_on_wedge_product(int verbose_level)
action * create_induced_action_on_subgroups(groups::sims *S, int nb_subgroups, int group_order, groups::subgroup **Subgroups, int verbose_level)
void induced_action_on_pairs(action &old_action, groups::sims *old_G, int verbose_level)
void lex_least_base_in_place(int verbose_level)
void induced_action_on_determinant(groups::sims *old_G, int verbose_level)
void induced_action_by_subfield_structure(action *A_old, induced_actions::action_by_subfield_structure *SubfieldStructure, int f_induce_action, groups::sims *old_G, int verbose_level)
symmetry_group_type type_G
action * create_induced_action_on_sets(int nb_sets, int set_size, long int *sets, int verbose_level)
groups::strong_generators * Strong_gens
void init_sims_only(groups::sims *G, int verbose_level)
void orbits_on_equations(ring_theory::homogeneous_polynomial_domain *HPD, int *The_equations, int nb_equations, groups::strong_generators *gens, action *&A_on_equations, groups::schreier *&Orb, int verbose_level)
void induced_action_on_subgroups(action *old_action, groups::sims *S, int nb_subgroups, int group_order, groups::subgroup **Subgroups, int verbose_level)
void compute_strong_generators_from_sims(int verbose_level)
void induced_action_on_Galois_group(groups::sims *old_G, int verbose_level)
int f_has_strong_generators
stabilizer_chain_base_data * Stabilizer_chain
void induced_action_by_representation_on_conic(action *A_old, int f_induce_action, groups::sims *old_G, int verbose_level)
groups::sims * create_sims_from_generators_randomized(data_structures_groups::vector_ge *gens, int f_target_go, ring_theory::longinteger_object &target_go, int verbose_level)
void induced_action_on_orbits(action *old_action, groups::schreier *Sch, int f_play_it_safe, int verbose_level)
void init_action_on_lines(action *A, field_theory::finite_field *F, int n, int verbose_level)
void induced_action_on_flags(action *old_action, int *type, int type_len, int verbose_level)
void induce(action *old_action, groups::sims *old_G, int base_of_choice_len, long int *base_of_choice, int verbose_level)
void induced_action_by_restriction_on_orbit_with_schreier_vector(action &old_action, int f_induce_action, groups::sims *old_G, data_structures_groups::schreier_vector *Schreier_vector, int pt, int verbose_level)
void induced_action_on_k_subsets(action &old_action, int k, int verbose_level)
action * induced_action_on_grassmannian(int k, int verbose_level)
void induced_action_by_restriction_internal_function(action &old_action, int f_induce_action, groups::sims *old_G, int nb_points, long int *points, int verbose_level)
int find_non_fixed_point(void *elt, int verbose_level)
void induced_action_recycle_sims(action &old_action, int verbose_level)
action * create_induced_action_on_ordered_pairs(int verbose_level)
void original_point_labels(long int *points, int nb_points, long int *&original_points, int verbose_level)
void base_change_in_place(int size, long int *set, int verbose_level)
int least_moved_point_at_level(int level, int verbose_level)
void base_change(action *old_action, int size, long int *set, int verbose_level)
void set_base_len(int base_len)
int choose_next_base_point_default_method(int *Elt, int verbose_level)
void setup_product_action(action *A1, action *A2, int f_use_projections, int verbose_level)
void induced_action_on_sets(action &old_action, groups::sims *old_G, int nb_sets, int set_size, long int *sets, int f_induce_action, int verbose_level)
action * create_induced_action_by_conjugation(groups::sims *Base_group, int f_ownership, int verbose_level)
void induced_action_on_homogeneous_polynomials(action *A_old, ring_theory::homogeneous_polynomial_domain *HPD, int f_induce_action, groups::sims *old_G, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
action * create_induced_action_by_restriction(groups::sims *S, int size, long int *set, int f_induce, int verbose_level)
void induced_action_by_conjugation(groups::sims *old_G, groups::sims *Base_group, int f_ownership, int f_basis, int verbose_level)
void induced_action_on_bricks(action &old_action, combinatorics::brick_domain *B, int f_linear_action, int verbose_level)
void induced_action_on_spread_set(action *A_old, induced_actions::action_on_spread_set *AS, int f_induce_action, groups::sims *old_G, 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)
void induced_action_override_sims(action &old_action, groups::sims *old_G, int verbose_level)
void induced_action_on_homogeneous_polynomials_given_by_equations(action *A_old, ring_theory::homogeneous_polynomial_domain *HPD, int *Equations, int nb_equations, int f_induce_action, groups::sims *old_G, int verbose_level)
void allocate_element_data()
void induced_action_on_cosets(induced_actions::action_on_cosets *A_on_cosets, int f_induce_action, groups::sims *old_G, int verbose_level)
action_pointer_table * ptr
void induced_action_by_right_multiplication(int f_basis, groups::sims *old_G, groups::sims *Base_group, int f_ownership, int verbose_level)
void induced_action_on_factor_space(action *A_old, induced_actions::action_on_factor_space *AF, int f_induce_action, groups::sims *old_G, int verbose_level)
int test_if_lex_least_base(int verbose_level)
void induced_action_on_andre(action *An, action *An1, geometry::andre_construction *Andre, int verbose_level)
the transversals in the stabilizer subgroup chain (Sims chain)
void allocate_base_data(action *A, int base_len, int verbose_level)
void reallocate_base(int new_base_point)
compact storage of schreier vectors
to hold a vector of group elements
a matrix group over a finite field in projective, vector space or affine action
field_theory::finite_field * GFq
Schreier trees for orbits of groups on points.
void print_and_list_orbits_tex(std::ostream &ost)
a permutation group represented via a stabilizer chain
void init(actions::action *A, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void print_generators_as_permutations()
void init_trivial_group(int verbose_level)
void compute_base_orbits_known_length(int *tl, int verbose_level)
int least_moved_point_at_level(int lvl, int verbose_level)
void print_basic_orbits()
data_structures_groups::vector_ge gens
data_structures_groups::vector_ge gens_inv
void init_generators(data_structures_groups::vector_ge &generators, int verbose_level)
int get_orbit_length(int i)
a strong generating set for a permutation group with respect to a fixed action
schreier * orbits_on_points_schreier(actions::action *A_given, int verbose_level)
void init_from_sims(groups::sims *S, int verbose_level)
data_structures_groups::vector_ge * gens
a subgroup of a group using a list of elements
induced action by conjugation on the elements of a given group
void init(groups::sims *Base_group, int f_ownership, int verbose_level)
induced action of PSL(2,q) on a conic (the only type implemented so far)
void init_action_on_conic(actions::action &A, int verbose_level)
restricted action on an invariant subset
void init(int nb_points, long int *points, int verbose_level)
void init_single_orbit_from_schreier_vector(data_structures_groups::schreier_vector *Schreier_vector, int pt, int verbose_level)
long int original_point(long int pt)
induced action on a the set of elements of a group by right multiplication
void init(groups::sims *Base_group, int f_ownership, int verbose_level)
induced action on the vector space arising from a field over a subfield
induced action on the elements of a projective plane constructed via Andre / Bruck / Bose
void init(actions::action *An, actions::action *An1, geometry::andre_construction *Andre, int verbose_level)
related to a problem of Neil Sloane
void init(actions::action *A, combinatorics::brick_domain *B, int f_linear_action, int verbose_level)
induced action on the cosets of a subspace by right multiplication
int dimension_of_subspace
actions::action * A_linear
induced action on the determinant of a group of matrices (used to compute the subgroup PSL)
void init(actions::action &A, int f_projective, int m, int verbose_level)
induced action on the factor space of a vector space modulo a subspace
algebra::vector_space * VS
void init(actions::action *A, int *type, int type_len, int verbose_level)
induced action on the galois group (used to compute the projectivity subgroup of a collineation group...
void init(actions::action *A, int m, int verbose_level)
induced action on the grassmannian (subspaces of a fixed dimension of a vectors space)
void init(actions::action &A, geometry::grassmann *G, int verbose_level)
ring_theory::longinteger_object degree
induced action on the set of homogeneous polynomials over a finite field
void init(actions::action *A, ring_theory::homogeneous_polynomial_domain *HPD, int verbose_level)
void init_invariant_set_of_equations(int *Equations, int nb_equations, int verbose_level)
induced action on the interior direct product
void init(actions::action *A, int nb_rows, int verbose_level)
induced action on k-subsets of a set of size n
void init(actions::action *A, int k, int verbose_level)
induced action on the set of orbits (usually by the normalizer)
void init(actions::action *A, groups::schreier *Sch, int f_play_it_safe, int verbose_level)
induced action on the orthogonal geometry
int f_on_points_and_lines
orthogonal_geometry::orthogonal * O
induced action on a set partitions.
void init(int partition_size, actions::action *A, int verbose_level)
induced action on a given set of sets.
void init(int nb_sets, int set_size, long int *input_sets, int verbose_level)
induced action on the sign function of a permutation group (to compute the even subgroup)
void init(actions::action *A, int verbose_level)
induced action on a spread set via the associated spread
induced action on subgroups of a group
void init(actions::action *A, groups::sims *S, int nb_subgroups, int subgroup_order, groups::subgroup **Subgroups, int verbose_level)
induced wedge product action on the exterior square of a vector space
void init(actions::action &A, int verbose_level)
induced product action of two group actions
void init(actions::action *A1, actions::action *A2, int f_use_projections, int verbose_level)
int coded_elt_size_in_char
#define Lint_vec_print(A, B, C)
@ action_by_restriction_t
@ action_on_factor_space_t
@ action_on_galois_group_t
@ action_by_representation_t
@ action_on_grassmannian_t
@ action_on_homogeneous_polynomials_t
@ action_on_wedge_product_t
@ action_on_interior_direct_product_t
@ action_by_conjugation_t
@ action_by_right_multiplication_t
@ action_on_set_partitions_t
@ action_on_ordered_pairs_t
@ action_by_subfield_structure_t
@ action_on_determinant_t
the orbiter library for the classification of combinatorial objects
induced_actions::action_on_galois_group * on_Galois_group
induced_actions::action_by_restriction * ABR
induced_actions::action_on_orbits * OnOrbits
induced_actions::action_on_sign * OnSign
induced_actions::action_on_homogeneous_polynomials * OnHP
induced_actions::action_on_spread_set * AS
induced_actions::action_on_wedge_product * AW
induced_actions::action_by_conjugation * ABC
induced_actions::action_by_representation * Rep
induced_actions::action_on_interior_direct_product * OnInteriorDirectProduct
induced_actions::action_on_bricks * OnBricks
induced_actions::action_by_subfield_structure * SubfieldStructure
induced_actions::action_on_grassmannian * AG
induced_actions::action_on_flags * OnFlags
induced_actions::product_action * product_action_data
induced_actions::action_on_sets * on_sets
groups::matrix_group * matrix_grp
induced_actions::action_on_set_partitions * OnSetPartitions
induced_actions::action_on_determinant * AD
induced_actions::action_by_right_multiplication * ABRM
induced_actions::action_on_orthogonal * AO
induced_actions::action_on_subgroups * on_subgroups
induced_actions::action_on_factor_space * AF
induced_actions::action_on_cosets * OnCosets
induced_actions::action_on_andre * OnAndre
induced_actions::action_on_k_subsets * on_k_subsets