14namespace layer3_group_actions {
83 cout <<
"action::freeself deleting action " <<
label << endl;
88 cout <<
"action::freeself freeing G of type ";
96 cout <<
"action::freeself freeing G.matrix_grp" << endl;
101 cout <<
"action::~action freeing G.matrix_grp finished"
108 cout <<
"action::freeself freeing "
109 "G.wreath_product_group" << endl;
110 cout <<
"G.wreath_product_group="
115 cout <<
"action::freeself freeing "
116 "G.wreath_product_group finished" << endl;
122 cout <<
"action::freeself freeing G.perm_group_t" << endl;
126 cout <<
"action::freeself freeing G.perm_group_t finished"
133 cout <<
"action::freeself freeing G.on_sets" << endl;
134 cout <<
"G.on_sets=" <<
G.
on_sets << endl;
138 cout <<
"action::freeself freeing G.on_sets finished" << endl;
144 cout <<
"action::freeself freeing G.OnSetPartitions" << endl;
149 cout <<
"action::freeself freeing G.OnSetPartitions finished" << endl;
155 cout <<
"action::freeself freeing G.on_sets" << endl;
160 cout <<
"action::freeself freeing G.on_k_subsets finished"
167 cout <<
"action::freeself freeing G.OnOrbits" << endl;
168 cout <<
"G.OnOrbits=" <<
G.
OnOrbits << endl;
172 cout <<
"action::freeself freeing G.OnOrbits finished" << endl;
178 cout <<
"action::freeself freeing G.OnBricks" << endl;
179 cout <<
"G.OnBricks=" <<
G.
OnBricks << endl;
183 cout <<
"action::freeself freeing G.OnBricks finished" << endl;
189 cout <<
"action::freeself freeing G.OnAndre" << endl;
190 cout <<
"G.OnAndre=" <<
G.
OnAndre << endl;
194 cout <<
"action::freeself freeing G.OnAndre finished" << endl;
200 cout <<
"action::freeself freeing G.ABRM" << endl;
207 cout <<
"action::freeself freeing G.ABR" << endl;
214 cout <<
"action::freeself freeing G.ABC" << endl;
221 cout <<
"action::freeself freeing G.Rep" << endl;
228 cout <<
"action::freeself freeing G.AD" << endl;
235 cout <<
"action::freeself freeing G.on_Galois_group" << endl;
242 cout <<
"action::freeself freeing G.OnSign" << endl;
249 cout <<
"action::freeself freeing G.AG" << endl;
256 cout <<
"action::freeself freeing G.AF" << endl;
267 cout <<
"action::freeself freeing G.OnHP" << endl;
274 cout <<
"action::freeself freeing G.SubfieldStructure" << endl;
280 cout <<
"action::freeself don't know "
281 "how to free the object; action type is ";
290 cout <<
"action::freeself after freeing G " << endl;
298 cout <<
"action::freeself after free_base_data" << endl;
303 cout <<
"action::freeself after freeing transversal reps" << endl;
309 cout <<
"action::freeself after free_element_data" << endl;
314 cout <<
"we are freeing strong generators" << endl;
326 cout <<
"action::freeself after freeing strong generators" << endl;
331 cout <<
"subaction is allocated, so we free it" << endl;
341 cout <<
"action::freeself after freeing subaction" << endl;
346 cout <<
"action::freeself freeing Sims" << endl;
352 cout <<
"action::freeself freeing Sims finished" << endl;
357 cout <<
"action::freeself after freeing sims" << endl;
362 cout <<
"action::freeself freeing Kernel" << endl;
368 cout <<
"action::freeself freeing Kernel finished" << endl;
377 cout <<
"action::freeself "
378 "deleting action " <<
label <<
" done" << endl;
399 cout <<
"action::base_len Stabilizer_chain == NULL" << endl;
411 cout <<
"action::set_base_len no stabilizer chain" << endl;
422 cout <<
"action::base_i no Stabilizer_chain" << endl;
433 cout <<
"action::get_base no Stabilizer_chain" << endl;
444 cout <<
"action::transversal_length_i no Stabilizer_chain" << endl;
455 cout <<
"action::transversal_length no Stabilizer_chain" << endl;
466 cout <<
"action::orbit_ij no Stabilizer_chain" << endl;
477 cout <<
"action::orbit_inv_ij no Stabilizer_chain" << endl;
557 int f_v = (verbose_level >= 1);
561 cout <<
"action::find_non_fixed_point" << endl;
562 cout <<
"degree=" <<
degree << endl;
564 for (i = 0; i <
degree; i++) {
568 cout <<
"moves " << i <<
" to " << j << endl;
574 cout <<
"cannot find non fixed point" << endl;
580 int *fixed_points,
int verbose_level)
582 int f_v = (verbose_level >= 1);
586 cout <<
"computing fixed points in action "
589 for (i = 0; i <
degree; i++) {
592 fixed_points[n++] = i;
596 cout <<
"found " << n <<
" fixed points" << endl;
603 int f_v = (verbose_level >= 1);
607 cout <<
"action::count_fixed_points counting fixed points in action "
610 for (i = 0; i <
degree; i++) {
617 cout <<
"action::count_fixed_points done, found " << cnt <<
" fixed points" << endl;
623 int size,
long int *set,
int verbose_level)
625 long int *set1, *set2;
627 int f_v = (verbose_level >= 1);
631 cout <<
"action::test_if_set_stabilizes" << endl;
635 for (i = 0; i < size; i++) {
643 cout <<
"the elements takes " << endl;
645 cout << endl <<
"to" << endl;
648 cout <<
"cmp = " << cmp << endl;
654 cout <<
"action::test_if_set_stabilizes "
655 "done, returning TRUE" << endl;
661 cout <<
"action::test_if_set_stabilizes "
662 "done, returning FALSE" << endl;
669 long int *image_set,
int n,
int *Elt,
int verbose_level)
671 int f_v = (verbose_level >= 1);
672 int f_vv = (verbose_level >= 2);
676 cout <<
"action::map_a_set" << endl;
679 cout <<
"group element:" << endl;
682 cout <<
"set: " << endl;
686 for (i = 0; i < n; i++) {
688 cout <<
"i=" << i <<
" computing image of " << set[i] << endl;
692 cout <<
"i=" << i <<
" image of "
693 << set[i] <<
" is " << image_set[i] << endl;
699 long int *image_set,
int n,
int *Elt,
int verbose_level)
703 map_a_set(set, image_set, n, Elt, verbose_level);
711 int f_v = (verbose_level >= 1);
715 cout <<
"action::init_sims_only action " <<
label
716 <<
" base_len = " <<
base_len() << endl;
724 cout <<
"action::init_sims_only action " <<
label
725 <<
" sims object has different action "
726 <<
G->A->label << endl;
735 cout <<
"action::init_sims_only action " <<
label
736 <<
" before compute_strong_generators_from_sims" << endl;
740 cout <<
"action::init_sims_only action " <<
label
741 <<
" after compute_strong_generators_from_sims" << endl;
746 cout <<
"action::init_sims_only done" << endl;
752 int f_v = (verbose_level >= 1);
755 cout <<
"action::compute_strong_generators_from_sims" << endl;
758 cout <<
"action::compute_strong_generators_from_sims need sims" << endl;
770 cout <<
"action::compute_strong_generators_from_sims done" << endl;
776 int f_v = (verbose_level >= 1);
780 cout <<
"action::element_has_order_two" << endl;
792 cout <<
"action::element_has_order_two done" << endl;
798 int *E2,
int verbose_level)
800 int f_v = (verbose_level >= 1);
804 cout <<
"action::product_has_order_two" << endl;
817 cout <<
"action::product_has_order_two done" << endl;
823 int *E2,
int verbose_level)
825 int f_v = (verbose_level >= 1);
829 cout <<
"action::product_has_order_three" << endl;
843 cout <<
"action::product_has_order_three done" << endl;
861 void *elt,
int *cycle_type)
868 void *elt,
int *cycle_type,
int verbose_level)
871 int f_v = (verbose_level >= 1);
872 int f_vv = (verbose_level >= 2);
874 long int l, l1, first, next, len, g, n, order = 1;
878 cout <<
"action::element_order_verbose" << endl;
881 cout <<
"The element is:" << endl;
883 cout <<
"as permutation:" << endl;
889 for (l = 0; l < n; l++) {
890 have_seen[l] =
FALSE;
903 have_seen[l1] =
TRUE;
906 cout <<
"action::element_order_verbose: next = "
907 << next <<
" > n = " << n << endl;
914 if (have_seen[next]) {
915 cout <<
"action::element_order_verbose "
916 "have_seen[next]" << endl;
922 cycle_type[len - 1]++;
931 cout <<
"action::element_order_verbose "
932 "done order=" << order << endl;
943 long int l, l1, first, next, len, g, n, order = 1;
948 for (l = 0; l < n; l++) {
949 have_seen[l] =
FALSE;
962 have_seen[l1] =
TRUE;
965 cout <<
"perm_print(): next = "
966 << next <<
" > n = " << n << endl;
973 if (have_seen[next]) {
974 cout <<
"action::element_order_if_divisor_of(): "
975 "have_seen[next]" << endl;
984 if (o && (o % len)) {
998 int f_v = (verbose_level >= 1);
1001 cout <<
"action::compute_all_point_orbits" << endl;
1003 S.
init(
this, verbose_level - 2);
1007 cout <<
"action::compute_all_point_orbits done" << endl;
1033 gen.
init(
this, verbose_level - 2);
1034 gen.
allocate(l, verbose_level - 2);
1036 for (i = 0; i < l; i++) {
1048 groups::sims *S,
int *sequence,
int len,
int verbose_level)
1051 int f_v = (verbose_level >= 1);
1052 int f_vv = (verbose_level >= 2);
1053 int f_vvv = (verbose_level >= 3);
1057 cout <<
"action::compute_point_stabilizer_chain for sequence ";
1061 for (i = 0; i <= len; i++) {
1062 S[i].
init(
this, verbose_level - 2);
1067 cout <<
"automorphism group has order ";
1071 cout <<
"generators:" << endl;
1076 for (i = 0; i < len; i++) {
1078 cout <<
"computing stabilizer of " << i
1079 <<
"-th point in the sequence" << endl;
1082 S[i + 1], sequence[i], 0 );
1084 cout <<
"stabilizer of " << i <<
"-th point "
1085 << sequence[i] <<
" has order ";
1089 cout <<
"generators:" << endl;
1095 cout <<
"action::compute_point_stabilizer_chain for sequence ";
1097 cout <<
" finished" << endl;
1098 cout <<
"i : order of i-th stabilizer" << endl;
1099 for (i = 0; i <= len; i++) {
1105 for (i = 0; i <= len; i++) {
1107 cout <<
"generators:" << endl;
1116 int pt,
int *orbit,
int verbose_level)
1118 int f_v = (verbose_level >= 1);
1123 cout <<
"action::compute_orbit_of_point: "
1124 "computing orbit of point " << pt << endl;
1126 Schreier.
init(
this, verbose_level - 2);
1131 for (i = 0; i < len; i++) {
1132 orbit[i] = Schreier.
orbit[f + i];
1138 int *gen_handle,
int pt,
int *orbit,
int verbose_level)
1144 gens.
init(
this, verbose_level - 2);
1145 gens.
allocate(nb_gen, verbose_level - 2);
1146 for (i = 0; i < nb_gen; i++) {
1155 int pt,
int *transporter,
int verbose_level)
1157 int f_v = (verbose_level >= 1);
1159 int len, image, pos, i;
1162 cout <<
"action::least_image_of_point: "
1163 "computing least image of " << pt << endl;
1165 Schreier.
init(
this, verbose_level - 2);
1176 cout <<
"action::least_image_of_point i != image" << endl;
1180 cout <<
"action::least_image_of_point: "
1181 "least image of " << pt <<
" is " << image << endl;
1187 std::vector<int> &gen_handle,
1188 int pt,
int *transporter,
int verbose_level)
1195 nb_gen = gen_handle.size();
1201 gens.
init(
this, verbose_level - 2);
1202 gens.
allocate(nb_gen, verbose_level - 2);
1203 for (i = 0; i < nb_gen; i++) {
1210 int nb_gen,
int *gen_handle,
1211 int pt,
int *transporter,
int verbose_level)
1221 gens.
init(
this, verbose_level - 2);
1222 gens.
allocate(nb_gen, verbose_level - 2);
1223 for (i = 0; i < nb_gen; i++) {
1231 int f_v = (verbose_level >= 1);
1234 cout <<
"action::all_point_orbits" << endl;
1236 Schreier.
init(
this, verbose_level - 2);
1238 cout <<
"action::all_point_orbits !f_has_strong_generators" << endl;
1243 cout <<
"action::all_point_orbits before Schreier.compute_all_point_orbits" << endl;
1247 cout <<
"action::all_point_orbits after Schreier.compute_all_point_orbits" << endl;
1250 cout <<
"action::all_point_orbits done" << endl;
1258 int f_v = (verbose_level >= 1);
1261 cout <<
"action::all_point_orbits_from_generators" << endl;
1263 Schreier.
init(
this, verbose_level - 2);
1272 int f_v = (verbose_level >= 1);
1275 cout <<
"action::all_point_orbits_from_single_generator" << endl;
1279 gens.
init(
this, verbose_level - 2);
1280 gens.
allocate(1, verbose_level - 2);
1283 Schreier.
init(
this, verbose_level - 2);
1286 cout <<
"action::all_point_orbits_from_single_generator before Schreier.compute_all_point_orbits" << endl;
1290 cout <<
"action::all_point_orbits_from_single_generator after Schreier.compute_all_point_orbits" << endl;
1293 cout <<
"action::all_point_orbits_from_single_generator done" << endl;
1300 int f_v = (verbose_level >= 1);
1301 int f_vv = (verbose_level >= 2);
1307 cout <<
"action::compute_stabilizer_orbits" << endl;
1308 cout <<
"base_len = " <<
base_len() << endl;
1314 cout <<
"degree = " <<
degree << endl;
1322 cout <<
"level " << i <<
" found "
1323 << gen.
len <<
" strong generators" << endl;
1337 cout <<
"computing point orbits" << endl;
1343 Schreier.
print(cout);
1348 cout <<
"found " << S->
ht <<
" orbits" << endl;
1351 cout <<
"level " << i <<
" with "
1352 << gen.
len <<
" strong generators : ";
1359 cout <<
"action::compute_stabilizer_orbits finished" << endl;
1365 int size,
long int *set,
int verbose_level)
1368 long int *ordered_set;
1369 int f_v = (verbose_level >= 1);
1373 for (i = 0; i < size; i++) {
1374 ordered_set[i] = set[i];
1377 for (i = 0; i < size; i++) {
1382 cout <<
"action::check_if_in_set_stabilizer fails" << endl;
1386 cout <<
"ordered_set: ";
1389 cout <<
"image of " << i <<
"-th element "
1391 <<
" is not found" << endl;
1403 int size,
long int *set1,
long int *set2,
int verbose_level)
1406 long int *ordered_set2;
1407 int f_v = (verbose_level >= 1);
1408 int f_vv = (verbose_level >= 4);
1412 cout <<
"action::check_if_transporter_for_set "
1413 "size=" << size << endl;
1422 for (i = 0; i < size; i++) {
1423 ordered_set2[i] = set2[i];
1427 cout <<
"sorted target set:" << endl;
1431 for (i = 0; i < size; i++) {
1434 cout <<
"i=" << i <<
" a=" << a << endl;
1438 cout <<
"i=" << i <<
" a=" << a <<
" b=" << b << endl;
1442 cout <<
"action::check_if_transporter_for_set fails" << endl;
1449 cout <<
"ordered: ";
1452 cout <<
"image of " << i <<
"-th element "
1454 <<
" is not found" << endl;
1467 int size,
long int *set,
1468 int &nb_sets,
long int **&Sets,
int **&Transporter,
1471 int f_v = (verbose_level >= 1);
1472 long int *image_set;
1473 long int **New_Sets;
1474 int **New_Transporter;
1475 int nb_finished, allocated_nb_sets;
1476 int new_allocated_nb_sets, nb_gens, i, j, h;
1480 cout <<
"action::compute_set_orbit: ";
1486 allocated_nb_sets = 100;
1488 Transporter =
NEW_pint(allocated_nb_sets);
1493 for (i = 0; i < size; i++) {
1494 Sets[0][i] = set[i];
1504 while (nb_finished < nb_sets) {
1506 cout <<
"nb_finished=" << nb_finished
1507 <<
" nb_sets=" << nb_sets << endl;
1509 for (i = 0; i < nb_gens; i++) {
1513 cout <<
"image under generator " << i <<
":";
1517 for (j = 0; j < nb_sets; j++) {
1527 cout <<
"n e w set " << nb_sets <<
":";
1531 Sets[nb_sets] = image_set;
1535 gens.
ith(i), Transporter[nb_sets], 0);
1537 if (nb_sets == allocated_nb_sets) {
1538 new_allocated_nb_sets = allocated_nb_sets + 100;
1539 cout <<
"reallocating to size "
1540 << new_allocated_nb_sets << endl;
1541 New_Sets =
NEW_plint(new_allocated_nb_sets);
1542 New_Transporter =
NEW_pint(new_allocated_nb_sets);
1543 for (h = 0; h < nb_sets; h++) {
1544 New_Sets[h] = Sets[h];
1545 New_Transporter[h] = Transporter[h];
1550 Transporter = New_Transporter;
1551 allocated_nb_sets = new_allocated_nb_sets;
1558 cout <<
"action::compute_set_orbit "
1559 "found an orbit of size " << nb_sets << endl;
1560 for (i = 0; i < nb_sets; i++) {
1573 for (i = 0; i < nb_sets; i++) {
1582 long int *minimal_set,
int *transporter,
int verbose_level)
1584 int f_v = (verbose_level >= 1);
1592 cout <<
"action::compute_minimal_set" << endl;
1597 nb_sets, Sets, Transporter, verbose_level);
1600 for (i = 1; i < nb_sets; i++) {
1605 for (i = 0; i < size; i++) {
1606 minimal_set[i] = Sets[min_set][i];
1613 int base_len,
long int *the_base,
int level,
1618 int nb_generators_found;
1620 int nb_gens, i, j, bj, bj_image;
1621 int f_v = (verbose_level >= 1);
1622 int f_vv = (verbose_level >= 2);
1625 cout <<
"action::find_strong_generators_at_level "
1626 "level=" << level <<
" base: ";
1633 nb_generators_found = 0;
1634 for (i = 0; i < nb_gens; i++) {
1635 for (j = 0; j < level; j++) {
1638 if (bj_image != bj) {
1643 gen_idx[nb_generators_found++] = i;
1646 subset_of_gens.
init(
this, verbose_level - 2);
1647 subset_of_gens.
allocate(nb_generators_found, verbose_level - 2);
1648 for (i = 0; i < nb_generators_found; i++) {
1654 cout <<
"action::find_strong_generators_at_level found "
1655 << nb_generators_found <<
" strong generators" << endl;
1657 subset_of_gens.
print(cout);
1665 int *Elt,
groups::sims *S,
int *data,
int verbose_level)
1667 int f_v = (verbose_level >= 1);
1672 cout <<
"action::make_element_from_permutation_representation" << endl;
1677 base_image[i] = data[a];
1678 if (base_image[i] >=
degree) {
1679 cout <<
"action::make_element_from_permutation_representation "
1680 "base_image[i] >= degree" << endl;
1681 cout <<
"i=" << i <<
" base[i] = " << a
1682 <<
" base_image[i]=" << base_image[i] << endl;
1690 cout <<
"action::make_element_from_permutation_representation done"
1696 int *data,
int verbose_level)
1698 int f_v = (verbose_level >= 1);
1709 int f_do_it_anyway_even_for_big_degree =
TRUE;
1710 int f_print_cycles_of_length_one =
FALSE;
1713 int i, j, yi, z, b, c, b_pt;
1716 cout <<
"action::make_element_from_base_image" << endl;
1720 cout <<
"action::make_element_from_base_image" << endl;
1721 cout <<
"base images: ";
1728 cout <<
"action::make_element_from_base_image "
1729 "fatal: does not have sims" << endl;
1735 cout <<
"action in Sims:" << endl;
1745 base_image[j] = data[j];
1757 cout <<
"i=" << i << endl;
1758 cout <<
"Elt3=" << endl;
1761 offset, f_do_it_anyway_even_for_big_degree,
1762 f_print_cycles_of_length_one, 0);
1763 cout <<
"i=" << i <<
" b_pt=" << b_pt
1764 <<
" yi=" << yi <<
" z="
1765 << z <<
" j=" << j << endl;
1769 cout <<
"cosetrep=" << endl;
1773 offset, f_do_it_anyway_even_for_big_degree,
1774 f_print_cycles_of_length_one, 0);
1780 cout <<
"after left multiplying, Elt3=" << endl;
1783 offset, f_do_it_anyway_even_for_big_degree,
1784 f_print_cycles_of_length_one, 0);
1786 cout <<
"computing image of b_pt=" << b_pt << endl;
1791 cout <<
"b_pt=" << b_pt <<
" -> " << c << endl;
1794 cout <<
"action::make_element_from_base_image "
1795 "fatal: element_image_of(b_pt, Elt3, 0) "
1805 cout <<
"action::make_element_from_base_image "
1808 cout <<
"i=" << i << endl;
1809 cout <<
"base[i]=" <<
base_i(i) << endl;
1810 cout <<
"yi=" << yi << endl;
1811 cout <<
"b=" << b << endl;
1816 cout <<
"action::make_element_from_base_image "
1817 "created element:" << endl;
1827 cout <<
"action::make_element_from_base_image done" << endl;
1843 std::string &data_string,
int verbose_level)
1845 int f_v = (verbose_level >= 1);
1848 cout <<
"action::make_element_from_string" << endl;
1856 cout <<
"action::make_element_from_string data = ";
1866 cout <<
"action::make_element_from_string Elt = " << endl;
1871 cout <<
"action::make_element_from_string done" << endl;
1877 int f_v = (verbose_level >= 1);
1880 cout <<
"action::make_element" << endl;
1885 cout <<
"action::make_element product_action_t" << endl;
1898 cout <<
"action::make_element action_on_sets_t" << endl;
1904 cout <<
"action::make_element action_on_pairs_t" << endl;
1910 cout <<
"action::make_element matrix_group_t" << endl;
1916 cout <<
"action::make_element wreath_product_t" << endl;
1922 cout <<
"action::make_element direct_product_t" << endl;
1928 cout <<
"action::make_element subaction" << endl;
1934 cout <<
"action::make_element perm_group_t" << endl;
1939 cout <<
"action::make_element unknown type_G: ";
1947 int nb_auts,
int *aut_data,
1950 int f_v = (verbose_level >= 1);
1956 cout <<
"action::build_up_automorphism_group_from_aut_data "
1957 "action=" <<
label <<
" nb_auts=" << nb_auts << endl;
1961 S.
init(
this, verbose_level - 2);
1963 for (h = 0; h < nb_auts; h++) {
1965 cout <<
"aut_data[" << h <<
"]=";
1970 coset = aut_data[h *
base_len() + i];
1984 cout <<
"generator " << h
1985 <<
" added, n e w group order " << go << endl;
1992 cout <<
"generator " << h <<
" strips through" << endl;
2001 int n,
int verbose_level)
2028 const char *word,
int verbose_level)
2039 for (i = 0; i < l; i++) {
2040 if (word[i] ==
'a') {
2044 else if (word[i] ==
'b') {
2049 cout <<
"word must consist of a and b" << endl;
2060 int *group_generator_data,
int group_generator_size,
2061 int f_group_order_target,
const char *group_order_target,
2066 int f_v = (verbose_level >= 1);
2075 cout <<
"action::init_group_from_generators" << endl;
2076 cout <<
"group_generator_size=" << group_generator_size << endl;
2078 if (f_group_order_target) {
2079 cout <<
"group_order_target=" << group_order_target << endl;
2082 if (f_group_order_target) {
2083 cout <<
"group_order_target=" << go << endl;
2085 S.
init(
this, verbose_level - 2);
2089 cout <<
"action::init_group_from_generators fatal: "
2090 "group_generator_size is not "
2091 "divisible by make_element_size"
2094 cout <<
"group_generator_size=" << group_generator_size << endl;
2097 gens->
init(
this, verbose_level - 2);
2098 gens->
allocate(nb_gens, verbose_level - 2);
2099 for (i = 0; i < nb_gens; i++) {
2101 cout <<
"parsing generator " << i <<
":" << endl;
2111 cout <<
"done parsing generators" << endl;
2119 cout <<
"cur_go=" << cur_go << endl;
2120 if (!f_group_order_target) {
2123 if (D.
compare(cur_go, go) == 0) {
2124 cout <<
"reached target group order" << endl;
2127 cout <<
"did not reach target group order, continuing" << endl;
2138 int *group_generator_data,
int group_generator_size,
2139 int f_group_order_target,
const char *group_order_target,
2144 int f_v = (verbose_level >= 1);
2153 cout <<
"action::init_group_from_generators_by_base_images" << endl;
2156 cout <<
"group_generator_size=" << group_generator_size << endl;
2158 if (f_group_order_target) {
2159 cout <<
"group_order_target=" << group_order_target << endl;
2162 if (f_group_order_target) {
2163 cout <<
"group_order_target=" << go << endl;
2165 S.
init(
this, verbose_level - 2);
2167 nb_gens = group_generator_size /
base_len();
2169 cout <<
"nb_gens=" << nb_gens << endl;
2170 cout <<
"base_len=" <<
base_len() << endl;
2172 if (nb_gens *
base_len() != group_generator_size) {
2173 cout <<
"action::init_group_from_generators_by_base_images fatal: "
2174 "group_generator_size is not divisible by base_len" << endl;
2175 cout <<
"base_len=" <<
base_len() << endl;
2176 cout <<
"group_generator_size=" << group_generator_size << endl;
2179 gens->
init(
this, verbose_level - 2);
2180 gens->
allocate(nb_gens, verbose_level - 2);
2181 for (i = 0; i < nb_gens; i++) {
2183 cout <<
"parsing generator " << i <<
":" << endl;
2189 group_generator_data + i *
base_len(),
2194 cout <<
"done parsing generators" << endl;
2202 cout <<
"cur_go=" << cur_go << endl;
2203 if (!f_group_order_target) {
2206 if (D.
compare(cur_go, go) == 0) {
2207 cout <<
"reached target group order" << endl;
2210 cout <<
"did not reach target group order, continuing" << endl;
2219 cout <<
"action::init_group_from_generators_by_base_images done" << endl;
2228 cout <<
"action::group_order Stabilizer_chain == NULL" << endl;
2229 go.
create(0, __FILE__, __LINE__);
2259 int *Elt, ostream &ost,
int verbose_level)
2261 int f_v = (verbose_level >= 1);
2265 cout <<
"action::element_print_base_images_verbose" << endl;
2269 ost <<
"base images: ";
2280 int *Elt,
int *base_images,
int verbose_level)
2282 int f_v = (verbose_level >= 1);
2283 int f_vv = (verbose_level >= 2);
2287 cout <<
"action::element_base_images_verbose" << endl;
2292 cout <<
"the " << i <<
"-th base point is "
2293 << bi <<
" is mapped to:" << endl;
2297 cout <<
"the " << i <<
"-th base point is "
2298 << bi <<
" is mapped to: " << base_images[i] << endl;
2306 int f_v = (verbose_level >= 1);
2307 int f_vv = (verbose_level >= 2);
2311 int i, j, oj, j0 = 0, image0 = 0, image;
2315 cout <<
"action::minimize_base_images" << endl;
2316 cout <<
"level=" << level << endl;
2325 for (i = level; i <
base_len(); i++) {
2329 cout <<
"level " << i <<
" S->orbit_len[i]="
2336 cout <<
"level " << i <<
" j=" << j
2337 <<
" oj=" << oj <<
" image="
2345 if (image < image0) {
2347 cout <<
"level " << i <<
" coset j="
2348 << j <<
" image=" << image
2349 <<
"less that image0 = "
2358 cout <<
"level " << i <<
" S->orbit_len[i]="
2363 cout <<
"cosetrep=" << endl;
2374 cout <<
"level " << i <<
" j0=" << j0 << endl;
2398 int f_v = (verbose_level >= 1);
2399 int f_vv = (verbose_level >= 2);
2404 cout <<
"action::get_generators_from_ascii_coding" << endl;
2407 G->init(
this, verbose_level - 2);
2409 cout <<
"action::get_generators_from_ascii_coding "
2410 "before G->init_ascii_coding_to_sims" << endl;
2412 G->init_ascii_coding_to_sims(ascii_coding, verbose_level - 2);
2414 cout <<
"action::get_generators_from_ascii_coding "
2415 "after G->init_ascii_coding_to_sims" << endl;
2419 G->S->group_order(go);
2423 G->S->extract_strong_generators_in_order(*gens, tl,
2427 cout <<
"action::get_generators_from_ascii_coding Group order="
2433 cout <<
"action::get_generators_from_ascii_coding done" << endl;
2439 int &set_sz_after_test,
2443 int f_v = (verbose_level >= 1);
2446 int i, orb, first, a, a0;
2449 cout <<
"action::lexorder_test" << endl;
2455 cout <<
"action::lexorder_test computing orbits in action "
2456 "of degree " <<
degree <<
", max_starter="
2457 << max_starter << endl;
2459 Sch->
init(
this, verbose_level - 2);
2464 cout <<
"action::lexorder_test before compute_all_orbits_on_invariant_subset" << endl;
2469 cout <<
"action::lexorder_test after compute_all_orbits_on_invariant_subset" << endl;
2473 cout <<
"action::lexorder_test: there are "
2474 << Sch->
nb_orbits <<
" orbits on set" << endl;
2482 cout <<
"action::lexorder_test "
2483 "max_starter=" << max_starter << endl;
2485 set_sz_after_test = 0;
2486 for (i = 0; i < set_sz; i++) {
2489 cout <<
"action::lexorder_test "
2490 "Looking at point " << a << endl;
2494 a0 = Sch->
orbit[first];
2495 if (a0 < max_starter) {
2497 cout <<
"action::lexorder_test Point " << a
2498 <<
" maps to " << a0 <<
" which is less than "
2499 "max_starter = " << max_starter
2500 <<
" so we eliminate" << endl;
2504 set[set_sz_after_test++] = a;
2508 cout <<
"action::lexorder_test Of the " << set_sz
2509 <<
" points, we accept " << set_sz_after_test
2510 <<
" and we reject " << set_sz - set_sz_after_test << endl;
2514 cout <<
"action::lexorder_test done" << endl;
2522 int f_v = (verbose_level >= 1);
2525 cout <<
"action::compute_orbits_on_points" << endl;
2529 cout <<
"action::compute_orbits_on_points in action ";
2533 cout <<
"action::compute_orbits_on_points before Sch->init" << endl;
2535 Sch->
init(
this, verbose_level - 2);
2537 cout <<
"action::compute_orbits_on_points before Sch->init_generators" << endl;
2541 cout <<
"action::compute_orbits_on_points before Sch->compute_all_point_orbits, degree = " <<
degree << endl;
2545 cout <<
"action::compute_orbits_on_points after Sch->compute_all_point_orbits" << endl;
2546 cout <<
"action::compute_orbits_on_points Sch->nb_orbits=" << Sch->
nb_orbits << endl;
2550 cout <<
"action::compute_orbits_on_points done, we found "
2556 int k,
int n,
int no,
2560 int f_v = (verbose_level >= 1);
2561 int f_vv = (verbose_level >= 2);
2562 int *data, nb_gens, data_size;
2567 cout <<
"action::stabilizer_of_dual_hyperoval_representative" << endl;
2569 K.
DH_stab_gens(k, n, no, data, nb_gens, data_size, stab_order);
2572 gens->
init(
this, verbose_level - 2);
2573 gens->
allocate(nb_gens, verbose_level - 2);
2575 cout <<
"action::stabilizer_of_dual_hyperoval_representative "
2576 "creating stabilizer generators:" << endl;
2578 for (i = 0; i < nb_gens; i++) {
2583 cout <<
"action::stabilizer_of_dual_hyperoval_representative done"
2589 int q,
int k,
int no,
2593 int f_v = (verbose_level >= 1);
2594 int f_vv = (verbose_level >= 2);
2595 int *data, nb_gens, data_size;
2600 cout <<
"action::stabilizer_of_spread_representative"
2606 gens->
init(
this, verbose_level - 2);
2607 gens->
allocate(nb_gens, verbose_level - 2);
2609 cout <<
"action::stabilizer_of_spread_representative "
2610 "creating stabilizer generators:" << endl;
2612 for (i = 0; i < nb_gens; i++) {
2614 data + i * data_size, 0 );
2618 cout <<
"action::stabilizer_of_spread_representative done"
2626 std::string &stab_order,
2629 int f_v = (verbose_level >= 1);
2630 int f_vv = (verbose_level >= 2);
2631 int *data, nb_gens, data_size;
2636 cout <<
"action::stabilizer_of_quartic_curve_representative" << endl;
2643 cout <<
"action::stabilizer_of_quartic_curve_representative "
2644 "before gens->init_from_data" << endl;
2647 nb_gens, data_size, 0 );
2649 cout <<
"action::stabilizer_of_quartic_curve_representative "
2650 "after gens->init_from_data" << endl;
2653 gens->
init(
this, verbose_level - 2);
2654 gens->
allocate(nb_gens, verbose_level - 2);
2656 cout <<
"action::stabilizer_of_quartic_curve_representative "
2657 "creating stabilizer generators:" << endl;
2659 for (i = 0; i < nb_gens; i++) {
2661 data + i * data_size, 0 );
2666 cout <<
"action::stabilizer_of_quartic_curve_representative done"
2675 int f_v = (verbose_level >= 1);
2678 cout <<
"action::point_stabilizer_any_point" << endl;
2685 cout <<
"action::point_stabilizer_any_point "
2686 "computing all point orbits:" << endl;
2693 cout <<
"computing all point orbits done, found "
2703 cout <<
"action::point_stabilizer_any_point "
2710 cout <<
"action::point_stabilizer_any_point "
2711 "Computing point stabilizer:" << endl;
2719 cout <<
"action::point_stabilizer_any_point "
2720 "Computing point stabilizer done:" << endl;
2721 cout <<
"action::point_stabilizer_any_point "
2722 "point stabilizer is a group of order " << go << endl;
2726 cout <<
"action::point_stabilizer_any_point computing "
2727 "strong generators for the point stabilizer:" << endl;
2732 cout <<
"action::point_stabilizer_any_point strong generators "
2733 "for the point stabilizer have been computed" << endl;
2737 cout <<
"action::point_stabilizer_any_point done" << endl;
2747 int f_v = (verbose_level >= 1);
2750 cout <<
"action::point_stabilizer_any_point_with_given_group" << endl;
2757 cout <<
"action::point_stabilizer_any_point_with_given_group "
2758 "computing all point orbits:" << endl;
2762 cout <<
"computing all point orbits done, found "
2771 cout <<
"action::point_stabilizer_any_point_with_given_group "
2772 "orbit rep = " << pt << endl;
2777 cout <<
"action::point_stabilizer_any_point_with_given_group "
2778 "Computing point stabilizer:" << endl;
2786 cout <<
"action::point_stabilizer_any_point_with_given_group "
2787 "Computing point stabilizer done:" << endl;
2788 cout <<
"action::point_stabilizer_any_point_with_given_group "
2789 "point stabilizer is a group of order " << go << endl;
2793 cout <<
"action::point_stabilizer_any_point_with_given_group "
2794 "computing strong generators for the point stabilizer:"
2800 cout <<
"action::point_stabilizer_any_point_with_given_group "
2801 "strong generators for the point stabilizer "
2802 "have been computed" << endl;
2806 cout <<
"action::point_stabilizer_any_point_with_given_group done"
2813 long int line_rk,
int *Elt,
int verbose_level)
2815 int f_v = (verbose_level >= 1);
2818 cout <<
"action::make_element_which_moves_a_line_in_PG3q" << endl;
2831 for (i = r; i < 4; i++) {
2832 for (j = 0; j < 4; j++) {
2833 if (j == base_cols[i]) {
2847 cout <<
"action::make_element_which_moves_a_line_in_PG3q done" << endl;
2866 int vector_space_dimension;
2869 return vector_space_dimension;
2872 cout <<
"action::matrix_group_dimension not a matrix group" << endl;
2874 action_print_symmetry_group_type(cout,
type_G);
2886 cout <<
"action::matrix_group_finite_field is not a matrix group" << endl;
2900 cout <<
"action::is_semilinear_matrix_group is not a matrix group" << endl;
2919 cout <<
"action::is_projective is not a matrix group" << endl;
2938 cout <<
"action::is_affine is not a matrix group" << endl;
2957 cout <<
"action::is_general_linear is not a matrix group" << endl;
2989 cout <<
"action::get_matrix_group type_G == unknown_symmetry_group_t" << endl;
2996 cout <<
"action::get_matrix_group type_G == perm_group_t" << endl;
3000 cout <<
"action::get_matrix_group type_G == wreath_product_t" << endl;
3004 cout <<
"action::get_matrix_group type_G == direct_product_t" << endl;
3026 cout <<
"action::get_matrix_group type_G == product_action_t" << endl;
3084 cout <<
"action::get_matrix_group unknown type" << endl;
3091 int f_v = (verbose_level >= 1);
3094 cout <<
"action::perform_tests" << endl;
3121 for (cnt = 0; cnt < 10; cnt++) {
3125 cout <<
"r1=" << r1 << endl;
3126 cout <<
"r2=" << r2 << endl;
3131 cout <<
"Elt1 = " << endl;
3136 cout <<
"as permutation: " << endl;
3142 cout <<
"Elt2 = " << endl;
3147 cout <<
"as permutation: " << endl;
3154 cout <<
"Elt3 = " << endl;
3159 cout <<
"as permutation: " << endl;
3166 cout <<
"perm1 * perm2= " << endl;
3171 for (i = 0; i <
degree; i++) {
3172 if (perm3[i] != perm4[i]) {
3173 cout <<
"test " << cnt
3174 <<
" failed; something is wrong" << endl;
3180 cout <<
"action::perform_tests test 1 passed" << endl;
3183 for (cnt = 0; cnt < 10; cnt++) {
3186 cout <<
"r1=" << r1 << endl;
3190 cout <<
"Elt1 = " << endl;
3195 cout <<
"as permutation: " << endl;
3201 cout <<
"Elt2 = " << endl;
3206 cout <<
"as permutation: " << endl;
3213 cout <<
"Elt3 = " << endl;
3218 cout <<
"as permutation: " << endl;
3224 cout <<
"fails the inverse test" << endl;
3230 cout <<
"action::perform_tests test 2 passed" << endl;
3234 for (cnt = 0; cnt < 10; cnt++) {
3238 cout <<
"r1=" << r1 << endl;
3239 cout <<
"r2=" << r2 << endl;
3244 cout <<
"Elt1 = " << endl;
3249 cout <<
"as permutation: " << endl;
3255 cout <<
"Elt2 = " << endl;
3260 cout <<
"as permutation: " << endl;
3267 cout <<
"Elt3 = " << endl;
3273 cout <<
"Elt4 = Elt3^-1 = " << endl;
3280 cout <<
"as Elt3 as permutation: " << endl;
3287 cout <<
"as Elt4 as permutation: " << endl;
3294 cout <<
"perm3 * perm4= " << endl;
3299 for (i = 0; i <
degree; i++) {
3300 if (perm5[i] != i) {
3301 cout <<
"test " << cnt
3302 <<
" failed; something is wrong" << endl;
3308 cout <<
"action::perform_tests test 3 passed" << endl;
3313 cout <<
"performing test 4:" << endl;
3316 int data[] = {2,0,1, 0,1,1,0, 1,0,0,1, 1,0,0,1 };
3320 cout <<
"as Elt1 as permutation: " << endl;
3328 cout <<
"as Elt2 as permutation: " << endl;
3336 cout <<
"Elt3 = " << endl;
3342 cout <<
"perm1 * perm2= " << endl;
3347 for (i = 0; i <
degree; i++) {
3348 if (perm3[i] != i) {
3349 cout <<
"test 4 failed; something is wrong" << endl;
3355 cout <<
"action::perform_tests test 4 passed" << endl;
3372 int f_v = (verbose_level >= 1);
3375 cout <<
"action::multiply_based_on_text" << endl;
3378 cout <<
"multiplying" << endl;
3379 cout <<
"A=" << data_A << endl;
3380 cout <<
"B=" << data_B << endl;
3392 cout <<
"A=" << endl;
3398 cout <<
"B=" << endl;
3404 cout <<
"A*B=" << endl;
3412 fname.assign(
label);
3413 fname.append(
"_mult.tex");
3420 snprintf(title, 1000,
"Multiplication of Group Elements in $%s$",
label_tex.c_str());
3426 ofstream ost(fname);
3441 ost <<
"$$" << endl;
3443 ost <<
"\\cdot" << endl;
3447 ost <<
"$$" << endl;
3450 ost <<
"\\\\" << endl;
3452 ost <<
"\\\\" << endl;
3454 ost <<
"\\\\" << endl;
3462 cout <<
"written file " << fname <<
" of size "
3474 cout <<
"action::multiply_based_on_text" << endl;
3480 int f_v = (verbose_level >= 1);
3483 cout <<
"action::inverse_based_on_text" << endl;
3487 cout <<
"computing the inverse" << endl;
3488 cout <<
"A=" << data_A << endl;
3498 cout <<
"A=" << endl;
3504 cout <<
"A^-1=" << endl;
3512 fname.assign(
label);
3513 fname.append(
"_inv.tex");
3520 snprintf(title, 1000,
"Inverse of Group Element in $%s$",
label_tex.c_str());
3526 ofstream ost(fname);
3541 ost <<
"$$" << endl;
3544 ost <<
"}^{-1}" << endl;
3547 ost <<
"$$" << endl;
3550 ost <<
"\\\\" << endl;
3552 ost <<
"\\\\" << endl;
3560 cout <<
"written file " << fname <<
" of size "
3571 cout <<
"action::inverse_based_on_text done" << endl;
3576 std::string &exponent_text,
int verbose_level)
3578 int f_v = (verbose_level >= 1);
3581 cout <<
"action::raise_to_the_power_based_on_text" << endl;
3585 cout <<
"computing the power" << endl;
3586 cout <<
"A=" << data_A << endl;
3587 cout <<
"exponent=" << exponent_text << endl;
3593 exponent = ST.
strtoi(exponent_text);
3603 cout <<
"A=" << endl;
3614 cout <<
"A^" << exponent <<
"=" << endl;
3622 fname.assign(
label);
3623 fname.append(
"_power.tex");
3630 snprintf(title, 1000,
"Power of Group Element in $%s$",
label_tex.c_str());
3636 ofstream ost(fname);
3651 ost <<
"$$" << endl;
3654 ost <<
"}^{" << exponent <<
"}" << endl;
3657 ost <<
"$$" << endl;
3660 ost <<
"\\\\" << endl;
3662 ost <<
"\\\\" << endl;
3670 cout <<
"written file " << fname <<
" of size "
3681 cout <<
"action::raise_to_the_power_based_on_text done" << endl;
a collection of combinatorial functions
int perm_is_identity(int *a, long int n)
void perm_mult(int *a, int *b, int *c, long int n)
void perm_print(std::ostream &ost, int *a, int n)
int minimum(int *v, int len)
data structure for set partitions following Jeffrey Leon
std::ostream & print(std::ostream &ost)
void allocate(int n, int verbose_level)
a collection of functions related to sorted vectors
void lint_vec_quicksort_increasingly(long int *v, int len)
int lint_vec_compare(long int *p, long int *q, int len)
int lint_vec_search(long int *v, int len, long int a, int &idx, int verbose_level)
void lint_vec_heapsort(long int *v, int len)
linear_algebra::linear_algebra * Linear_algebra
to rank and unrank subspaces of a fixed dimension in F_q^n
field_theory::finite_field * F
void unrank_lint_here(int *Mtx, long int rk, int verbose_level)
provides access to pre-computed combinatorial data in encoded form
void quartic_curves_stab_gens(int q, int i, int *&data, int &nb_gens, int &data_size, std::string &stab_order_str)
void Spread_stab_gens(int q, int k, int i, int *&data, int &nb_gens, int &data_size, std::string &stab_order_str)
void DH_stab_gens(int k, int n, int i, int *&data, int &nb_gens, int &data_size, std::string &stab_order_str)
void kernel_columns(int n, int nb_base_cols, int *base_cols, int *kernel_cols)
int Gauss_simple(int *A, int m, int n, int *base_cols, int verbose_level)
void matrix_inverse(int *A, int *Ainv, int n, int verbose_level)
basic number theoretic functions
long int gcd_lint(long int m, long int n)
a collection of functions related to file io
long int file_size(std::string &fname)
interface to create latex output files
void head(std::ostream &ost, int f_book, int f_title, const char *title, const char *author, int f_toc, int f_landscape, int f_12pt, int f_enlarged_page, int f_pagenumbers, const char *extras_for_preamble)
void foot(std::ostream &ost)
data_structures::int_vec * Int_vec
long int nb_times_action_created
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)
a class to represent arbitrary precision integers
void create_from_base_10_string(const char *str, int verbose_level)
void create(long int i, const char *file, int line)
global functions related to group actions
void action_print_symmetry_group_type(std::ostream &ost, symmetry_group_type a)
int *& get_transversal_length()
void init_group_from_generators_by_base_images(groups::sims *S, int *group_generator_data, int group_generator_size, int f_group_order_target, const char *group_order_target, data_structures_groups::vector_ge *gens, groups::strong_generators *&Strong_gens_out, int verbose_level)
void element_print_latex(void *elt, std::ostream &ost)
void element_print_as_permutation_with_offset(void *elt, std::ostream &ost, int offset, int f_do_it_anyway_even_for_big_degree, int f_print_cycles_of_length_one, int verbose_level)
void build_up_automorphism_group_from_aut_data(int nb_auts, int *aut_data, groups::sims &S, int verbose_level)
void point_stabilizer_any_point(int &pt, groups::schreier *&Sch, groups::sims *&Stab, groups::strong_generators *&stab_gens, int verbose_level)
int product_has_order_two(int *E1, int *E2, int verbose_level)
void compute_all_point_orbits(groups::schreier &S, data_structures_groups::vector_ge &gens, int verbose_level)
void element_print_quick(void *elt, std::ostream &ost)
int f_has_stabilizer_chain
void element_print(void *elt, std::ostream &ost)
void mult(void *a, void *b, void *ab)
void make_element_from_permutation_representation(int *Elt, groups::sims *S, int *data, int verbose_level)
int coded_elt_size_in_char
long int & orbit_inv_ij(int i, int j)
void inverse_based_on_text(std::string &data_A, int verbose_level)
void element_retrieve(int hdl, void *elt, int verbose_level)
void element_base_images_verbose(int *Elt, int *base_images, int verbose_level)
int product_has_order_three(int *E1, int *E2, int verbose_level)
void element_print_base_images_verbose(int *Elt, std::ostream &ost, int verbose_level)
void all_point_orbits(groups::schreier &Schreier, int verbose_level)
int element_order_if_divisor_of(void *elt, int o)
int least_image_of_point_generators_by_handle(std::vector< int > &gen_handle, int pt, int *transporter, int verbose_level)
void print_symmetry_group_type(std::ostream &ost)
void map_a_set(long int *set, long int *image_set, int n, int *Elt, int verbose_level)
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)
void element_print_for_make_element(void *elt, std::ostream &ost)
int compute_orbit_of_point_generators_by_handle(int nb_gen, int *gen_handle, int pt, int *orbit, int verbose_level)
void strong_generators_at_depth(int depth, data_structures_groups::vector_ge &gen, int verbose_level)
symmetry_group_type type_G
void raise_to_the_power_based_on_text(std::string &data_A, std::string &exponent_text, int verbose_level)
groups::strong_generators * Strong_gens
void init_sims_only(groups::sims *G, int verbose_level)
int element_order_and_cycle_type_verbose(void *elt, int *cycle_type, int verbose_level)
void make_element_from_string(int *Elt, std::string &data_string, int verbose_level)
int count_fixed_points(void *elt, int verbose_level)
void compute_strong_generators_from_sims(int verbose_level)
int element_has_order_two(int *E1, int verbose_level)
int check_if_transporter_for_set(int *Elt, int size, long int *set1, long int *set2, int verbose_level)
void stabilizer_of_dual_hyperoval_representative(int k, int n, int no, data_structures_groups::vector_ge *&gens, std::string &stab_order, int verbose_level)
void get_generators_from_ascii_coding(char *ascii_coding, data_structures_groups::vector_ge *&gens, int *&tl, int verbose_level)
int f_has_strong_generators
void element_print_base_images(int *Elt)
stabilizer_chain_base_data * Stabilizer_chain
void make_element_which_moves_a_line_in_PG3q(geometry::grassmann *Gr, long int line_rk, int *Elt, int verbose_level)
void element_invert(void *a, void *av, int verbose_level)
void perform_tests(groups::strong_generators *SG, int verbose_level)
void element_one(void *elt, int verbose_level)
int f_subaction_is_allocated
int & transversal_length_i(int i)
int matrix_group_dimension()
void point_stabilizer_any_point_with_given_group(groups::strong_generators *input_gens, int &pt, groups::schreier *&Sch, groups::sims *&Stab, groups::strong_generators *&stab_gens, int verbose_level)
void element_base_images(int *Elt, int *base_images)
int f_group_order_is_small
void compute_stabilizer_orbits(data_structures::partitionstack *&Staborbits, int verbose_level)
int is_semilinear_matrix_group()
long int & orbit_ij(int i, int j)
void compute_set_orbit(data_structures_groups::vector_ge &gens, int size, long int *set, int &nb_sets, long int **&Sets, int **&Transporter, int verbose_level)
void lexorder_test(long int *set, int set_sz, int &set_sz_after_test, data_structures_groups::vector_ge *gens, int max_starter, int verbose_level)
field_theory::finite_field * matrix_group_finite_field()
void element_power_int_in_place(int *Elt, int n, int verbose_level)
int element_order_and_cycle_type(void *elt, int *cycle_type)
void make_element(int *Elt, int *data, int verbose_level)
void stabilizer_of_spread_representative(int q, int k, int no, data_structures_groups::vector_ge *&gens, std::string &stab_order, int verbose_level)
int find_non_fixed_point(void *elt, int verbose_level)
char * element_rw_memory_object
void all_point_orbits_from_single_generator(groups::schreier &Schreier, int *Elt, int verbose_level)
void element_as_permutation(void *elt, int *perm, int verbose_level)
void multiply_based_on_text(std::string &data_A, std::string &data_B, int verbose_level)
int test_if_set_stabilizes(int *Elt, int size, long int *set, int verbose_level)
void word_in_ab(int *Elt1, int *Elt2, int *Elt3, const char *word, int verbose_level)
int least_image_of_point(data_structures_groups::vector_ge &strong_generators, int pt, int *transporter, int verbose_level)
void set_base_len(int base_len)
void element_move(void *a, void *b, int verbose_level)
void make_element_2x2(int *Elt, int a0, int a1, int a2, int a3)
void stabilizer_of_quartic_curve_representative(int q, int no, data_structures_groups::vector_ge *&gens, std::string &stab_order, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
groups::matrix_group * get_matrix_group()
int check_if_in_set_stabilizer(int *Elt, int size, long int *set, int verbose_level)
void init_group_from_generators(int *group_generator_data, int group_generator_size, int f_group_order_target, const char *group_order_target, data_structures_groups::vector_ge *gens, groups::strong_generators *&Strong_gens, int verbose_level)
void compute_point_stabilizer_chain(data_structures_groups::vector_ge &gen, groups::sims *S, int *sequence, int len, int verbose_level)
void compute_minimal_set(data_structures_groups::vector_ge &gens, int size, long int *set, long int *minimal_set, int *transporter, int verbose_level)
void make_element_from_base_image(int *Elt, groups::sims *S, int *data, int verbose_level)
void all_point_orbits_from_generators(groups::schreier &Schreier, groups::strong_generators *SG, int verbose_level)
long int group_order_lint()
void minimize_base_images(int level, groups::sims *S, int *Elt, int verbose_level)
int find_fixed_points(void *elt, int *fixed_points, int verbose_level)
void allocate_element_data()
int depth_in_stab_chain(int *Elt)
int compute_orbit_of_point(data_structures_groups::vector_ge &strong_generators, int pt, int *orbit, int verbose_level)
void element_print_as_permutation(void *elt, std::ostream &ost)
action_pointer_table * ptr
void map_a_set_and_reorder(long int *set, long int *image_set, int n, int *Elt, int verbose_level)
void compute_orbits_on_points(groups::schreier *&Sch, data_structures_groups::vector_ge *gens, int verbose_level)
void move(void *a, void *b)
void delete_set_orbit(int nb_sets, long int **Sets, int **Transporter)
int element_order(void *elt)
long int element_image_of(long int a, void *elt, int verbose_level)
int *& get_transversal_length()
int & transversal_length_i(int i)
void group_order(ring_theory::longinteger_object &go)
void init_base_from_sims(groups::sims *G, int verbose_level)
long int & orbit_inv_ij(int i, int j)
long int & orbit_ij(int i, int j)
a container data structure for groups
to hold a vector of group elements
void allocate(int length, int verbose_level)
void copy_in(int i, int *elt)
void print(std::ostream &ost)
void init_from_data(actions::action *A, int *data, int nb_elements, int elt_size, int verbose_level)
void init(actions::action *A, int verbose_level)
void make_element(int *Elt, int *data, int verbose_level)
a matrix group over a finite field in projective, vector space or affine action
void make_element(int *Elt, int *data, int verbose_level)
field_theory::finite_field * GFq
void make_element(int *Elt, int *data, int verbose_level)
Schreier trees for orbits of groups on points.
void print_and_list_orbits(std::ostream &ost)
void compute_all_point_orbits(int verbose_level)
void init_generators(data_structures_groups::vector_ge &generators, int verbose_level)
void compute_point_orbit(int pt, int verbose_level)
void print_orbit_length_distribution(std::ostream &ost)
void point_stabilizer(actions::action *default_action, ring_theory::longinteger_object &go, groups::sims *&Stab, int orbit_no, int verbose_level)
void init(actions::action *A, int verbose_level)
void print(std::ostream &ost)
void compute_all_orbits_on_invariant_subset(int len, long int *subset, int verbose_level)
void get_orbit_partition(data_structures::partitionstack &S, int verbose_level)
void coset_rep(int j, int verbose_level)
a permutation group represented via a stabilizer chain
void element_from_path_inv(int *elt)
int get_orbit(int i, int j)
int get_orbit_inv(int i, int j)
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_transversals_short()
int closure_group(int nb_times, int verbose_level)
void coset_rep(int *Elt, int i, int j, int verbose_level)
void init_generators(data_structures_groups::vector_ge &generators, int verbose_level)
void print_transversal_lengths()
void compute_base_orbits(int verbose_level)
void print_group_order(std::ostream &ost)
int get_orbit_length(int i)
void point_stabilizer_stabchain_with_action(actions::action *A2, sims &S, int pt, int verbose_level)
int strip_and_add(int *elt, int *residue, int verbose_level)
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
void group_order(ring_theory::longinteger_object &go)
int dimension_of_tensor_action
void make_element(int *Elt, int *data, int verbose_level)
induced product action of two group actions
void make_element(int *Elt, int *data, int verbose_level)
#define Int_vec_scan(A, B, C)
#define Int_vec_zero(A, B)
#define Lint_vec_print(A, B, C)
#define NEW_OBJECTS(type, n)
#define Int_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
@ action_by_restriction_t
@ action_on_factor_space_t
@ unknown_symmetry_group_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_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_wedge_product * AW
induced_actions::action_by_conjugation * ABC
induced_actions::action_by_representation * Rep
induced_actions::action_on_bricks * OnBricks
induced_actions::action_by_subfield_structure * SubfieldStructure
induced_actions::action_on_grassmannian * AG
groups::wreath_product * wreath_product_group
groups::direct_product * direct_product_group
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_factor_space * AF
induced_actions::action_on_andre * OnAndre
groups::permutation_representation_domain * perm_grp
induced_actions::action_on_k_subsets * on_k_subsets