19namespace layer3_group_actions {
36 int f_v = (verbose_level >= 1);
41 cout <<
"nauty_interface_with_group::create_automorphism_group_of_colored_graph" << endl;
57 cout <<
"nauty_interface_with_group::create_automorphism_group_of_colored_graph done" << endl;
65 int f_v = (verbose_level >= 1);
69 cout <<
"nauty_interface_with_group::create_automorphism_group_and_"
70 "canonical_labeling_of_colored_graph_object" << endl;
81 cout <<
"nauty_interface_with_group::create_automorphism_group_and_"
82 "canonical_labeling_of_colored_graph_object done" << endl;
93 int f_v = (verbose_level >= 1);
98 int i, j, k, n1, N, f_on = 0, c, nb_edges;
102 cout <<
"nauty_interface_with_group::create_automorphism_group_"
103 "and_canonical_labeling_of_colored_graph" << endl;
112 cout <<
"nauty_interface_with_group::create_automorphism_group_"
113 "and_canonical_labeling_of_colored_graph "
114 "nb_types = " << C.
nb_types << endl;
121 cout <<
"nauty_interface_with_group::create_automorphism_group_"
122 "and_canonical_labeling_of_colored_graph "
123 "n1 = " << n1 << endl;
126 N = (n1 * (n1 - 1)) >> 1;
131 for (i = 0; i < n; i++) {
132 for (j = i + 1; j < n; j++) {
134 k = Combi.
ij2k(i, j, n);
136 if (Bitvec->
s_i(k)) {
141 f_on = Adj[i * n + j];
144 k = Combi.
ij2k(i, j, n1);
150 for (i = 0; i < n; i++) {
153 k = Combi.
ij2k(i, j, n1);
168 cout <<
"nauty_interface_with_group::create_automorphism_group_"
169 "and_canonical_labeling_of_colored_graph "
170 "before create_automorphism_group_of_graph_with_"
171 "partition_and_labeling" << endl;
172 cout <<
"nb_edges=" << nb_edges << endl;
173 cout <<
"extended adjacency matrix:" << endl;
175 for (i = 0; i < n1; i++) {
176 for (j = 0; j < n1; j++) {
181 k = Combi.
ij2k(i, j, n1);
182 a = bitvector_s_i(Adj1, k);
185 k = Combi.
ij2k(j, i, n1);
186 a = bitvector_s_i(Adj1, k);
196 n1,
TRUE, Adj1, NULL,
197 nb_parts, parts, labeling, verbose_level);
199 cout <<
"nauty_interface_with_group::create_automorphism_group_"
200 "and_canonical_labeling_of_colored_graph done" << endl;
212 int f_v = (verbose_level >= 1);
221 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph_bitvec" << endl;
224 n,
TRUE, Bitvec, NULL,
225 1, parts, labeling, verbose_level);
227 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph_bitvec done" << endl;
236 int nb_parts,
int *parts,
241 int f_v = (verbose_level >= 1);
242 int f_vv = (verbose_level >= 2);
254 cout <<
"nauty_interface_with_group::create_automorphism_group_and_canonical_labeling_of_graph "
255 "before NO->allocate" << endl;
264 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph_with_partition_and_labeling "
265 "creating partition" << endl;
267 for (i = 0; i < n; i++) {
271 for (i = 0; i < nb_parts; i++) {
274 partitions[u - 1] = 0;
277 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph_with_partition_and_labeling "
278 "partition does not add up" << endl;
284 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph_with_"
285 "partition_and_labeling "
286 "before nauty_interface_graph_bitvec" << endl;
288 Nau.nauty_interface_graph_bitvec(n, Bitvec,
295 Nau.nauty_interface_graph_int(n, Adj,
302 for (i = 0; i < n; i++) {
309 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph_with_"
310 "partition_and_labeling: "
311 "The group order is = " << *NO->
Ago <<
" = ";
321 for (i = 0; i < n; i++) {
328 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph_with_partition_and_labeling: "
330 cout <<
"skipped" << endl;
337 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph_with_partition_and_labeling: "
342 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph_with_partition_and_labeling: "
343 "generators:" << endl;
344 cout <<
"skipped" << endl;
356 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph_with_partition_and_labeling "
357 "before A->init_permutation_group_from_nauty_output" << endl;
362 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph_with_partition_and_labeling "
363 "after A->init_permutation_group_from_nauty_output" << endl;
367 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph_with_partition_and_labeling: "
382 int *Adj,
int n,
int verbose_level)
384 int f_v = (verbose_level >= 1);
385 int f_vv = (verbose_level >= 2);
388 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph n=" << n << endl;
402 cout <<
"nauty_interface_with_group::create_automorphism_group_and_canonical_labeling_of_graph "
403 "before NO->allocate" << endl;
412 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph" << endl;
414 for (i = 0; i < n; i++) {
417 partition[n - 1] = 0;
420 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph "
421 "before Nau.nauty_interface_graph_int" << endl;
423 Nau.nauty_interface_graph_int(n, Adj,
428 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph "
429 "after Nau.nauty_interface_graph_int Ago=" << *NO->
Ago << endl;
437 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph "
438 "before A->init_permutation_group_from_nauty_output" << endl;
443 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph "
444 "after A->init_permutation_group_from_nauty_output" << endl;
448 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph: "
458 cout <<
"nauty_interface_with_group::create_automorphism_group_of_graph done" << endl;
465 int *Adj,
int n,
int *labeling,
469 int f_v = (verbose_level >= 1);
470 int f_vv = (verbose_level >= 2);
473 cout <<
"nauty_interface_with_group::create_automorphism_group_and_canonical_labeling_of_graph "
489 cout <<
"nauty_interface_with_group::create_automorphism_group_and_canonical_labeling_of_graph "
490 "before NO->allocate" << endl;
496 cout <<
"nauty_interface_with_group::create_automorphism_group_and_canonical_labeling_of_graph "
497 "after NO->allocate" << endl;
503 cout <<
"nauty_interface_with_group::create_automorphism_group_and_canonical_labeling_of_graph "
504 "initializing partition" << endl;
506 for (i = 0; i < n; i++) {
509 partition[n - 1] = 0;
512 cout <<
"nauty_interface_with_group::create_automorphism_group_and_canonical_labeling_of_graph "
513 "before Nau.nauty_interface_graph_int" << endl;
515 Nau.nauty_interface_graph_int(n, Adj,
520 cout <<
"nauty_interface_with_group::create_automorphism_group_and_canonical_labeling_of_graph "
521 "after Nau.nauty_interface_graph_int" << endl;
525 for (i = 0; i < n; i++) {
535 cout <<
"nauty_interface_with_group::create_automorphism_group_and_canonical_labeling_of_graph "
536 "before A->init_permutation_group_from_nauty_output" << endl;
541 cout <<
"nauty_interface_with_group::create_automorphism_group_and_canonical_labeling_of_graph "
542 "after A->init_permutation_group_from_nauty_output" << endl;
546 cout <<
"nauty_interface_with_group::create_automorphism_group_and_canonical_labeling_of_graph: "
556 cout <<
"nauty_interface_with_group::create_automorphism_group_and_canonical_labeling_of_graph "
563action *nauty_interface_with_group::create_automorphism_group_of_block_system(
564 int nb_points,
int nb_blocks,
int block_size,
long int *Blocks,
567 int f_v = (verbose_level >= 1);
573 cout <<
"nauty_interface_with_group::create_automorphism_group_of_block_system" << endl;
575 M =
NEW_int(nb_points * nb_blocks);
577 for (j = 0; j < nb_blocks; j++) {
578 for (h = 0; h < block_size; h++) {
579 i = Blocks[j * block_size + h];
580 M[i * nb_blocks + j] = 1;
583 A = create_automorphism_group_of_incidence_matrix(
584 nb_points, nb_blocks, M, verbose_level);
588 cout <<
"nauty_interface_with_group::create_automorphism_group_of_block_system done" << endl;
593action *nauty_interface_with_group::create_automorphism_group_of_collection_of_two_block_systems(
595 int nb_blocks1,
int block_size1,
long int *Blocks1,
596 int nb_blocks2,
int block_size2,
long int *Blocks2,
599 int f_v = (verbose_level >= 1);
607 cout <<
"nauty_interface_with_group::create_automorphism_group_of_collection_"
608 "of_two_block_systems" << endl;
610 nb_cols = nb_blocks1 + nb_blocks2 + 1;
611 nb_rows = nb_points + 2;
613 M =
NEW_int(nb_rows * nb_cols);
617 for (j = 0; j < nb_blocks1; j++) {
618 for (h = 0; h < block_size1; h++) {
619 i = Blocks1[j * block_size1 + h];
620 M[i * nb_cols + j] = 1;
623 M[i * nb_cols + j] = 1;
626 for (j = 0; j < nb_blocks2; j++) {
627 for (h = 0; h < block_size2; h++) {
628 i = Blocks2[j * block_size2 + h];
629 M[i * nb_cols + nb_blocks1 + j] = 1;
632 M[i * nb_cols + nb_blocks1 + j] = 1;
635 for (i = 0; i < 2; i++) {
636 M[(nb_points + i) * nb_cols + nb_blocks1 + nb_blocks2] = 1;
639 A = create_automorphism_group_of_incidence_matrix(
640 nb_rows, nb_cols, M, verbose_level);
644 cout <<
"nauty_interface_with_group::create_automorphism_group_of_collection_"
645 "of_two_block_systems done" << endl;
650action *nauty_interface_with_group::create_automorphism_group_of_incidence_matrix(
651 int m,
int n,
int *Mtx,
654 int f_v = (verbose_level >= 1);
661 cout <<
"nauty_interface_with_group::create_automorphism_group_of_incidence_matrix" << endl;
664 for (i = 0; i < m; i++) {
665 for (j = 0; j < n; j++) {
666 if (Mtx[i * n + j]) {
673 for (i = 0; i < m; i++) {
674 for (j = 0; j < n; j++) {
675 if (Mtx[i * n + j]) {
680 A = create_automorphism_group_of_incidence_structure_low_level(
681 m, n, nb_inc, X, verbose_level);
685 cout <<
"nauty_interface_with_group::create_automorphism_group_of_incidence_matrix done" << endl;
690action *nauty_interface_with_group::create_automorphism_group_of_incidence_structure(
691 incidence_structure *Inc,
694 int f_v = (verbose_level >= 1);
703 cout <<
"nauty_interface_with_group::create_automorphism_group_of_incidence_structure" << endl;
705 m = Inc->nb_points();
707 nb_inc = Inc->get_nb_inc();
711 for (i = 0; i < m; i++) {
712 nb = Inc->get_lines_on_point(data, i, 0 );
713 for (j = 0; j < nb; j++) {
719 cout <<
"nauty_interface_with_group::create_automorphism_group_of_incidence_structure "
720 "h != nb_inc" << endl;
724 A = create_automorphism_group_of_incidence_structure_low_level(
733action *nauty_interface_with_group::create_automorphism_group_of_incidence_structure_low_level(
734 int m,
int n,
int nb_inc,
int *X,
737 int f_v = (verbose_level >= 1);
743 cout <<
"nauty_interface_with_group::create_automorphism_group_"
744 "of_incidence_structure_low_level" << endl;
748 for (i = 0; i < m + n; i++) {
752 partition[m - 1] = 0;
754 A = create_automorphism_group_of_incidence_structure_with_partition(
755 m, n, nb_inc, X, partition,
760 cout <<
"nauty_interface_with_group::create_automorphism_group_"
761 "of_incidence_structure_low_level done" << endl;
766action *nauty_interface_with_group::create_automorphism_group_of_incidence_structure_with_partition(
767 int m,
int n,
int nb_inc,
int *X,
int *partition,
770 int f_v = (verbose_level >= 1);
771 int f_v10 = (verbose_level >= 10);
774 int *Base, *Transversal_length;
776 int Aut_counter = 0, Base_length = 0;
777 longinteger_object Ago;
787 Transversal_length =
NEW_int(m + n);
790 cout <<
"nauty_interface_with_group::create_automorphism_group_of_"
791 "incidence_structure_with_partition" << endl;
797 Nau.nauty_interface_int(m, n, X, nb_inc,
801 Transversal_length, Ago);
805 cout <<
"nauty_interface_with_group::create_automorphism_group_of_"
806 "incidence_structure_with_partition: "
807 "The group order is = " << Ago << endl;
814 for (i = 0; i < m + n; i++) {
821 cout <<
"nauty_interface_with_group::create_automorphism_group_of_"
822 "incidence_structure_with_partition: "
830 cout <<
"nauty_interface_with_group::create_automorphism_group_of_"
831 "incidence_structure_with_partition: "
836 cout <<
"nauty_interface_with_group::create_automorphism_group_of_"
837 "incidence_structure_with_partition: "
838 "generators:" << endl;
840 Aut, Aut_counter, m + n, m + n, 2);
846 longinteger_object ago;
853 A->init_permutation_group_from_generators(m + n,
856 Base_length, Base_lint,
860 cout <<
"nauty_interface_with_group::create_automorphism_group_of_"
861 "incidence_structure_with_partition: "
876void nauty_interface_with_group::test_self_dual_self_polar(
int input_no,
877 int m,
int n,
int nb_inc,
int *X,
878 int &f_self_dual,
int &f_self_polar,
881 int M, N, i, j, h, Nb_inc, a;
886 f_self_polar =
FALSE;
893 for (i = 0; i < M * N; i++) {
896 for (i = 0; i < m; i++) {
899 for (i = 0; i < m; i++) {
900 Mtx[(m + i) * N + 1] = 1;
902 for (h = 0; h < nb_inc; h++) {
906 Mtx[i * N + 2 + h] = 1;
907 Mtx[(m + j) * N + 2 + h] = 1;
910 for (i = 0; i < M * N; i++) {
916 do_self_dual_self_polar(input_no,
917 M, N, Nb_inc, Y, f_self_dual, f_self_polar,
925void nauty_interface_with_group::do_self_dual_self_polar(
int input_no,
926 int m,
int n,
int nb_inc,
int *X,
927 int &f_self_dual,
int &f_self_polar,
930 int f_v = (verbose_level >= 1);
931 int f_vv = (verbose_level >= 2);
934 int *Base, *Transversal_length, *partitions;
936 int Aut_counter = 0, Base_length = 0;
937 longinteger_object Ago;
945 f_self_dual = f_self_polar =
FALSE;
951 Transversal_length =
NEW_int(m + n);
955 if ((input_no % 500) == 0) {
956 cout <<
"nauty_interface_with_group::do_self_dual_self_polar input_no=" << input_no << endl;
959 for (i = 0; i < m + n; i++) {
964 for (i = 0; i < PB.P.ht; i++) {
965 j = PB.P.startCell[i] + PB.P.cellSize[i] - 1;
972 for (i = 0; i < nb_row_parts; i++) {
974 partitions[j + l - 1] = 0;
977 for (i = 0; i < nb_col_parts; i++) {
979 partitions[j + l - 1] = 0;
987 Nau.nauty_interface_int(m, n, X, nb_inc,
988 labeling, partitions, Aut, Aut_counter,
989 Base, Base_length, Transversal_length, Ago);
992 if ((input_no % 500) == 0) {
993 cout <<
"The group order is = " << Ago << endl;
1000 for (i = 0; i < m + n; i++) {
1002 labeling_inv[j] = i;
1008 int h, a, b, c, m_half;
1011 aut =
NEW_int(Aut_counter * m);
1012 for (h = 0; h < Aut_counter; h++) {
1013 for (i = 0; i < m; i++) {
1014 aut[h * m + i] = Aut[h * (m + n) + i];
1017 f_self_dual =
FALSE;
1018 f_self_polar =
FALSE;
1019 for (h = 0; h < Aut_counter; h++) {
1020 p_aut = aut + h * m;
1026 cout <<
"no " << input_no <<
" is self dual" << endl;
1037 AUT =
NEW_int(Aut_counter * (m + n));
1039 for (h = 0; h < Aut_counter; h++) {
1040 for (i = 0; i < m + n; i++) {
1041 j = labeling_inv[i];
1042 j = Aut[h * (m + n) + j];
1044 AUT[h * (m + 1) + i] = j;
1047 for (i = 0; i < Base_length; i++) {
1055 longinteger_object ago;
1062 A.init_permutation_group_from_generators(m + n,
1065 Base_length, Base_lint,
1068 cout <<
"created action ";
1077 longinteger_object go;
1084 Elt =
NEW_int(A.elt_size_in_int);
1086 cout <<
"the group order is: " << goi << endl;
1087 for (i = 0; i < goi; i++) {
1088 S->element_unrank_lint(i, Elt);
1089 if (Elt[0] < m_half) {
1093 for (a = 0; a < m_half; a++) {
1100 cout <<
"found a polarity:" << endl;
1101 A.element_print(Elt, cout);
1103 f_self_polar =
TRUE;
1127void nauty_interface_with_group::add_configuration_graph(ofstream &g,
1128 int m,
int n,
int nb_inc,
int *X,
int f_first,
1131 incidence_structure Inc;
1134 int i, j, h, nb_joined_pairs, nb_missing_pairs;
1137 longinteger_object ago;
1138 combinatorics_domain Combi;
1140 A = create_automorphism_group_of_incidence_structure_low_level(
1143 A->group_order(ago);
1145 Inc.init_by_incidences(m, n, nb_inc, X, verbose_level);
1146 joining_table =
NEW_int(m * m);
1147 for (i = 0; i < m * m; i++) {
1148 joining_table[i] =
FALSE;
1150 nb_joined_pairs = 0;
1151 for (i = 0; i < m; i++) {
1152 for (j = i + 1; j < m; j++) {
1153 for (h = 0; h < n; h++) {
1154 if (Inc.get_ij(i, h) && Inc.get_ij(j, h)) {
1155 joining_table[i * m + j] =
TRUE;
1156 joining_table[j * m + i] =
TRUE;
1162 nb_missing_pairs = Combi.int_n_choose_k(m, 2) - nb_joined_pairs;
1163 n1 = n + nb_missing_pairs;
1165 for (i = 0; i < m * n1; i++) {
1168 for (i = 0; i < m; i++) {
1169 for (j = 0; j < n; j++) {
1170 M1[i * n1 + j] = Inc.get_ij(i, j);
1174 for (i = 0; i < m; i++) {
1175 for (j = i + 1; j < m; j++) {
1176 if (joining_table[i * m + j] ==
FALSE) {
1177 M1[i * n1 + n + h] = 1;
1178 M1[j * n1 + n + h] = 1;
1185 for (i = 0; i < m; i++) {
1186 for (j = 0; j < n1; j++) {
1187 if (M1[i * n1 + j]) {
1192 g << m <<
" " << n1 <<
" " << nb_inc1 << endl;
1194 for (i = 0; i < m; i++) {
1195 for (j = 0; j < n1; j++) {
1196 if (M1[i * n1 + j]) {
1197 g << i * n1 + j <<
" ";
1215 int f_v = (verbose_level >= 1);
1216 int f_vv = (verbose_level >= 2);
1221 cout <<
"nauty_interface_with_group::automorphism_group_as_permutation_group" << endl;
1227 cout <<
"nauty_interface_with_group::automorphism_group_as_permutation_group "
1228 "before init_permutation_group_from_generators" << endl;
1233 cout <<
"nauty_interface_with_group::automorphism_group_as_permutation_group "
1234 "after init_permutation_group_from_generators" << endl;
1238 cout <<
"nauty_interface_with_group::automorphism_group_as_permutation_group "
1239 "create_automorphism_group_of_incidence_structure: created action ";
1246 cout <<
"nauty_interface_with_group::automorphism_group_as_permutation_group done" << endl;
1258 int f_v = (verbose_level >= 1);
1259 int f_vv = (verbose_level >= 2);
1260 int f_vvv = (verbose_level >= 3);
1264 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group" << endl;
1275 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group before automorphism_group_as_permutation_group" << endl;
1285 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group after automorphism_group_as_permutation_group" << endl;
1292 if (A_linear == NULL) {
1293 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1294 "A_linear == NULL" << endl;
1300 int g, frobenius, pos;
1307 gens1->
init(A_linear, verbose_level - 2);
1314 for (g = 0; g < gens->
len; g++) {
1316 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1317 "strong generator " << g <<
":" << endl;
1323 gens->
ith(g), Mtx, frobenius,
1326 Mtx[d * d] = frobenius;
1329 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1330 "semi-linear group element:" << endl;
1340 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1341 "generator " << g <<
" does not "
1342 "correspond to a semilinear mapping" << endl;
1348 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1349 "we found " << gens1->
len <<
" generators" << endl;
1358 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1359 "we are now testing the generators:" << endl;
1363 for (g = 0; g < gens1->
len; g++) {
1365 cout <<
"generator " << g <<
":" << endl;
1368 for (i = 0; i < P->
N_points; i++) {
1372 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1373 "problem with generator: "
1375 cout <<
"i=" << i << endl;
1376 cout <<
"j1=" << j1 << endl;
1377 cout <<
"j2=" << j2 << endl;
1384 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1385 "the generators are OK" << endl;
1394 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1395 "before A_linear->create_sims_from_generators_with_target_group_order" << endl;
1399 gens1, *NO->
Ago, 0 );
1402 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1403 "after A_linear->create_sims_from_generators_with_target_group_order" << endl;
1411 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1412 "Found a group of order " << go << endl;
1415 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1416 "strong generators are:" << endl;
1418 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1419 "strong generators are (in tex):" << endl;
1427 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1428 "the group order does not match" << endl;
1429 cout <<
"ago = " << NO->
Ago << endl;
1430 cout <<
"go = " << go << endl;
1436 cout <<
"before freeing labeling" << endl;
1443 cout <<
"before freeing A_perm" << endl;
1449 cout <<
"not freeing gens" << endl;
1453 cout <<
"before freeing Mtx" << endl;
1463 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1464 "before initializing strong generators" << endl;
1472 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group "
1473 "after initializing strong generators" << endl;
1478 cout <<
"nauty_interface_with_group::reverse_engineer_linear_group_from_permutation_group done" << endl;
1491 int f_v = (verbose_level >= 1);
1496 cout <<
"nauty_interface_with_group::set_stabilizer_of_object" << endl;
1497 cout <<
"verbose_level = " << verbose_level << endl;
1504 cout <<
"nauty_interface_with_group::set_stabilizer_of_object "
1505 "before OiP->run_nauty" << endl;
1510 f_compute_canonical_form, Canonical_form,
1515 cout <<
"nauty_interface_with_group::set_stabilizer_of_object "
1516 "after OiP->run_nauty" << endl;
1526 cout <<
"nauty_interface_with_group::set_stabilizer_of_object "
1527 "after OiP->run_nauty" << endl;
1529 cout <<
"nauty_interface_with_group::set_stabilizer_of_object "
1530 "go = " << ago << endl;
1540 cout <<
"nauty_interface_with_group::set_stabilizer_of_object "
1541 "before Nauty.reverse_engineer_linear_group_from_permutation_group" << endl;
1551 cout <<
"nauty_interface_with_group::set_stabilizer_of_object "
1552 "after Nauty.reverse_engineer_linear_group_from_permutation_group" << endl;
1559 cout <<
"nauty_interface_with_group::set_stabilizer_of_object done" << endl;
a collection of combinatorial functions
int ij2k(int i, int j, int n)
compact storage of 0/1-data as bitvectors
void m_i(long int i, int a)
void allocate(long int length)
void zero(int *v, long int len)
void print_integer_matrix_width(std::ostream &ost, int *p, int m, int n, int dim_n, int w)
void copy_to_lint(int *from, long int *to, long int len)
void print(std::ostream &ost, std::vector< int > &v)
void print(std::ostream &ost, long int *v, int len)
output data created by a run of nauty
void allocate(int N, int verbose_level)
ring_theory::longinteger_object * Ago
a statistical analysis of data consisting of single integers
void init(int *data, int data_length, int f_second, int verbose_level)
projective space PG(n,q) of dimension n over Fq
a graph with a vertex coloring
data_structures::bitvector * Bitvec
data_structures::lint_vec * Lint_vec
data_structures::int_vec * Int_vec
domain to compute with objects of type longinteger
int compare_unsigned(longinteger_object &a, longinteger_object &b)
a class to represent arbitrary precision integers
a permutation group in a fixed action.
void element_print(void *elt, std::ostream &ost)
int reverse_engineer_semilinear_map(geometry::projective_space *P, int *Elt, int *Mtx, int &frobenius, int verbose_level)
groups::strong_generators * Strong_gens
int matrix_group_dimension()
void init_permutation_group_from_nauty_output(data_structures::nauty_output *NO, int verbose_level)
void make_element(int *Elt, int *data, int verbose_level)
void element_move(void *a, void *b, int verbose_level)
groups::sims * create_sims_from_generators_with_target_group_order(data_structures_groups::vector_ge *gens, ring_theory::longinteger_object &target_go, int verbose_level)
long int element_image_of(long int a, void *elt, int verbose_level)
void automorphism_group_as_permutation_group(data_structures::nauty_output *NO, actions::action *&A_perm, int verbose_level)
groups::strong_generators * set_stabilizer_of_object(geometry::object_with_canonical_form *OwCF, action *A_linear, int f_compute_canonical_form, data_structures::bitvector *&Canonical_form, data_structures::nauty_output *&NO, int verbose_level)
action * create_automorphism_group_of_graph_with_partition_and_labeling(int n, int f_bitvector, data_structures::bitvector *Bitvec, int *Adj, int nb_parts, int *parts, int *labeling, int verbose_level)
nauty_interface_with_group()
~nauty_interface_with_group()
void reverse_engineer_linear_group_from_permutation_group(actions::action *A_linear, geometry::projective_space *P, groups::strong_generators *&SG, actions::action *&A_perm, data_structures::nauty_output *NO, int verbose_level)
action * create_automorphism_group_and_canonical_labeling_of_graph(int *Adj, int n, int *labeling, int verbose_level)
action * create_automorphism_group_and_canonical_labeling_of_colored_graph(int n, int f_bitvec, data_structures::bitvector *Bitvec, int *Adj, int *vertex_colors, int *labeling, int verbose_level)
action * create_automorphism_group_and_canonical_labeling_of_colored_graph_object(graph_theory::colored_graph *CG, int *labeling, int verbose_level)
action * create_automorphism_group_of_graph(int *Adj, int n, int verbose_level)
action * create_automorphism_group_of_graph_bitvec(int n, data_structures::bitvector *Bitvec, int verbose_level)
action * create_automorphism_group_of_colored_graph_object(graph_theory::colored_graph *CG, int verbose_level)
to hold a vector of group elements
void allocate(int length, int verbose_level)
void reallocate(int new_length, int verbose_level)
void print(std::ostream &ost)
void init(actions::action *A, int verbose_level)
a permutation group represented via a stabilizer chain
void group_order(ring_theory::longinteger_object &go)
void print_generators_tex(std::ostream &ost)
a strong generating set for a permutation group with respect to a fixed action
void init_from_sims(groups::sims *S, int verbose_level)
data_structures_groups::vector_ge * gens
#define Int_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects