16namespace layer5_applications {
17namespace apps_algebra {
49 int f_v = (verbose_level >= 1);
52 cout <<
"any_group::init_linear_group" << endl;
65 cout <<
"any_group::init_linear_group !LG->f_has_strong_generators" << endl;
71 cout <<
"any_group::init_linear_group before Subgroup_gens->create_sims" << endl;
75 cout <<
"any_group::init_linear_group after Subgroup_gens->create_sims" << endl;
79 cout <<
"any_group::init_linear_group done" << endl;
85 int f_v = (verbose_level >= 1);
88 cout <<
"any_group::init_linear_group" << endl;
101 cout <<
"any_group::init_linear_group !PGC->f_has_strong_generators" << endl;
107 cout <<
"any_group::init_permutation_group before Subgroup_gens->create_sims_in_different_action" << endl;
113 cout <<
"any_group::init_permutation_group after Subgroup_gens->create_sims_in_different_action" << endl;
117 cout <<
"any_group::init_linear_group done" << endl;
123 int f_v = (verbose_level >= 1);
126 cout <<
"any_group::init_modified_group" << endl;
136 cout <<
"any_group::init_linear_group !PGC->f_has_strong_generators" << endl;
145 cout <<
"any_group::init_modified_group done" << endl;
153 int f_sylow,
int f_group_table,
int f_classes,
156 int f_v = (verbose_level >= 1);
160 cout <<
"any_group::create_latex_report" << endl;
165 cout <<
"any_group::create_latex_report linear group" << endl;
168 f_sylow, f_group_table, f_classes,
173 cout <<
"any_group::create_latex_report permutation group" << endl;
181 cout <<
"any_group::create_latex_report modified group" << endl;
189 cout <<
"any_group::create_latex_report unknown type of group" << endl;
196 int f_v = (verbose_level >= 1);
199 cout <<
"any_group::do_export_orbiter" << endl;
206 cout <<
"any_group::do_export_orbiter label=" <<
label << endl;
209 fname.append(
".makefile");
215 cout <<
"any_group::do_export_orbiter using Subgroup_gens" << endl;
221 cout <<
"any_group::do_export_orbiter using A_base->Strong_gens" << endl;
226 cout <<
"any_group::do_export_orbiter no generators to export" << endl;
231 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
235 cout <<
"any_group::do_export_orbiter done" << endl;
243 int f_v = (verbose_level >= 1);
246 cout <<
"any_group::do_export_gap" << endl;
253 fname.append(
"_generators.gap");
259 cout <<
"any_group::do_export_gap using Subgroup_gens" << endl;
265 cout <<
"any_group::do_export_gap using A_base->Strong_gens" << endl;
270 cout <<
"any_group::do_export_gap no generators to export" << endl;
275 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
279 cout <<
"any_group::do_export_gap done" << endl;
285 int f_v = (verbose_level >= 1);
288 cout <<
"any_group::do_export_magma" << endl;
295 fname.append(
"_generators.magma");
304 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
309 cout <<
"any_group::do_export_magma done" << endl;
315 int f_v = (verbose_level >= 1);
318 cout <<
"any_group::do_canonical_image_GAP" << endl;
325 fname.append(
"_canonical_image.gap");
334 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
339 cout <<
"any_group::do_canonical_image_GAP done" << endl;
345 int f_v = (verbose_level >= 1);
348 cout <<
"any_group::create_group_table" << endl;
357 cout <<
"group order = " << goi << endl;
369 cout <<
"any_group::create_group_table n != goi" << endl;
374 fname.append(
"_group_table.csv");
376 cout <<
"The group table is:" << endl;
380 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
385 cout <<
"any_group::create_group_table done" << endl;
391 int f_v = (verbose_level >= 1);
394 cout <<
"any_group::normalizer" << endl;
396 string fname_magma_prefix;
405 fname_magma_prefix.assign(
LG->
label);
406 fname_magma_prefix.append(
"_normalizer");
414 cout <<
"before A->normalizer_using_MAGMA" << endl;
417 G, H, gens_N, verbose_level);
424 cout <<
"group order H = " << H_order << endl;
427 cout <<
"group order N = " << N_order << endl;
428 cout <<
"Strong generators for the normalizer of H are:" << endl;
430 cout <<
"Strong generators for the normalizer of H as permutations are:" << endl;
438 fname.assign(fname_magma_prefix);
439 fname.append(
".tex");
446 snprintf(title, 1000,
"Normalizer of subgroup %s",
LG->
label_tex.c_str());
466 ost <<
"\\noindent The group $" <<
LG->
label_tex <<
"$ "
467 "of order " << H_order <<
" is:\\\\" << endl;
470 ost <<
"\\bigskip" << endl;
472 ost <<
"Inside the group of order " << G_order <<
", "
473 "the normalizer has order " << N_order <<
":\\\\" << endl;
475 cout <<
"group_theoretic_activity::normalizer before report" << endl;
480 cout <<
"group_theoretic_activity::normalizer after report" << endl;
489 cout <<
"written file " << fname <<
" of size "
496 cout <<
"any_group::normalizer done" << endl;
501 std::string &element_label,
502 std::string &element_description_text,
505 int f_v = (verbose_level >= 1);
508 cout <<
"any_group::centralizer" << endl;
520 cout <<
"any_group::centralizer "
521 "before Algebra.centralizer_of_element" << endl;
525 element_description_text,
526 element_label, verbose_level);
528 cout <<
"any_group::centralizer "
529 "after Algebra.centralizer_of_element" << endl;
535 cout <<
"any_group::centralizer done" << endl;
540 std::string &element_label,
541 std::string &element_description_text,
544 int f_v = (verbose_level >= 1);
547 cout <<
"any_group::normalizer_of_cyclic_subgroup" << endl;
558 cout <<
"any_group::normalizer_of_cyclic_subgroup "
559 "before Algebra.normalizer_of_cyclic_subgroup" << endl;
563 element_description_text,
564 element_label, verbose_level);
566 cout <<
"any_group::normalizer_of_cyclic_subgroup "
567 "after Algebra.normalizer_of_cyclic_subgroup" << endl;
573 cout <<
"any_group::normalizer_of_cyclic_subgroup done" << endl;
579 int order_of_subgroup,
582 int f_v = (verbose_level >= 1);
585 cout <<
"any_group::do_find_subgroups" << endl;
611 cout <<
"We found " << nb_subgroups <<
" subgroups" << endl;
616 const char *author =
"Orbiter";
617 const char *extras_for_preamble =
"";
622 fname.append(
"_report.tex");
627 sprintf(str,
"Subgroups of order $%d$ in $", order_of_subgroup);
639 title.c_str(), author,
642 extras_for_preamble);
645 nb_subgroups, H_gens, N_gens,
651 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
660 cout <<
"any_group::do_find_subgroups done" << endl;
667 int f_v = (verbose_level >= 1);
670 cout <<
"any_group::print_elements" << endl;
695 for (i = 0; i < go.
as_lint(); i++) {
698 cout <<
"Element " << setw(5) << i <<
" / "
699 << go.
as_int() <<
":" << endl;
710 cout <<
"any_group::print_elements done" << endl;
717 int f_v = (verbose_level >= 1);
720 cout <<
"any_group::print_elements_tex" << endl;
745 fname.append(
"_elements.tex");
764 cout <<
"any_group::print_elements_tex done" << endl;
769 std::string &Elements_text,
772 int f_v = (verbose_level >= 1);
775 cout <<
"any_group::order_of_products_of_elements" << endl;
805 fname.append(
"_elements.tex");
823 int *Elt1, *Elt2, *Elt3;
829 order_table =
NEW_int(nb_elements * nb_elements);
830 for (i = 0; i < nb_elements; i++) {
835 for (j = 0; j < nb_elements; j++) {
853 nb_elements, nb_elements, elements, elements,
TRUE );
861 cout <<
"any_group::order_of_products_of_elements done" << endl;
867 int f_v = (verbose_level >= 1);
870 cout <<
"any_group::save_elements_csv" << endl;
877 cout <<
"any_group::save_elements_csv done" << endl;
882 std::string &fname2, std::string &fname3,
883 int f_column_major_ordering,
int verbose_level)
885 int f_v = (verbose_level >= 1);
888 cout <<
"any_group::multiply_elements_csv" << endl;
904 cout <<
"any_group::multiply_elements_csv "
905 "n1=" << V1.
len <<
" n2=" << V2.
len <<
" n3=" << n3 << endl;
911 if (f_column_major_ordering) {
913 for (j = 0; j < n2; j++) {
914 for (i = 0; i < n1; i++, k++) {
921 for (i = 0; i < n1; i++) {
922 for (j = 0; j < n2; j++, k++) {
933 cout <<
"any_group::multiply_elements_csv done" << endl;
938 std::string &set_text,
941 int f_v = (verbose_level >= 1);
944 cout <<
"any_group::apply_elements_to_set_csv" << endl;
968 cout <<
"any_group::apply_elements_to_set_csv "
969 "n1=" << V1.
len << endl;
972 for (i = 0; i < n1; i++) {
976 for (j = 0; j < sz; j++) {
977 set_image_int[j] = set_image[j];
990 cout <<
"Image sets by rank: ";
996 cout <<
"any_group::apply_elements_to_set_csv "
997 "The set Rk is *not* a permutation" << endl;
1001 cout <<
"any_group::apply_elements_to_set_csv "
1002 "The set Rk is a permutation" << endl;
1010 cout <<
"any_group::apply_elements_to_set_csv done" << endl;
1019 int f_v = (verbose_level >= 1);
1022 cout <<
"any_group::element_rank" << endl;
1043 cout <<
"creating element " << elt_data << endl;
1051 cout <<
"Element :" << endl;
1060 cout <<
"The rank of the element is " << a << endl;
1070 cout <<
"any_group::element_rank done" << endl;
1076 int f_v = (verbose_level >= 1);
1079 cout <<
"any_group::element_unrank" << endl;
1109 cout <<
"Creating element of rank " << a << endl;
1115 cout <<
"Element :" << endl;
1125 cout <<
"any_group::element_unrank done" << endl;
1133 int f_v = (verbose_level >= 1);
1136 cout <<
"any_group::conjugacy_class_of" << endl;
1156 cout <<
"creating element " << elt_data << endl;
1170 cout <<
"Creating element of rank " << a << endl;
1174 H->element_unrank(a, Elt);
1178 cout <<
"Element :" << endl;
1190 cout <<
"created action A_conj of degree " << A_conj->
degree << endl;
1196 A_conj, b.
as_lint(), verbose_level);
1198 cout <<
"Orbits on itself by conjugation:\\\\" << endl;
1214 cout <<
"Found an orbit of size " << Orb.
used_length << endl;
1216 std::vector<long int> Orbit;
1218 cout <<
"before Orb.get_orbit_of_points" << endl;
1220 cout <<
"Found an orbit of size " << Orbit.size() << endl;
1226 for (i = 0; i < Orbit.size(); i++) {
1236 fname.append(
"_class_of_");
1237 fname.append(elt_data);
1238 fname.append(
".csv");
1242 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
1255 cout <<
"any_group::conjugacy_class_of done" << endl;
1262 int f_v = (verbose_level >= 1);
1266 cout <<
"any_group::do_reverse_isomorphism_exterior_square" << endl;
1272 cout <<
"any_group::do_reverse_isomorphism_exterior_square nice generators are:" << endl;
1279 cout <<
"any_group::do_reverse_isomorphism_exterior_square strong generators are:" << endl;
1286 cout <<
"any_group::do_reverse_isomorphism_exterior_square done" << endl;
1293 int number_of_columns,
int first_column,
int verbose_level)
1295 int f_v = (verbose_level >= 1);
1298 cout <<
"any_group::orbits_on_set_system_from_file" << endl;
1301 cout <<
"computing orbits on set system from file "
1302 << fname_csv <<
":" << endl;
1311 m, n, verbose_level);
1313 cout <<
"read a matrix of size " << m <<
" x " << n << endl;
1321 Table =
NEW_lint(m * number_of_columns);
1322 for (i = 0; i < m; i++) {
1323 for (j = 0; j < number_of_columns; j++) {
1324 Table[i * number_of_columns + j] =
1325 M[i * n + first_column + j];
1331 set_size = number_of_columns;
1334 cout <<
"creating action on sets:" << endl;
1344 cout <<
"computing orbits on sets:" << endl;
1350 cout <<
"The orbit lengths are:" << endl;
1355 cout <<
"The orbits are:" << endl;
1358 cout <<
" Orbit " << i <<
" / " << Sch->
nb_orbits
1363 a = Sch->
orbit[first + 0];
1373 fname.assign(fname_csv);
1375 fname.append(
"_orbit_reps.txt");
1378 ofstream ost(fname);
1383 a = Sch->
orbit[first + 0];
1385 for (j = 0; j < set_size; j++) {
1386 ost <<
" " << Table[a * set_size + j];
1390 ost << -1 <<
" " << Sch->
nb_orbits << endl;
1393 cout <<
"any_group::orbits_on_set_system_from_file done" << endl;
1399 int f_v = (verbose_level >= 1);
1402 cout <<
"any_group::orbits_on_set_from_file" << endl;
1406 cout <<
"computing orbit of set from file "
1407 << fname_csv <<
":" << endl;
1414 the_set, set_sz, 0 );
1416 cout <<
"read a set of size " << set_sz << endl;
1423 label_set.assign(fname_csv);
1442 cout <<
"any_group::orbits_on_set_from_file done" << endl;
1449 int f_v = (verbose_level >= 1);
1452 cout <<
"any_group::orbit_of" << endl;
1457 cout <<
"computing orbit of point " << point_idx <<
":" << endl;
1461 Sch->
init(
A, verbose_level - 2);
1463 cout <<
"any_group::orbit_of !f_has_strong_generators" << endl;
1471 cout <<
"computing orbit of point done." << endl;
1473 string fname_tree_mask;
1476 fname_tree_mask.assign(
LG->
label);
1477 sprintf(str,
"_orbit_of_point_%d.layered_graph", point_idx);
1478 fname_tree_mask.append(str);
1490 cout <<
"computing the stabilizer of the orbit rep:" << endl;
1495 cout <<
"The stabilizer of the orbit rep has been computed:" << endl;
1502 cout <<
"computing shallow Schreier tree:" << endl;
1512 int f_randomized =
TRUE;
1519 cout <<
"computing shallow Schreier tree done." << endl;
1521 fname_tree_mask.assign(
label);
1522 fname_tree_mask.append(
"_%d_shallow.layered_graph");
1528 cout <<
"any_group::orbit_of done" << endl;
1534 int f_v = (verbose_level >= 1);
1537 cout <<
"any_group::orbits_on_points" << endl;
1542 int f_load_save =
TRUE;
1545 prefix.assign(
label);
1548 cout <<
"any_group::orbits_on_points before Algebra.orbits_on_points" << endl;
1558 cout <<
"any_group::orbits_on_points after Algebra.orbits_on_points" << endl;
1563 cout <<
"any_group::orbits_on_points done" << endl;
1573 int f_v = (verbose_level >= 1);
1576 cout <<
"any_group::orbits_on_subsets subset_size=" << subset_size << endl;
1584 cout <<
"any_group::orbits_on_subsets control=" << endl;
1588 cout <<
"any_group::orbits_on_subsets label=" <<
label << endl;
1591 cout <<
"any_group::orbits_on_subsets A_base=" << endl;
1595 cout <<
"any_group::orbits_on_subsets A=" << endl;
1599 cout <<
"any_group::orbits_on_subsets group order" << endl;
1610 cout <<
"any_group::orbits_on_subsets "
1611 "before Poset->init_subset_lattice" << endl;
1618 cout <<
"any_group::orbits_on_subsets "
1619 "before Poset->orbits_on_k_sets_compute" << endl;
1626 cout <<
"any_group::orbits_on_subsets "
1627 "after Poset->orbits_on_k_sets_compute" << endl;
1631 cout <<
"any_group::orbits_on_subsets "
1632 "before orbits_on_poset_post_processing" << endl;
1638 cout <<
"any_group::orbits_on_subsets "
1639 "after orbits_on_poset_post_processing" << endl;
1644 cout <<
"any_group::orbits_on_subsets done" << endl;
1654 int f_v = (verbose_level >= 1);
1657 cout <<
"any_group::orbits_on_poset_post_processing" << endl;
1663 if (Descr->f_test_if_geometric) {
1664 int d = Descr->test_if_geometric_depth;
1668 cout <<
"Orbits on subsets of size " << d <<
":" << endl;
1677 int nb_orbits, orbit_idx;
1680 for (orbit_idx = 0; orbit_idx < nb_orbits; orbit_idx++) {
1685 cout <<
"before PC->get_whole_orbit depth " << d
1686 <<
" orbit " << orbit_idx
1687 <<
" / " << nb_orbits <<
":" << endl;
1690 Orbit, orbit_length, verbose_level);
1691 cout <<
"depth " << d <<
" orbit " << orbit_idx
1692 <<
" / " << nb_orbits <<
" has length "
1693 << orbit_length <<
":" << endl;
1697 longinteger_object ago;
1698 nauty_interface_with_group Nauty;
1700 Aut = Nauty.create_automorphism_group_of_block_system(
1705 Aut->group_order(ago);
1706 cout <<
"The automorphism group of the set system "
1707 "has order " << ago << endl;
1712 if (nb_orbits == 2) {
1713 cout <<
"the number of orbits at depth " << depth
1714 <<
" is two, we will try create_automorphism_"
1715 "group_of_collection_of_two_block_systems" << endl;
1721 cout <<
"before PC->get_whole_orbit depth " << d
1722 <<
" orbit " << orbit_idx
1723 <<
" / " << nb_orbits <<
":" << endl;
1726 Orbit1, orbit_length1, verbose_level);
1727 cout <<
"depth " << d <<
" orbit " << 0
1728 <<
" / " << nb_orbits <<
" has length "
1729 << orbit_length1 <<
":" << endl;
1734 Orbit2, orbit_length2, verbose_level);
1735 cout <<
"depth " << d <<
" orbit " << 1
1736 <<
" / " << nb_orbits <<
" has length "
1737 << orbit_length2 <<
":" << endl;
1741 longinteger_object ago;
1742 nauty_interface_with_group Nauty;
1744 Aut = Nauty.create_automorphism_group_of_collection_of_two_block_systems(
1751 Aut->group_order(ago);
1752 cout <<
"The automorphism group of the collection of two set systems "
1753 "has order " << ago << endl;
1766 cout <<
"any_group::orbits_on_poset_post_processing done" << endl;
1779 std::string &elt_label, std::string &elt_text,
int verbose_level)
1781 int f_v = (verbose_level >= 1);
1784 cout <<
"any_group::do_conjugacy_class_of_element" << endl;
1793 cout <<
"computing conjugacy class of ";
1806 cout <<
"any_group::do_conjugacy_class_of_element "
1807 "Group does not have a sims object" << endl;
1817 cout <<
"any_group::do_conjugacy_class_of_element before init_sims" << endl;
1821 cout <<
"any_group::do_conjugacy_class_of_element after init_sims" << endl;
1830 long int the_set[1];
1836 cout <<
"computing conjugacy class of " << endl;
1838 cout <<
"which is the set ";
1846 cout <<
"any_group::do_conjugacy_class_of_element "
1847 "before A_conj.induced_action_by_conjugation" << endl;
1853 cout <<
"any_group::do_conjugacy_class_of_element "
1854 "created action by conjugation" << endl;
1890 fname.assign(elt_label);
1891 fname.append(
"_orbit_under_");
1893 fname.append(
"_elements_coded.csv");
1896 cout <<
"Writing table to file " << fname << endl;
1899 ofstream ost(fname);
1909 for (i = 0; i < orbit_length; i++) {
1915 ost <<
"," << Elt[j];
1919 ost <<
"END" << endl;
1922 cout <<
"Written file " << fname <<
" of size "
1933 cout <<
"any_group::do_conjugacy_class_of_element done" << endl;
1939 std::string &fname_group_elements_coded,
1940 std::string &fname_transporter,
1943 int f_v = (verbose_level >= 1);
1946 cout <<
"any_group::do_orbits_on_group_elements_under_conjugation" << endl;
1954 cout <<
"any_group::do_orbits_on_group_elements_under_conjugation "
1955 "Group does not have a sims object" << endl;
1966 cout <<
"any_group::do_orbits_on_group_elements_under_conjugation before init_sims" << endl;
1968 A2->init_sims_only(S, 0);
1970 cout <<
"any_group::do_orbits_on_group_elements_under_conjugation after init_sims" << endl;
1993 cout <<
"computing the element ranks:" << endl;
1997 long int *the_ranks;
2007 cout <<
"read a set of size " << m << endl;
2010 for (i = 0; i < m; i++) {
2020 cout <<
"computing rank of " << endl;
2026 cout << i <<
" : " << the_ranks[i] << endl;
2034 Transporter->
init(S->
A, 0);
2040 cout <<
"read a set of size " << m << endl;
2043 for (i = 0; i < m; i++) {
2053 cout <<
"computing rank of " << endl;
2066 cout <<
"computing conjugacy classes on the set " << endl;
2074 cout <<
"any_group::do_orbits_on_group_elements_under_conjugation "
2075 "before Algebra.orbits_under_conjugation" << endl;
2083 cout <<
"any_group::do_orbits_on_group_elements_under_conjugation "
2084 "after Algebra.orbits_under_conjugation" << endl;
2093 cout <<
"any_group::do_orbits_on_group_elements_under_conjugation done" << endl;
2101 int f_v = (verbose_level >= 1);
2105 cout <<
"any_group::create_latex_report_for_permutation_group" << endl;
2113 fname.assign(
label);
2114 fname.append(
"_report.tex");
2115 title.assign(
"The group $");
2123 ofstream ost(fname);
2129 title.c_str(), author.c_str(),
2140 cout <<
"any_group::create_latex_report_for_permutation_group before A->report" << endl;
2147 cout <<
"any_group::create_latex_report_for_permutation_group after A->report" << endl;
2153 cout <<
"any_group::create_latex_report_for_permutation_group before Subgroup_gens->print_generators_in_latex_individually" << endl;
2157 cout <<
"any_group::create_latex_report_for_permutation_group after Subgroup_gens->print_generators_in_latex_individually" << endl;
2164 cout <<
"any_group::create_latex_report_for_permutation_group before Subgroup_sims->report" << endl;
2171 cout <<
"any_group::create_latex_report_for_permutation_group after Subgroup_sims->report" << endl;
2180 cout <<
"written file " << fname <<
" of size "
2188 cout <<
"any_group::create_latex_report_for_permutation_group done" << endl;
2196 int f_v = (verbose_level >= 1);
2200 cout <<
"any_group::create_latex_report_for_modified_group" << endl;
2208 fname.assign(
label);
2209 fname.append(
"_report.tex");
2210 title.assign(
"The group $");
2218 ofstream ost(fname);
2224 title.c_str(), author.c_str(),
2235 cout <<
"any_group::create_latex_report_for_modified_group before A->report" << endl;
2242 cout <<
"any_group::create_latex_report_for_modified_group after A->report" << endl;
2248 cout <<
"any_group::create_latex_report_for_modified_group before Subgroup_gens->print_generators_in_latex_individually" << endl;
2252 cout <<
"any_group::create_latex_report_for_modified_group after Subgroup_gens->print_generators_in_latex_individually" << endl;
2259 cout <<
"any_group::create_latex_report_for_modified_group before Subgroup_sims->report" << endl;
2266 cout <<
"any_group::create_latex_report_for_modified_group after Subgroup_sims->report" << endl;
2275 cout <<
"written file " << fname <<
" of size "
2283 cout <<
"any_group::create_latex_report_for_modified_group done" << endl;
2294 cout <<
"any_group::get_strong_generators using Subgroup_gens" << endl;
2300 cout <<
"any_group::get_strong_generators using A_base->Strong_gens" << endl;
2305 cout <<
"any_group::get_strong_generators no generators to export" << endl;
a collection of combinatorial functions
int is_permutation(int *perm, long int n)
int rank_k_subset(int *set, int n, int k)
void matrix_print(long int *p, int m, int n)
options for drawing an object of type layered_graph
a collection of functions related to file io
void int_matrix_write_csv(std::string &fname, int *M, int m, int n)
void int_matrix_read_csv(std::string &fname, int *&M, int &m, int &n, int verbose_level)
long int file_size(std::string &fname)
void read_set_from_file(std::string &fname, long int *&the_set, int &set_size, int verbose_level)
interface to create latex output files
void head_easy(std::ostream &ost)
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)
void print_integer_matrix_with_labels(std::ostream &ost, int *p, int m, int n, int *row_labels, int *col_labels, int f_tex)
data_structures::lint_vec * Lint_vec
a class to represent arbitrary precision integers
void create_from_base_10_string(const char *str, int verbose_level)
void assign_to(longinteger_object &b)
a permutation group in a fixed action.
void element_print_latex(void *elt, std::ostream &ost)
void element_print(void *elt, std::ostream &ost)
void normalizer_using_MAGMA(std::string &fname_magma_prefix, groups::sims *G, groups::sims *H, groups::strong_generators *&gens_N, int verbose_level)
void mult(void *a, void *b, void *ab)
void element_mult(void *a, void *b, void *ab, int verbose_level)
void report(std::ostream &ost, int f_sims, groups::sims *S, int f_strong_gens, groups::strong_generators *SG, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
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 make_element_from_string(int *Elt, std::string &data_string, int verbose_level)
int f_has_strong_generators
void create_sims(int verbose_level)
void make_element(int *Elt, int *data, int verbose_level)
action * create_induced_action_by_conjugation(groups::sims *Base_group, int f_ownership, 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 export_to_orbiter_as_bsgs(std::string &fname, std::string &label, std::string &label_tex, groups::strong_generators *SG, int verbose_level)
void element_print_as_permutation(void *elt, std::ostream &ost)
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)
int element_order(void *elt)
void report_groups_and_normalizers(std::ostream &ost, int nb_subgroups, groups::strong_generators *H_gens, groups::strong_generators *N_gens, int verbose_level)
to hold a vector of group elements
void read_column_csv(std::string &fname, actions::action *A, int col_idx, int verbose_level)
void allocate(int length, int verbose_level)
void save_csv(std::string &fname, int verbose_level)
void print(std::ostream &ost)
void reverse_isomorphism_exterior_square(int verbose_level)
void init(actions::action *A, int verbose_level)
creates a linear group from command line arguments using linear_group_description
void create_latex_report(graphics::layered_graph_draw_options *O, int f_sylow, int f_group_table, int f_classes, int verbose_level)
strong_generators * Strong_gens
data_structures_groups::vector_ge * nice_gens
strong_generators * initial_strong_gens
int f_has_strong_generators
actions::action * A_linear
compute orbits of a group in a given action; allows file io
a domain for permutation groups whose elements are given in the permutation representation
int f_has_strong_generators
strong_generators * Strong_gens
actions::action * A_initial
Schreier trees for orbits of groups on points.
void shallow_tree_generators(int orbit_idx, int f_randomized, schreier *&shallow_tree, int verbose_level)
void export_tree_as_layered_graph(int orbit_no, std::string &fname_mask, int verbose_level)
strong_generators * stabilizer_orbit_rep(actions::action *default_action, ring_theory::longinteger_object &full_group_order, int orbit_idx, int verbose_level)
void init_generators(data_structures_groups::vector_ge &generators, int verbose_level)
void print_orbit_reps(std::ostream &ost)
void compute_point_orbit(int pt, int verbose_level)
void print_orbit_lengths(std::ostream &ost)
void init(actions::action *A, int verbose_level)
a permutation group represented via a stabilizer chain
void element_unrank(ring_theory::longinteger_object &a, int *elt, int verbose_level)
void element_rank(ring_theory::longinteger_object &a, int *elt)
void group_order(ring_theory::longinteger_object &go)
void create_group_table(int *&Table, long int &n, int verbose_level)
void report(std::ostream &ost, std::string &prefix, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
void print_all_group_elements_tex(std::ostream &ost)
void element_unrank_lint(long int rk, int *Elt, int verbose_level)
long int element_rank_lint(int *Elt)
void all_elements_save_csv(std::string &fname, int verbose_level)
long int group_order_lint()
a strong generating set for a permutation group with respect to a fixed action
void print_generators_gap(std::ostream &ost)
sims * create_sims(int verbose_level)
schreier * orbit_of_one_point_schreier(actions::action *A_given, int pt, int verbose_level)
void print_generators_tex()
void print_generators(std::ostream &ost)
void reverse_isomorphism_exterior_square(int verbose_level)
void canonical_image_GAP(std::string &input_set_text, std::ostream &ost)
void export_magma(actions::action *A, std::ostream &ost, int verbose_level)
void print_generators_as_permutations()
void export_to_orbiter_as_bsgs(actions::action *A2, std::string &fname, std::string &label, std::string &label_tex, int verbose_level)
void print_generators_gap_in_different_action(std::ostream &ost, actions::action *A2)
sims * create_sims_in_different_action(actions::action *A_given, int verbose_level)
data_structures_groups::vector_ge * gens
void group_order(ring_theory::longinteger_object &go)
void print_generators_in_latex_individually(std::ostream &ost)
orbit of sets using a Schreier tree, used in packing::make_spread_table
void get_orbit_of_points(std::vector< long int > &Orbit, int verbose_level)
void init(actions::action *A, actions::action *A2, long int *set, int sz, data_structures_groups::vector_ge *gens, int verbose_level)
to control the behavior of the poset classification algorithm
the poset classification algorithm
void list_all_orbits_at_level(int depth, int f_has_print_function, void(*print_function)(std::ostream &ost, int len, long int *S, void *data), void *print_function_data, int f_show_orbit_decomposition, int f_show_stab, int f_save_stab, int f_show_whole_orbit)
int nb_orbits_at_level(int level)
void get_whole_orbit(int depth, int orbit_idx, long int *&Orbit, int &orbit_length, int verbose_level)
a poset with a group action on it
void init_subset_lattice(actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, int verbose_level)
poset_classification * orbits_on_k_sets_compute(poset_classification_control *Control, int k, int verbose_level)
group theoretic functions which require an action
void find_subgroups(actions::action *A, groups::sims *S, int subgroup_order, std::string &label, int &nb_subgroups, groups::strong_generators *&H_gens, groups::strong_generators *&N_gens, int verbose_level)
void orbits_on_set_from_file(long int *the_set, int set_size, actions::action *A1, actions::action *A2, data_structures_groups::vector_ge *gens, std::string &label_set, std::string &label_group, long int *&Table, int &orbit_length, int verbose_level)
void normalizer_of_cyclic_subgroup(actions::action *A, groups::sims *S, std::string &element_description, std::string &label, int verbose_level)
void orbits_under_conjugation(long int *the_set, int set_size, groups::sims *S, groups::strong_generators *SG, data_structures_groups::vector_ge *Transporter, int verbose_level)
void centralizer_of_element(actions::action *A, groups::sims *S, std::string &element_description, std::string &label, int verbose_level)
void orbits_on_points(actions::action *A2, groups::strong_generators *Strong_gens, int f_load_save, std::string &prefix, groups::orbits_on_something *&Orb, int verbose_level)
void orbit_of(int point_idx, int verbose_level)
void create_latex_report_for_permutation_group(graphics::layered_graph_draw_options *O, int verbose_level)
void print_elements(int verbose_level)
void normalizer(int verbose_level)
void init_permutation_group(groups::permutation_group_create *PGC, int verbose_level)
void do_export_magma(int verbose_level)
void apply_elements_to_set_csv(std::string &fname1, std::string &fname2, std::string &set_text, int verbose_level)
void print_elements_tex(int verbose_level)
void create_latex_report(graphics::layered_graph_draw_options *O, int f_sylow, int f_group_table, int f_classes, int verbose_level)
modified_group_create * MGC
void element_rank(std::string &elt_data, int verbose_level)
groups::permutation_group_create * PGC
groups::strong_generators * Subgroup_gens
groups::strong_generators * get_strong_generators()
void element_unrank(std::string &rank_string, int verbose_level)
void do_conjugacy_class_of_element(std::string &elt_label, std::string &elt_text, int verbose_level)
void order_of_products_of_elements(std::string &Elements_text, int verbose_level)
void orbits_on_poset_post_processing(poset_classification::poset_classification *PC, int depth, int verbose_level)
void init_modified_group(modified_group_create *MGC, int verbose_level)
void save_elements_csv(std::string &fname, int verbose_level)
void create_latex_report_for_modified_group(graphics::layered_graph_draw_options *O, int verbose_level)
void do_canonical_image_GAP(std::string &input_set, int verbose_level)
void orbits_on_set_system_from_file(std::string &fname_csv, int number_of_columns, int first_column, int verbose_level)
void centralizer(std::string &element_label, std::string &element_description_text, int verbose_level)
groups::linear_group * LG
groups::sims * Subgroup_sims
void conjugacy_class_of(std::string &rank_string, int verbose_level)
void do_orbits_on_group_elements_under_conjugation(std::string &fname_group_elements_coded, std::string &fname_transporter, int verbose_level)
void do_export_gap(int verbose_level)
void init_linear_group(groups::linear_group *LG, int verbose_level)
void normalizer_of_cyclic_subgroup(std::string &element_label, std::string &element_description_text, int verbose_level)
void do_reverse_isomorphism_exterior_square(int verbose_level)
void do_export_orbiter(actions::action *A2, int verbose_level)
void multiply_elements_csv(std::string &fname1, std::string &fname2, std::string &fname3, int f_column_major_ordering, int verbose_level)
void orbits_on_subsets(poset_classification::poset_classification_control *Control, poset_classification::poset_classification *&PC, int subset_size, int verbose_level)
void orbits_on_points(groups::orbits_on_something *&Orb, int verbose_level)
void orbits_on_set_from_file(std::string &fname_csv, int verbose_level)
void do_find_subgroups(int order_of_subgroup, int verbose_level)
void create_group_table(int verbose_level)
to create a new group or group action from old ones, using class group_modification_description
groups::strong_generators * Strong_gens
int f_has_strong_generators
actions::action * A_modified
#define Int_vec_scan(A, B, C)
#define Int_vec_print_fully(A, B, C)
#define Lint_vec_scan(A, B, C)
#define Lint_vec_print(A, B, C)
#define Int_matrix_print(A, B, C)
#define Int_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
algebra, combinatorics and graph theory, geometry, linear algebra, number theory, data structures,...
shallow_schreier_tree_strategy
the strategy which is employed to create shallow Schreier trees
@ shallow_schreier_tree_standard
the orbiter library for the classification of combinatorial objects