14namespace layer3_group_actions {
89 init(
A, verbose_level);
103 cout <<
"sims::freeself freeing gen_depth" << endl;
119 cout <<
"sims::freeself freeing orbit, "
125 cout <<
"sims::freeself freeing orbit i=" << i << endl;
128 cout <<
"sims::freeself freeing orbit[i]" << endl;
132 cout <<
"sims::freeself freeing orbit_inv[i]" << endl;
136 cout <<
"sims::freeself freeing prev[i]" << endl;
140 cout <<
"sims::freeself freeing label[i]" << endl;
145 cout <<
"sims::freeself freeing orbit"<< endl;
161 cout <<
"sims::freeself freeing orbit_len" << endl;
207 cout <<
"sims::freeself before delete_images" << endl;
211 cout <<
"sims::freeself before after_images" << endl;
215 cout <<
"sims::freeself done" << endl;
238 cout <<
"sims::init_images" << endl;
240 cout <<
"sims::init_images() action is NULL" << endl;
248 for (j = 0; j <
A->
degree; j++) {
267 for (j = 0; j <
A->
degree; j++) {
277 new_images[i] =
images[i];
293 int f_v = (verbose_level >= 1);
296 cout <<
"sims::init action=" <<
A->
label << endl;
300 cout <<
"sims::init before init_without_base" << endl;
304 cout <<
"sims::init after init_without_base" << endl;
312 cout <<
"sims::init A->Stabilizer_chain == NULL, setting my_base_len to degree" << endl;
318 cout <<
"sims::init my_base_len=" <<
my_base_len << endl;
321 cout <<
"sims::init allocating orbit" << endl;
325 cout <<
"sims::init allocating orbit_inv" << endl;
329 cout <<
"sims::init allocating prev" << endl;
333 cout <<
"sims::init allocating label" << endl;
343 cout <<
"sims::init allocating orbit " << i <<
" / " <<
my_base_len << endl;
367 cout <<
"sims::init before initialize_table " << i <<
" / " <<
my_base_len << endl;
373 cout <<
"sims::init done" << endl;
381 int f_v = (verbose_level >= 1);
385 cout <<
"sims::init_cyclic_group_from_generator action=" <<
A->
label << endl;
395 cout <<
"sims::init_cyclic_group_from_generator done" << endl;
402 int f_v = (verbose_level >= 1);
405 cout <<
"sims::init_without_base action=" <<
A->
label << endl;
414 cout <<
"sims::init_without_base my_base_len=" <<
my_base_len << endl;
441 cout <<
"sims::init_without_base done" << endl;
447 int f_v = (verbose_level >= 1);
450 int *old_path =
path;
451 int *old_orbit_len = orbit_len;
452 int **old_orbit = orbit;
453 int **old_orbit_inv = orbit_inv;
454 int **old_prev = prev;
455 int **old_label = label;
457 int *old_Path = Path;
458 int *old_Label = Label;
462 cout <<
"sims::reallocate_base from "
463 << old_base_len <<
" to " <<
A->
base_len() << endl;
468 cout <<
"sims::reallocate_base my_base_len=" <<
my_base_len << endl;
482 for (i = 0; i < old_base_len; i++) {
484 cout <<
"sims::reallocate_base i=" << i <<
" / " << old_base_len << endl;
486 nb_gen[i] = old_nb_gen[i];
487 path[i] = old_path[i];
488 orbit_len[i] = old_orbit_len[i];
489 orbit[i] = old_orbit[i];
490 orbit_inv[i] = old_orbit_inv[i];
491 prev[i] = old_prev[i];
492 label[i] = old_label[i];
496 cout <<
"sims::reallocate_base i=" << i <<
" / " << old_base_len << endl;
505 cout <<
"sims::reallocate_base before initialize_table" << endl;
509 cout <<
"sims::reallocate_base after initialize_table" << endl;
512 cout <<
"sims::reallocate_base before init_trivial_orbit" << endl;
516 cout <<
"sims::reallocate_base after init_trivial_orbit" << endl;
559 cout <<
"sims::reallocate_base done" << endl;
565 int f_v = (verbose_level >= 1);
570 cout <<
"sims::initialize_table" << endl;
580 cout <<
"sims::initialize_table done" << endl;
589 int f_v = (verbose_level >= 2);
590 int f_vv = (verbose_level >= 3);
594 cout <<
"sims::init_trivial_group" << endl;
597 cout <<
"sims::init_trivial_group A->Stabilizer_chain == NULL" << endl;
601 cout <<
"sims::init_trivial_group: "
602 "my_base_len != A->base_len" << endl;
606 cout <<
"before init_generators" << endl;
611 cout <<
"sims::init_trivial_group before init_trivial_orbit i=" << i << endl;
616 cout <<
"sims::init_trivial_group done" << endl;
622 int f_v = (verbose_level >= 1);
623 int coset_of_base_point;
627 cout <<
"sims::init_trivial_orbit i=" << i << endl;
630 cout <<
"sims::init_trivial_orbit: "
631 "my_base_len != A->base_len" << endl;
636 cout <<
"sims::init_trivial_orbit bi=" << bi << endl;
640 cout <<
"sims::init_trivial_orbit before get_orbit_inv" << endl;
644 cout <<
"sims::init_trivial_orbit after get_orbit_inv" << endl;
645 cout <<
"sims::init_trivial_orbit coset_of_base_point = " << coset_of_base_point << endl;
648 if (coset_of_base_point) {
656 cout <<
"sims::init_trivial_orbit i=" << i <<
" done" << endl;
663 int f_v = (verbose_level >= 1);
666 cout <<
"sims::init_generators" << endl;
667 cout <<
"generators.len=" << generators.
len << endl;
669 if (generators.
len) {
671 generators.
ith(0), verbose_level);
677 cout <<
"sims::init_generators done" << endl;
686 int f_v = (verbose_level >= 1);
687 int f_vv = (verbose_level >= 2);
688 int f_vvv = (verbose_level >= 3);
692 cout <<
"sims::init_generators nb = " << nb << endl;
696 for (i = 0; i < nb; i++) {
698 cout <<
"sims::init_generators "
699 "i = " << i <<
" / " << nb <<
":" << endl;
710 cout <<
"sims::init_generators before init_images" << endl;
714 cout <<
"sims::init_generators "
715 "before init_generator_depth_and_perm" << endl;
719 cout <<
"sims::init_generators done" << endl;
726 int f_v = (verbose_level >= 1);
729 cout <<
"sims::init_generators_by_hdl" << endl;
734 for (i = 0; i <
nb_gen; i++) {
742 cout <<
"sims::init_generators_by_hdl done" << endl;
749 int f_v = (verbose_level >= 1);
750 int f_vv = (verbose_level >= 2);
754 cout <<
"sims::init_generator_depth_and_perm" << endl;
755 cout <<
"gens.len=" <<
gens.
len << endl;
756 cout <<
"action=" <<
A->
label << endl;
759 cout <<
"sims::init_generator_depth_and_perm "
760 "my_base_len != A->base_len" << endl;
769 for (i = 0; i <
gens.
len; i++) {
773 cout <<
"generator " << i
774 <<
" has depth " <<
gen_depth[i] << endl;
778 cout <<
"sims::init_generator_depth_and_perm "
779 "generators must be of decreasing depth" << endl;
780 cout <<
"i=" << i << endl;
781 cout <<
"gens.len=" <<
gens.
len << endl;
782 cout <<
"gen_depth[i]=" <<
gen_depth[i] << endl;
783 cout <<
"gen_depth[i - 1]=" <<
gen_depth[i - 1] << endl;
789 for (i = 0; i <
gens.
len; i++) {
791 for (j = d; j >= 0; j--) {
799 cout <<
"sims::init_generator_depth_and_perm done" << endl;
809 int f_v = (verbose_level >= 1);
810 int old_nb_gen, idx, depth, i;
815 cout <<
"sims::add_generator verbose_level=" << verbose_level << endl;
816 cout <<
"sims::add_generator generator no " <<
gens.
len <<
" is:" << endl;
819 cout <<
"sims::add_generator my_base_len=" <<
my_base_len << endl;
820 cout <<
"sims::add_generator A->base_len()=" <<
A->
base_len() << endl;
823 cout <<
"sims::add_generator before adding the generator:" << endl;
827 cout <<
"sims::add_generator: "
828 "my_base_len != A->base_len" << endl;
833 cout <<
"sims::add_generator "
834 "allocating new_gen_depth and new_gen_perm" << endl;
842 cout <<
"sims::add_generator "
843 "copying gen_depth and gen_perm over" << endl;
846 for (i = 0; i < old_nb_gen; i++) {
852 cout <<
"sims::add_generator "
853 "freeing gen_depth/gen_perm" << endl;
862 cout <<
"sims::add_generator "
863 "before gens.append" << endl;
867 cout <<
"sims::add_generator "
868 "before gens_inv.append" << endl;
872 cout <<
"sims::add_generator "
873 "before A->element_invert" << endl;
878 cout <<
"sims::add_generator "
879 "before images_append" << endl;
883 cout <<
"sims::add_generator "
884 "after images_append" << endl;
889 cout <<
"sims::add_generator "
890 "before generator_depth(idx)" << endl;
894 cout <<
"sims::add_generator "
895 "depth = " << depth << endl;
897 new_gen_depth[idx] = depth;
898 for (i = old_nb_gen - 1; i >=
nb_gen[depth]; i--) {
902 for (i = depth; i >= 0; i--) {
907 cout <<
"sims::add_generator after adding the generator:" << endl;
912 cout <<
"sims::add_generator done" << endl;
966 int f_v = (verbose_level >= 1);
970 cout <<
"sims::group_order_verbose" << endl;
980 cout <<
"sims::group_order_verbose done" << endl;
986 int f_v = (verbose_level >= 1);
990 cout <<
"sims::subgroup_order_verbose" << endl;
1000 cout <<
"sims::subgroup_order_verbose done" << endl;
1029 for (j =
A->
base_len() - 1; j >= 0; j--) {
1030 if (orbit_len[j] != 1) {
1078 orbit_inv[lvl][pi] = j;
1079 orbit_inv[lvl][pj] = i;
1086 for (h =
A->
base_len() - 1; h >= 0; h--) {
1113 int f_v = (verbose_level >= 1);
1114 int f_vv = (verbose_level >= 2);
1118 cout <<
"sims::element_from_path" << endl;
1124 cout <<
"A->degree=" <<
A->
degree << endl;
1128 cout <<
"i : orbit[0][i] : orbit_inv[0][i] : "
1129 "prev[0][i] : label[0][i]" << endl;
1130 for (i = 0; i <
A->
degree; i++) {
1131 cout << setw(5) << i
1132 <<
" : " << setw(5) << orbit[0][i]
1133 <<
" : " << setw(5) << orbit_inv[0][i]
1134 <<
" : " << setw(5) << prev[0][i]
1135 <<
" : " << setw(5) << label[0][i]
1145 cout <<
"sims::element_from_path level "
1146 << i <<
" coset " << j <<
" before coset_rep" << endl;
1152 cout <<
"sims::element_from_path level "
1153 << i <<
" coset " << j <<
" after coset_rep" << endl;
1157 cout <<
"sims::element_from_path level "
1158 << i <<
" coset " << j <<
":" << endl;
1159 cout <<
"cosetrep:" << endl;
1173 cout <<
"sims::element_from_path done" << endl;
1191 cout <<
"sims::element_from_path() path=";
1193 cout <<
path[i] <<
" ";
1214 int *elt,
int verbose_level)
1222 int f_v = (verbose_level >= 1);
1228 cout <<
"sims::element_unrank rk=" << a << endl;
1230 for (ii =
A->
base_len() - 1; ii >= 0; ii--) {
1241 cout <<
"sims::element_unrank path=";
1247 cout <<
"sims::element_unrank done" << endl;
1263 for (ii =
A->
base_len() - 1; ii >= 0; ii--) {
1280 long int i, j, bi, jj, l;
1291 b.
create(l, __FILE__, __LINE__);
1299 j = orbit_inv[i][jj];
1300 if (j >= orbit_len[i]) {
1301 cout <<
"sims::element_rank() j >= orbit_len[i]" << endl;
1302 cout <<
"i=" << i << endl;
1303 cout <<
"jj=bi^elt=" << jj << endl;
1304 cout <<
"j=orbit_inv[i][jj]=" << j << endl;
1308 cout <<
"orbit_len=";
1311 cout <<
"elt=" << endl;
1315 b.
create(j, __FILE__, __LINE__);
1328 int f_v = (verbose_level >= 1);
1332 cout <<
"sims::element_unrank_lint rk=" << rk << endl;
1338 cout <<
"sims::element_unrank_lint path=";
1375 j = orbit_inv[i][jj];
1376 if (j >= orbit_len[i]) {
1396 for (i = 0; i < goi; i++) {
1397 a.
create(i, __FILE__, __LINE__);
1399 cout << i <<
" : " << endl;
1405 cout <<
" : " << j << endl;
1407 cout <<
"error in sims::test_element_rank_unrank" << endl;
1422 int f_v = (verbose_level >= 1);
1423 int f_vv = (verbose_level >= 2);
1427 cout <<
"sims::coset_rep i=" << i <<
" j=" << j <<
" verbose_level=" << verbose_level << endl;
1433 cout <<
"sims::coset_rep bi0=" << bi0 <<
" bij=" << bij << endl;
1443 cout <<
"sims::coset_rep "
1444 "before compute_coset_rep_path" << endl;
1448 cout <<
"sims::coset_rep "
1449 "after compute_coset_rep_path" << endl;
1450 cout <<
"sims::coset_rep depth=" << depth << endl;
1451 cout <<
"sims::coset_rep Path=";
1454 cout <<
"sims::coset_rep Label=";
1460 for (h = 0; h < depth; h++) {
1462 cout <<
"sims::coset_rep " << h <<
" / " << depth
1463 <<
" Label[" << h <<
"]=" << Label[h] << endl;
1467 cout <<
"sims::coset_rep gen=:" << endl;
1475 cout <<
"sims::coset_rep cosetrep*gen=:" << endl;
1479 cout <<
"sims::coset_rep " << bi0 <<
" -> " << a << endl;
1488 cout <<
"sims::coset_rep i=" << i <<
" j=" << j << endl;
1492 cout <<
"sims::coset_rep " << bi0 <<
" -> " << a << endl;
1495 cout <<
"sims::coset_rep a != bij" << endl;
1500 cout <<
"sims::coset_rep cosetrep:" << endl;
1504 cout <<
"sims::coset_rep done" << endl;
1510 int f_v = (verbose_level >= 1);
1515 cout <<
"sims::compute_coset_rep_depth "
1516 "i=" << i <<
" j=" << j << endl;
1518 if (j >= orbit_len[i]) {
1519 cout <<
"sims::compute_coset_rep_depth "
1520 "fatal: j >= orbit_len[i]" << endl;
1521 cout <<
"sims::compute_coset_rep_depth "
1522 "i=" << i <<
" j=" << j << endl;
1523 cout <<
"orbit_len[i]=" << orbit_len[i] << endl;
1533 jj = orbit_inv[i][p];
1537 cout <<
"sims::compute_coset_rep_depth "
1538 "i=" << i <<
" j=" << j
1539 <<
" depth = " << depth << endl;
1545 int *&Path,
int *&Label,
1548 int f_v = (verbose_level >= 1);
1549 int f_vv = (verbose_level >= 2);
1553 cout <<
"sims::compute_coset_rep_path "
1554 "i=" << i <<
" j=" << j << endl;
1559 cout <<
"sims::compute_coset_rep_path "
1560 "before compute_coset_rep_depth" << endl;
1564 cout <<
"sims::compute_coset_rep_path "
1565 "after compute_coset_rep_depth" << endl;
1569 cout <<
"sims::compute_coset_rep_path "
1570 "depth = " << depth << endl;
1582 cout <<
"Path[" << depth - d
1583 <<
"]=" << jj << endl;
1585 Path[depth - d] = jj;
1589 cout <<
"p=" << p << endl;
1597 cout <<
"Label[" << depth - 1 - d
1598 <<
"]=" << label[i][jj] << endl;
1600 Label[depth - 1 - d] = label[i][jj];
1602 jj = orbit_inv[i][p];
1604 cout <<
"jj=" << jj << endl;
1609 cout <<
"sims::compute_coset_rep_path "
1610 "d != depth" << endl;
1614 cout <<
"sims::compute_coset_rep_path path = ";
1617 cout <<
"sims::compute_coset_rep_path label = ";
1622 cout <<
"sims::compute_coset_rep_path "
1623 "i=" << i <<
" j=" << j
1624 <<
" depth = " << depth <<
" done" << endl;
1635 int f_v = (verbose_level >= 1);
1636 int f_vv = (verbose_level >= 2);
1641 cout <<
"sims::coset_rep_inv i=" << i <<
" j=" << j << endl;
1647 cout <<
"sims::coset_rep_inv i=" << i <<
" j=" << j
1648 <<
" bi0=" << bi0 <<
" bij=" << bij << endl;
1652 cout <<
"sims::coset_rep_inv before "
1653 "coset_rep(i,j)" << endl;
1655 coset_rep(Elt, i, j, verbose_level - 2);
1657 cout <<
"sims::coset_rep_inv "
1658 "coset_rep(i=" << i <<
" j=" << j <<
") done" << endl;
1659 cout <<
"cosetrep:" << endl;
1665 cout <<
"sims::coset_rep_inv a != get_orbit(i, 0)" << endl;
1666 cout <<
"i=" << i <<
" j=" << j << endl;
1667 cout <<
"get_orbit(i, 0)=" << bi0
1668 <<
" get_orbit(i, j)=" << bij << endl;
1669 cout <<
"a=" << a << endl;
1671 cout <<
"cosetrep:" << endl;
1679 cout <<
"cosetrep^-1=:" << endl;
1684 cout <<
"cosetrep^-1 maps " << orbit[i][j]
1685 <<
" to " << a << endl;
1688 cout <<
"sims::coset_rep_inv a != bi0" << endl;
1689 cout <<
"cosetrep^-1 maps " << bij
1690 <<
" to " << a << endl;
1695 cout <<
"cosetrep:" << endl;
1699 cout <<
"sims::coset_rep_inv i=" << i
1700 <<
" j=" << j <<
" done" << endl;
1706 int *tl,
int verbose_level)
1708 int i, nbg, nbg1, j, k = 0, gen_idx;
1709 int f_v = (verbose_level >= 1);
1710 int f_vv = (verbose_level >= 2);
1714 cout <<
"sims::extract_strong_generators_in_order" << endl;
1715 cout <<
"A->base_len=" <<
A->
base_len() << endl;
1716 cout <<
"gens.len=" <<
gens.
len << endl;
1717 cout <<
"extract_strong_generators_in_order nb_gen=" << endl;
1720 cout <<
"extract_strong_generators_in_order gen_perm=" << endl;
1729 SG.
init(
A, verbose_level - 2);
1731 for (i =
A->
base_len() - 1; i >= 0; i--) {
1733 cout <<
"sims::extract_strong_generators_in_order "
1734 "level i=" << i << endl;
1741 cout <<
"sims::extract_strong_generators_in_order level i=" << i
1742 <<
" nbg1=" << nbg1 <<
" nbg=" << nbg << endl;
1744 for (j = nbg1; j < nbg; j++) {
1748 cout <<
"sims::extract_strong_generators_in_order "
1749 "the " << k <<
"-th strong generator "
1751 << j <<
" at position " << gen_idx << endl;
1753 cout <<
"moving generator " << gen_idx
1754 <<
" to position " << k << endl;
1755 cout <<
"before:" << endl;
1761 cout <<
"sims::extract_strong_generators_in_order "
1762 "the " << k <<
"-th strong "
1763 "generator is generator "
1764 << j <<
" at position " << gen_idx << endl;
1770 tl[i] = orbit_len[i];
1773 cout <<
"sims::extract_strong_generators_in_order warning" << endl;
1774 cout <<
"k = " << k << endl;
1775 cout <<
"SG.len = " << SG.
len << endl;
1780 cout <<
"sims::extract_strong_generators_in_order done, "
1781 "found " << SG.
len <<
" strong generators" << endl;
1784 cout <<
"sims::extract_strong_generators_in_order" << endl;
1785 cout <<
"transversal length:" << endl;
1788 if (i < A->base_len() - 1) {
1793 cout <<
"sims::extract_strong_generators_in_order "
1794 "strong generators are:" << endl;
1799 cout <<
"sims::extract_strong_generators_in_order done" << endl;
1806 int i, r1, r2, pt, pt1, pt1b, pt2, pt2_coset;
1807 int *gen, gen_idx, nbg;
1808 int f_v = (verbose_level >= 1);
1809 int f_vv = (verbose_level >= 2);
1810 int f_vvv = (verbose_level >= 3);
1814 cout <<
"sims:random_schreier_generator" << endl;
1815 cout <<
"sims:random_schreier_generator my_base_len=" <<
my_base_len << endl;
1816 cout <<
"sims:random_schreier_generator orbit_len=";
1819 cout <<
"sims:random_schreier_generator base:" << endl;
1821 cout << i <<
" : " <<
get_orbit(i, 0) << endl;
1826 cout <<
"sims::random_schreier_generator "
1827 "nb_gen[0] == 0, choosing the identity" << endl;
1834 cout <<
"sims::random_schreier_generator "
1835 "iteration" << endl;
1836 cout <<
"sims:random_schreier_generator orbit_len=";
1844 cout <<
"sims::random_schreier_generator "
1845 "i=" << i <<
" orbit_len[i]=" << orbit_len[i]
1846 <<
" base_pt=" << pt <<
" nb_gen[i]=" <<
nb_gen[i] << endl;
1853 cout <<
"sims::random_schreier_generator "
1854 "picking coset r1=" << r1 <<
" / " << orbit_len[i]
1855 <<
" with image point " << pt1 << endl;
1858 cout <<
"sims::random_schreier_generator "
1859 "random level " << i <<
", base pt " << pt
1860 <<
", random coset " << r1 <<
" of an orbit of length "
1861 << orbit_len[i] <<
", image pt " << pt1 << endl;
1864 cout <<
"sims::random_schreier_generator "
1865 "before coset_rep" << endl;
1868 coset_rep(eltrk3, i, r1, verbose_level - 2);
1870 cout <<
"sims::random_schreier_generator "
1871 "after coset_rep" << endl;
1872 cout <<
"checking image of pt=" << pt << endl;
1877 cout <<
"sims::random_schreier_generator "
1878 "coset rep maps " << pt <<
" to " << pt1b << endl;
1881 cout <<
"sims::random_schreier_generator "
1882 "fatal: not the same point" << endl;
1883 cout <<
"action " <<
A->
label << endl;
1884 cout <<
"level i=" << i << endl;
1885 cout <<
"coset r1=" << r1 << endl;
1886 cout <<
"base pt=" << pt << endl;
1887 cout <<
"image pt1=" << pt1 << endl;
1888 cout <<
"image under cosetrep pt1b=" << pt1b << endl;
1889 cout <<
"basic orbit " << i <<
":" << endl;
1892 cout <<
"cosetrep:" << endl;
1906 cout <<
"sims::random_schreier_generator picking "
1907 "generator " << r2 <<
" / " << nbg << endl;
1911 cout <<
"sims::random_schreier_generator picking "
1912 "generator " << r2 <<
" / " << nbg
1913 <<
" gen_idx=" << gen_idx << endl;
1917 cout <<
"sims::random_schreier_generator "
1918 "random level " << i <<
", random coset " << r1
1919 <<
", random generator " << r2
1920 <<
" of " <<
nb_gen[i] << endl;
1921 cout <<
"sims::random_schreier_generator "
1929 cout <<
"sims::random_schreier_generator "
1930 "after the while loop" << endl;
1931 cout <<
"cosetrep:" << endl;
1933 cout <<
"maps " << pt <<
" to " << pt1
1934 <<
" : checking: " << pt <<
" -> ";
1941 cout <<
"sims::random_schreier_generator "
1942 "after the while loop" << endl;
1943 cout <<
"gen=" << endl;
1948 cout <<
"sims::random_schreier_generator "
1949 "after the while loop" << endl;
1950 cout <<
"sims::random_schreier_generator cosetrep * gen=" << endl;
1957 cout <<
"sims::random_schreier_generator cosetrep * gen maps " << pt
1958 <<
" to " << pt2 << endl;
1963 pt2_coset = orbit_inv[i][pt2];
1966 cout <<
"sims::random_schreier_generator pt2_coset = " << pt2_coset << endl;
1969 if (pt2_coset >= orbit_len[i]) {
1973 cout <<
"sims::random_schreier_generator schreier generator is " << endl;
1978 cout <<
"sims::random_schreier_generator done early" << endl;
1983 cout <<
"sims::random_schreier_generator "
1984 "fatal: additional pt " << pt2 <<
" reached from "
1985 << pt <<
" under generator " << i << endl;
1987 cout <<
"level = " << i << endl;
1988 cout <<
"coset1 = " << r1 << endl;
1989 cout <<
"generator = " << r2 << endl;
1990 cout <<
"pt2 = " << pt2 << endl;
1991 cout <<
"coset2 = " << pt2_coset << endl;
1992 cout <<
"orbit_len = " << orbit_len[i] << endl;
1993 cout <<
"cosetrep: " << endl;
1996 cout <<
"gen: " << endl;
2007 cout <<
"sims::random_schreier_generator cosetrep(" << pt2 <<
")^-1=" << endl;
2014 cout <<
"sims::random_schreier_generator cosetrep(" << pt2 <<
")^-1 maps "
2015 << pt2 <<
" to " << pt2b << endl;
2018 cout <<
"sims::random_schreier_generator "
2019 "pt2b != pt" << endl;
2020 cout <<
"cosetrep(" << pt2 <<
")^-1 maps "
2021 << pt2 <<
" to " << pt2b << endl;
2022 cout <<
"pt=" << pt << endl;
2028 cout <<
"sims::random_schreier_generator "
2029 "after the while loop" << endl;
2030 cout <<
"cosetrep * gen * cosetrep("
2031 << pt2 <<
")^-1=" << endl;
2038 cout <<
"sims::random_schreier_generator() "
2039 "fatal: schreier generator does not stabilize pt" << endl;
2040 cout <<
"pt=" << pt << endl;
2041 cout <<
"schreier generator:" << endl;
2044 cout <<
"im = " << im << endl;
2051 cout <<
"sims::random_schreier_generator "
2052 "random Schreier generator:" << endl;
2056 cout <<
"sims::random_schreier_generator done" << endl;
2061 long int elt_rk,
int *perm,
int verbose_level)
2063 int f_v = (verbose_level >= 1);
2066 cout <<
"sims::element_as_permutation" << endl;
2079 cout <<
"sims::element_as_permutation done" << endl;
2087 int f_v = (verbose_level >= 1);
2088 int f_vv = (verbose_level >= 2);
2089 int i, j, h, nbg, gen_idx, least_moved_point = -1;
2092 cout <<
"sims::least_moved_point_at_level lvl=" << lvl << endl;
2096 cout <<
"sims::least_moved_point_at_level nbg=" << nbg << endl;
2098 for (h = 0; h < nbg; h++) {
2101 cout <<
"sims::least_moved_point_at_level h=" << h << endl;
2102 cout <<
"gen_idx=" << gen_idx << endl;
2105 for (i = 0; i <
A->
degree; i++) {
2111 if (i < A->degree) {
2112 if (least_moved_point == -1 || i < least_moved_point) {
2113 least_moved_point = i;
2118 cout <<
"sims::least_moved_point_at_level lvl = "
2119 << lvl <<
", least moved point = "
2120 << least_moved_point << endl;
2122 return least_moved_point;
2127 if (orbit == NULL) {
2128 cout <<
"sims::get_orbit orbit == NULL i=" << i <<
" j=" << j << endl;
2132 cout <<
"sims::get_orbit i < 0 || i >= A->base_len(), i = " << i << endl;
2136 if (orbit[i] == NULL) {
2137 cout <<
"sims::get_orbit orbit[i] == NULL i=" << i <<
" j=" << j << endl;
2142 cout <<
"sims::get_orbit j >= transversal_length" << endl;
2143 cout <<
"j=" << j << endl;
2153 if (orbit_inv == NULL) {
2154 cout <<
"sims::get_orbit_inv orbit_inv == NULL i=" << i <<
" j=" << j << endl;
2158 cout <<
"sims::get_orbit i < 0 || i >= my_base_len, i = " << i << endl;
2162 if (orbit_inv[i] == NULL) {
2163 cout <<
"sims::get_orbit_inv orbit_inv[i] == NULL i=" << i <<
" j=" << j << endl;
2168 cout <<
"sims::get_orbit_inv j >= transversal_length" << endl;
2169 cout <<
"j=" << j << endl;
2174 return orbit_inv[i][j];
2180 cout <<
"sims::get_orbit_length i < 0 || i >= my_base_len, i = " << i << endl;
2184 return orbit_len[i];
2189 int f_v = (verbose_level >= 1);
2192 cout <<
"sims::get_orbit" << endl;
2196 len = orbit_len[orbit_idx];
2197 for (i = 0; i < len; i++) {
2198 Orb.push_back(orbit[orbit_idx][i]);
2201 cout <<
"sims::get_orbit done" << endl;
2209 int f_v = (verbose_level >= 1);
2212 cout <<
"sims::all_elements" << endl;
2226 for (i = 0; i < goi; i++) {
2231 cout <<
"sims::all_elements done" << endl;
2239 int f_v = (verbose_level >= 1);
2243 cout <<
"sims::all_elements_save_csv" << endl;
2251 vec->
save_csv(fname, verbose_level);
2253 cout <<
"sims::all_elements_save_csv Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
2259 cout <<
"sims::all_elements_save_csv done" << endl;
a collection of combinatorial functions
void perm_identity(int *a, long int n)
a collection of functions related to file io
long int file_size(std::string &fname)
interface to system functions
int random_integer(int p)
domain to compute with objects of type longinteger
void multiply_up(longinteger_object &a, int *x, int len, int verbose_level)
void add(longinteger_object &a, longinteger_object &b, longinteger_object &c)
void integral_division_by_int(longinteger_object &a, int b, longinteger_object &q, int &r)
void mult(longinteger_object &a, longinteger_object &b, longinteger_object &c)
a class to represent arbitrary precision integers
void assign_to(longinteger_object &b)
void create(long int i, const char *file, int line)
a permutation group in a fixed action.
void element_print_quick(void *elt, std::ostream &ost)
void element_print(void *elt, std::ostream &ost)
void element_retrieve(int hdl, void *elt, int verbose_level)
void element_mult(void *a, void *b, void *ab, int verbose_level)
stabilizer_chain_base_data * Stabilizer_chain
void element_invert(void *a, void *av, int verbose_level)
void element_one(void *elt, int verbose_level)
void element_as_permutation(void *elt, int *perm, int verbose_level)
void element_move(void *a, void *b, int verbose_level)
groups::sims * create_sims_from_single_generator_without_target_group_order(int *Elt, int verbose_level)
void element_print_as_permutation(void *elt, std::ostream &ost)
long int element_image_of(long int a, void *elt, int verbose_level)
to hold a vector of group elements
void append(int *elt, int verbose_level)
void allocate(int length, int verbose_level)
void copy_in(int i, int *elt)
void save_csv(std::string &fname, int verbose_level)
void print(std::ostream &ost)
void init(actions::action *A, int verbose_level)
a permutation group represented via a stabilizer chain
void init_trivial_orbit(int i, int verbose_level)
void element_from_path_inv(int *elt)
void element_unrank(ring_theory::longinteger_object &a, int *elt, int verbose_level)
int get_orbit(int i, int j)
int last_moved_base_point()
void coset_rep_inv(int *Elt, int i, int j, int verbose_level_le)
void init_cyclic_group_from_generator(actions::action *A, int *Elt, int verbose_level)
int get_orbit_inv(int i, int j)
void element_rank(ring_theory::longinteger_object &a, int *elt)
void init_images(int nb_images)
void element_from_path(int *elt, int verbose_level)
void swap_points(int lvl, int i, int j)
void init(actions::action *A, int verbose_level)
void extract_strong_generators_in_order(data_structures_groups::vector_ge &SG, int *tl, int verbose_level)
long int path_rank_lint()
void group_order(ring_theory::longinteger_object &go)
void compute_coset_rep_path(int i, int j, int &depth, int *&Path, int *&Label, int verbose_level)
void init_trivial_group(int verbose_level)
void print_generator_depth_and_perm()
void path_unrank_lint(long int a)
void element_as_permutation(actions::action *A_special, long int elt_rk, int *perm, int verbose_level)
void test_element_rank_unrank()
int least_moved_point_at_level(int lvl, int verbose_level)
int get_image(int i, int gen_idx)
void print_basic_orbit(int i)
void initialize_table(int i, int verbose_level)
void init_generators_by_hdl(int nb_gen, int *gen_hdl, int verbose_level)
void group_order_verbose(ring_theory::longinteger_object &go, int verbose_level)
void print(int verbose_level)
void all_elements(data_structures_groups::vector_ge *&vec, int verbose_level)
void subgroup_order_verbose(ring_theory::longinteger_object &go, int level, int verbose_level)
int compute_coset_rep_depth(int i, int j, int verbose_level)
int is_element_of(int *elt)
data_structures_groups::vector_ge gens
void element_unrank_lint(long int rk, int *Elt, int verbose_level)
void add_generator(int *elt, int verbose_level)
void random_schreier_generator(int *Elt, int verbose_level)
long int element_rank_lint(int *Elt)
void coset_rep(int *Elt, int i, int j, int verbose_level)
void all_elements_save_csv(std::string &fname, int verbose_level)
data_structures_groups::vector_ge gens_inv
void reallocate_base(int old_base_len, int verbose_level)
void init_generators(data_structures_groups::vector_ge &generators, int verbose_level)
long int group_order_lint()
int generator_depth(int gen_idx)
int get_orbit_length(int i)
void init_without_base(actions::action *A, int verbose_level)
void init_generator_depth_and_perm(int verbose_level)
#define Lint_vec_print(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects