17namespace layer5_applications {
18namespace apps_combinatorics {
21static void delandtsheer_doyen_early_test_func_callback(
long int *S,
int len,
22 long int *candidates,
int nb_candidates,
23 long int *good_candidates,
int &nb_good_candidates,
24 void *data,
int verbose_level);
181 int f_v = (verbose_level >= 1);
184 cout <<
"delandtsheer_doyen::init" << endl;
193 cout <<
"please use -K <K> to specify K" << endl;
197 cout <<
"please use -depth <depth> to specify depth" << endl;
226 cout <<
"delandtsheer_doyen::init" << endl;
227 cout <<
"V=" <<
V << endl;
228 cout <<
"K=" <<
Descr->
K << endl;
229 cout <<
"Xsize=" <<
Xsize << endl;
230 cout <<
"Ysize=" <<
Ysize << endl;
231 cout <<
"V=" <<
V << endl;
241 cout <<
"delandtsheer_doyen::init" << endl;
260 cout <<
"delandtsheer_doyen::init before create_action" << endl;
264 cout <<
"delandtsheer_doyen::init after create_action" << endl;
277 cout <<
"delandtsheer_doyen::init before create_monomial_group" << endl;
281 cout <<
"delandtsheer_doyen::init after create_monomial_group" << endl;
288 cout <<
"delandtsheer_doyen::init action A0 does not "
289 "have strong generators" << endl;
297 cout <<
"delandtsheer_doyen::init The group " <<
A->
label <<
" has order " <<
go
298 <<
" and permutation degree " <<
A->
degree << endl;
315 cout <<
"delandtsheer_doyen::init before scan_subgroup_generators" << endl;
319 cout <<
"delandtsheer_doyen::init after scan_subgroup_generators" << endl;
324 cout <<
"delandtsheer_doyen::init before compute_orbits_on_pairs" << endl;
328 cout <<
"delandtsheer_doyen::init after compute_orbits_on_pairs" << endl;
334 cout <<
"We don't have -subgroup, so orbits on pairs "
335 "are not computed" << endl;
342 cout <<
"searching wrt subgroup" << endl;
361 cout <<
"delandtsheer_doyen::init before search_singletons" << endl;
365 cout <<
"delandtsheer_doyen::init after search_singletons" << endl;
373 cout <<
"delandtsheer_doyen::init before search_starter" << endl;
377 cout <<
"delandtsheer_doyen::init after search_starter" << endl;
385 cout <<
"delandtsheer_doyen::init done" << endl;
393 int f_v = (verbose_level >= 1);
397 cout <<
"delandtsheer_doyen::show_generators" << endl;
400 cout <<
"Generators are:" << endl;
402 cout <<
"generator " << i <<
" / "
405 cout <<
"as permutation: " << endl;
415 cout <<
"Generators are:" << endl;
420 cout <<
"Generators in GAP format are:" << endl;
421 cout <<
"G := Group([";
429 if (i < SG->gens->len - 1) {
430 cout <<
", " << endl;
433 cout <<
"]);" << endl;
434 cout <<
"Generators in compact permutation form are:" << endl;
437 for (j = 0; j <
A->
degree; j++) {
444 cout <<
"-1" << endl;
447 cout <<
"delandtsheer_doyen::show_generators done" << endl;
453 int f_v = (verbose_level >= 1);
456 cout <<
"delandtsheer_doyen::search_singletons" << endl;
461 cout <<
"target_depth=" << target_depth << endl;
468 fname.assign(
"design_");
472 sprintf(str,
"_%d_%d_lvl_%d",
477 ODF->
load(fname, verbose_level);
478 cout <<
"found " << ODF->
nb_cases <<
" orbits at level " << level << endl;
481 int nb_orbits_not_ruled_out;
484 int nb_cases_eliminated = 0;
488 nb_orbits_not_ruled_out = 0;
490 for (orbit_idx = 0; orbit_idx < ODF->
nb_cases; orbit_idx++) {
494 if ((orbit_idx % split_m) == split_r) {
500 if ((orbit_idx % 100)== 0) {
507 cout << orbit_idx <<
" / " << ODF->
nb_cases <<
" : ";
510 cout <<
" : " << ODF->
Ago_ascii[orbit_idx] <<
" : "
516 line0 = ODF->
sets[orbit_idx];
517 if (ODF->
set_sizes[orbit_idx] != level) {
518 cout <<
"ODF->set_sizes[orbit_idx] != level" << endl;
525 cout <<
"case " << orbit_idx <<
" / " << ODF->
nb_cases
530 cout <<
"eliminated!" << endl;
532 nb_cases_eliminated++;
535 Orbit_idx[nb_orbits_not_ruled_out++] = orbit_idx;
539 cout <<
"nb_cases=" << nb_cases <<
" vs ";
540 cout <<
"nb_cases_eliminated=" << nb_cases_eliminated << endl;
543 cout <<
"nb_cases=" << nb_cases << endl;
544 cout <<
"nb_cases_eliminated=" << nb_cases_eliminated << endl;
546 int orbit_not_ruled_out;
549 for (orbit_not_ruled_out = 0;
550 orbit_not_ruled_out < nb_orbits_not_ruled_out;
551 orbit_not_ruled_out++) {
552 orbit_idx = Orbit_idx[orbit_not_ruled_out];
555 if ((orbit_not_ruled_out % 100)== 0) {
564 cout <<
"orbit_not_ruled_out=" << orbit_not_ruled_out
565 <<
" / " << nb_orbits_not_ruled_out
566 <<
" is orbit_idx " << orbit_idx << endl;
571 line0 = ODF->
sets[orbit_idx];
572 if (ODF->
set_sizes[orbit_idx] != level) {
573 cout <<
"ODF->set_sizes[orbit_idx] != level" << endl;
580 cout <<
"orbit_not_ruled_out=" << orbit_not_ruled_out <<
" / "
581 << nb_orbits_not_ruled_out <<
" is orbit_idx"
582 << orbit_idx <<
" / " << ODF->
nb_cases
584 <<
" live points" << endl;
590 cout <<
"found a solution in orbit " << orbit_idx << endl;
598 cout <<
"orbit_not_ruled_out=" << orbit_not_ruled_out <<
" / "
599 << nb_orbits_not_ruled_out <<
" is orbit_idx"
600 << orbit_idx <<
" / " << ODF->
nb_cases
602 <<
" live points, doing a search; ";
607 subset =
NEW_int(target_depth);
610 cout <<
"nb_live_points = " <<
nb_live_points <<
" target_depth = " << target_depth <<
" nCk = " << nCk << endl;
611 for (l = 0; l < nCk; l++) {
620 cout <<
"found a solution, subset " << l
621 <<
" / " << nCk <<
" in orbit "
622 << orbit_idx << endl;
631 cout <<
"nb_sol=" << nb_sol << endl;
632 cout <<
"searching singletons done" << endl;
635 cout <<
"delandtsheer_doyen::search_singletons done" << endl;
643 int f_v = (verbose_level >= 1);
651 cout <<
"delandtsheer_doyen::search_starter" << endl;
658 cout <<
"please use -problem_label <string : problem_label>" << endl;
664 label.assign(
"design_");
671 label.assign(
"design_no_group_");
688 cout <<
"delandtsheer_doyen::search_starter before "
689 "Poset->add_testing_without_group" << endl;
692 delandtsheer_doyen_early_test_func_callback,
697 cout <<
"delandtsheer_doyen::search_starter "
698 "before Gen->init" << endl;
703 cout <<
"delandtsheer_doyen::search_starter "
704 "after Gen->init" << endl;
708 int f_use_invariant_subset_if_available =
TRUE;
714 cout <<
"delandtsheer_doyen::search_starter "
715 "before Gen->main" << endl;
729 f_use_invariant_subset_if_available,
734 cout <<
"delandtsheer_doyen::search_starter "
735 "after Gen->main" << endl;
741 int h, i, pi, j, pj, o;
745 int k2 = k * (k - 1) >> 1;
748 cout <<
"target level: " <<
Descr->
depth << endl;
749 cout <<
"k2: " << k2 << endl;
750 cout <<
"number of k-orbits at target level: " << nb_k_orbits << endl;
753 Covered_orbits =
NEW_int(nb_k_orbits * k2);
755 for (h = 0; h < nb_k_orbits; h++) {
765 for (i = 0; i < k; i++) {
767 for (j = i + 1; j < k; j++, l++) {
771 cout <<
"delandtsheer_doyen::search_starter "
772 "pi = " << pi <<
" == pj = " << pj << endl;
775 Covered_orbits[h * k2 + l] = o;
789 fname.append(
"_pair_covering.csv");
792 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
798 cout <<
"delandtsheer_doyen::search_starter "
799 "before Gen->draw_poset" << endl;
807 cout <<
"delandtsheer_doyen::search_starter done" << endl;
816 int f_v = (verbose_level >= 1);
822 cout <<
"delandtsheer_doyen::compute_orbits_on_pairs" << endl;
836 cout <<
"delandtsheer_doyen::compute_orbits_on_pairs "
837 "before Pairs->init" << endl;
842 cout <<
"direct_product_action::compute_orbits_on_pairs "
843 "after Pairs->init" << endl;
848 int f_use_invariant_subset_if_available;
851 f_use_invariant_subset_if_available =
TRUE;
856 cout <<
"delandtsheer_doyen::compute_orbits_on_pairs "
857 "before Pairs->main" << endl;
873 f_use_invariant_subset_if_available,
878 cout <<
"delandtsheer_doyen::compute_orbits_on_pairs "
879 "after Pairs->main" << endl;
886 cout <<
"delandtsheer_doyen::compute_orbits_on_pairs "
908 cout <<
"integrality conditions violated (2)" << endl;
910 cout <<
"pair orbit i=" << i <<
" / " <<
nb_orbits << endl;
912 cout <<
"b=" <<
b << endl;
916 cout <<
"i : orbit_length[i] : orbit_covered_max[i]" << endl;
925 cout <<
"delandtsheer_doyen::compute_orbits_on_pairs done" << endl;
931 int f_v = (verbose_level >= 1);
935 cout <<
"delandtsheer_doyen::scan_subgroup_generators" << endl;
946 cout <<
"before Strong_gens->init_from_data_with_target_go_ascii" << endl;
948 cout <<
"nb_gens=" << nb_gens << endl;
957 cout <<
"delandtsheer_doyen "
958 "after Strong_gens->init_from_data_with_target_go_ascii" << endl;
961 cout <<
"delandtsheer_doyen::scan_subgroup_generators done" << endl;
968 int f_v = (verbose_level >= 1);
972 cout <<
"delandtsheer_doyen::create_monomial_group" << endl;
982 cout <<
"before generators_for_the_monomial_group "
988 cout <<
"after generators_for_the_monomial_group "
994 cout <<
"before generators_for_the_monomial_group "
1000 cout <<
"after generators_for_the_monomial_group "
1001 "action" <<
A2->
label << endl;
1005 cout <<
"direct_product_action::init "
1006 "before lift_generators" << endl;
1014 cout <<
"direct_product_action::init "
1015 "after lift_generators" << endl;
1021 cout <<
"The group has order " <<
go << endl;
1031 for (i = 0; i <
Descr->
d1; i++) {
1032 for (j = 0; j <
Descr->
d2; j++) {
1044 cout <<
"delandtsheer_doyen::create_monomial_group done" << endl;
1051 int f_v = (verbose_level >= 1);
1054 cout <<
"delandtsheer_doyen::create_action" << endl;
1067 cout <<
"delandtsheer_doyen::create_action initializing projective groups:" << endl;
1094 cout <<
"delandtsheer_doyen::create_action integrality conditions violated" << endl;
1098 cout <<
"b=" <<
b << endl;
1108 cout <<
"delandtsheer_doyen::create_action initializing affine groups:" << endl;
1119 cout <<
"delandtsheer_doyen::create_action before "
1120 "AG.init_direct_product_group_and_restrict" << endl;
1129 cout <<
"delandtsheer_doyen::create_action after "
1130 "AG.init_direct_product_group_and_restrict" << endl;
1134 cout <<
"delandtsheer_doyen::create_action action "
1135 "A does not have a subaction" << endl;
1139 cout <<
"delandtsheer_doyen::create_action done" << endl;
1145 int f_v = (verbose_level >= 1);
1146 int i, a, x, y, h, ph, k, pk, o;
1149 cout <<
"delandtsheer_doyen::create_graph" << endl;
1155 for (i = 0; i < len; i++) {
1167 cout <<
"delandtsheer_doyen::create_graph line0 is not good (check_orbit_covering)" << endl;
1173 for (x = 0; x <
Xsize; x++) {
1177 for (y = 0; y <
Ysize; y++) {
1183 for (h = 0; h < len; h++) {
1189 for (k = h; k >= 0; k--) {
1207 cout <<
"delandtsheer_doyen::create_graph done" << endl;
1214 int f_v = (verbose_level >= 1);
1218 cout <<
"delandtsheer_doyen::find_pair_orbit" << endl;
1221 cout <<
"delandtsheer_doyen::find_pair_orbit "
1222 "i = j = " << j << endl;
1227 cout <<
"delandtsheer_doyen::find_pair_orbit done" << endl;
1234 int f_v = (verbose_level >= 1);
1237 long int canonical_set[2];
1240 cout <<
"delandtsheer_doyen::find_pair_orbit_by_tracing" << endl;
1243 cout <<
"delandtsheer_doyen::find_pair_orbit_by_tracing "
1244 "i = j = " << j << endl;
1253 cout <<
"delandtsheer_doyen::find_pair_orbit_by_tracing "
1261 int f_v = (verbose_level >= 1);
1266 cout <<
"delandtsheer_doyen::compute_pair_orbit_table" << endl;
1270 for (i = 0; i <
V; i++) {
1271 for (j = i + 1; j <
V; j++) {
1276 if ((i % 100) == 0) {
1277 cout <<
"i=" << i << endl;
1281 cout <<
"delandtsheer_doyen::compute_pair_orbit_table done" << endl;
1287 int f_v = (verbose_level >= 1);
1290 int i, j, k, n, size, l;
1294 cout <<
"delandtsheer_doyen::write_pair_orbit_file" << endl;
1298 fname.append(
".2orbits");
1300 cout <<
"writing pair-orbit file " << fname << endl;
1308 cout <<
"delandtsheer_doyen::write_pair_orbit_file "
1309 "size != 2" << endl;
1313 f << set[0] <<
" " << set[1] <<
" " << l << endl;
1315 for (i = 0; i <
V; i++) {
1316 for (j = i + 1; j <
V; j++) {
1321 if ((i % 100) == 0) {
1322 cout <<
"i=" << i << endl;
1328 cout <<
"written file " << fname <<
" of size "
1331 cout <<
"delandtsheer_doyen::write_pair_orbit_file done" << endl;
1346 else if (who == 2) {
1349 else if (who == 3) {
1352 else if (who == 4) {
1358 else if (what == 2) {
1361 else if (what == 3) {
1369 long int *candidates,
int nb_candidates,
1370 long int *good_candidates,
int &nb_good_candidates,
1373 int f_v = (verbose_level >= 1);
1374 int f_vv = (verbose_level >= 2);
1379 cout <<
"delandtsheer_doyen::early_test_func checking set ";
1382 cout <<
"candidate set of size "
1383 << nb_candidates <<
":" << endl;
1391 nb_good_candidates = nb_candidates;
1394 nb_good_candidates = 0;
1397 cout <<
"delandtsheer_doyen::early_test_func before testing" << endl;
1399 for (j = 0; j < nb_candidates; j++) {
1401 S[len] = candidates[j];
1405 cout <<
"delandtsheer_doyen::early_test_func "
1406 "testing " << j <<
" / "
1407 << nb_candidates << endl;
1411 good_candidates[nb_good_candidates++] = candidates[j];
1420 int f_v = (verbose_level >= 1);
1421 int f_vv = (verbose_level >= 2);
1423 int f_bad_orbit =
FALSE;
1424 int f_bad_row =
FALSE;
1425 int f_bad_col =
FALSE;
1426 int f_bad_mask =
FALSE;
1431 cout <<
"delandtsheer_doyen::check_conditions "
1441 cout <<
"delandtsheer_doyen::check_conditions "
1443 "repeat entry" << endl;
1462 if (f_OK && !
check_mask(S, len, verbose_level)) {
1468 cout <<
"OK" << endl;
1474 cout <<
"not OK" << endl;
1477 cout <<
"because of ";
1479 cout <<
"orbit covering";
1484 else if (f_bad_mask)
1493 int len,
int verbose_level)
1495 int f_v = (verbose_level >= 1);
1497 int i, pi, j, pj, o, f_OK =
TRUE;
1501 for (i = 0; i < len; i++) {
1503 for (j = i + 1; j < len; j++) {
1508 cout <<
"delandtsheer_doyen::check_orbit_covering "
1509 "pi = " << pi <<
" == pj = " << pj << endl;
1524 cout <<
"orbit condition violated" << endl;
1527 print_orbit_covered(cout);
1528 print_orbit_covered_max(cout);
1529 get_orbit_covering_matrix(
line, len, verbose_level - 1);
1530 print_orbit_covering_matrix(len);
1539 int len,
int verbose_level)
1541 int f_v = (verbose_level >= 1);
1542 int f_vv = (verbose_level >= 2);
1543 int i, p, x, s, f_OK =
TRUE;
1544 int f_DD_problem =
FALSE;
1553 for (i = 0; i < len; i++) {
1562 f_DD_problem =
TRUE;
1584 cout <<
"delandtsheer_doyen::check_row_sums "
1585 "row condition violated" << endl;
1588 cout <<
"delandtsheer_doyen::check_row_sums "
1589 "inner_pairs_in_rows = "
1591 <<
" > DELANDTSHEER_DOYEN_X = "
1593 <<
", not OK" << endl;
1596 cout <<
"delandtsheer_doyen::check_row_sums"
1597 "problem with row-type:" << endl;
1614 int len,
int verbose_level)
1616 int f_v = (verbose_level >= 1);
1617 int f_vv = (verbose_level >= 2);
1618 int i, p, y, s, f_OK =
TRUE;
1619 int f_DD_problem =
FALSE;
1628 for (i = 0; i < len; i++) {
1637 f_DD_problem =
TRUE;
1659 cout <<
"delandtsheer_doyen::check_col_sums "
1660 "col condition violated" << endl;
1663 cout <<
"delandtsheer_doyen::check_col_sums "
1664 "inner_pairs_in_cols = "
1666 <<
" > DELANDTSHEER_DOYEN_Y = "
1668 <<
", not OK" << endl;
1671 cout <<
"delandtsheer_doyen::check_col_sums "
1672 "problem with col-type:" << endl;
1689 int len,
int verbose_level)
1692 int f_v = (verbose_level >= 1);
1693 int f_vv = (verbose_level >= 2);
1696 int nb_rows_used, nb_cols_used;
1701 cout <<
"delandtsheer_doyen::check_mask" << endl;
1704 nb_rows_used, nb_cols_used,
1705 nb_singletons, verbose_level);
1721 who = nb_singletons;
1724 cout <<
"delandtsheer_doyen::check_mask: "
1725 "unknown mask_test_who value "
1738 if (who < Descr->mask_test_value[k]) {
1751 cout <<
"delandtsheer_doyen::check_mask: "
1752 "unknown mask_test_what value "
1759 cout <<
"mask" << endl;
1761 cout <<
"is OK" << endl;
1765 cout <<
"mask test " << k <<
" failed:" << endl;
1779 long int *line,
int len,
1780 int &nb_rows_used,
int &nb_cols_used,
1781 int &nb_singletons,
int verbose_level)
1789 for (h = 0; h < len; h++) {
1800 for (i = 0; i < m; i++) {
1817 for (j = 0; j < n; j++) {
1837static void delandtsheer_doyen_early_test_func_callback(
long int *S,
int len,
1838 long int *candidates,
int nb_candidates,
1839 long int *good_candidates,
int &nb_good_candidates,
1840 void *data,
int verbose_level)
1843 int f_v = (verbose_level >= 1);
1846 cout <<
"delandtsheer_doyen_early_test_func_callback for set ";
1851 candidates, nb_candidates,
1852 good_candidates, nb_good_candidates,
1855 cout <<
"delandtsheer_doyen_early_test_func_callback done" << endl;
a collection of combinatorial functions
void unrank_k_subset(int rk, int *set, int n, int k)
long int int_n_choose_k(int n, int k)
void apply_lint(int *from, long int *through, long int *to, int len)
a collection of functions related to sorted vectors
int lint_vec_search_linear(long int *v, int len, long int a, int &idx)
void finite_field_init(int q, int f_without_tables, int verbose_level)
a collection of functions related to file io
void int_matrix_write_csv(std::string &fname, int *M, int m, int n)
long int file_size(std::string &fname)
read output files from the poset classification
void load(std::string &fname, int verbose_level)
data_structures::int_vec * Int_vec
interface to system functions
global functions related to group actions
action * init_direct_product_group_and_restrict(groups::matrix_group *M1, groups::matrix_group *M2, int verbose_level)
a permutation group in a fixed action.
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)
action * restricted_action(long int *points, int nb_points, int verbose_level)
void element_print_quick(void *elt, std::ostream &ost)
groups::strong_generators * Strong_gens
int f_has_strong_generators
void init_projective_group(int n, field_theory::finite_field *F, int f_semilinear, int f_basis, int f_init_sims, data_structures_groups::vector_ge *&nice_gens, 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 lift_generators(strong_generators *SG1, strong_generators *SG2, actions::action *A, strong_generators *&SG3, int verbose_level)
a matrix group over a finite field in projective, vector space or affine action
void init_affine_group(int n, field_theory::finite_field *F, int f_semilinear, actions::action *A, int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
void generators_for_the_monomial_group(actions::action *A, matrix_group *Mtx, int verbose_level)
void init_from_data_with_target_go_ascii(actions::action *A, int *data, int nb_elements, int elt_size, const char *ascii_target_go, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
data_structures_groups::vector_ge * gens
void group_order(ring_theory::longinteger_object &go)
std::string problem_label
the poset classification algorithm
void initialize_and_allocate_root_node(poset_classification_control *PC_control, poset_with_group_action *Poset, int depth, int verbose_level)
int trace_set(long int *set, int size, int level, long int *canonical_set, int *Elt_transporter, int verbose_level)
int main(int t0, int schreier_depth, int f_use_invariant_subset_if_available, int f_debug, int verbose_level)
int first_node_at_level(int i)
int nb_orbits_at_level(int level)
std::string & get_problem_label_with_path()
int orbit_length_as_int(int orbit_at_level, int level)
void get_set(int node, long int *set, int &size)
void draw_poset(std::string &fname_base, int depth, int data, graphics::layered_graph_draw_options *LG_Draw_options, 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)
void add_testing_without_group(void(*func)(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, void *data, int verbose_level), void *data, int verbose_level)
description of the problem for delandtsheer_doyen
int mask_test_value[MAX_MASK_TESTS]
int mask_test_what[MAX_MASK_TESTS]
std::string problem_label
poset_classification::poset_classification_control * Pair_search_control
std::string subgroup_gens
int f_search_wrt_subgroup
poset_classification::poset_classification_control * Search_control
int mask_test_who[MAX_MASK_TESTS]
std::string subgroup_order
int mask_test_level[MAX_MASK_TESTS]
search for line transitive point imprimitive linear spaces as described by Delandtsheer and Doyen
void print_mask_test_i(std::ostream &ost, int i)
int check_mask(long int *line, int len, int verbose_level)
int check_conditions(long int *S, int len, int verbose_level)
poset_classification::poset_with_group_action * Poset_search
void show_generators(int verbose_level)
groups::strong_generators * SG
void init(delandtsheer_doyen_description *Descr, int verbose_level)
int check_col_sums(long int *line, int len, int verbose_level)
int check_row_sums(long int *line, int len, int verbose_level)
void create_graph(long int *line0, int len, int verbose_level)
groups::direct_product * P
int find_pair_orbit_by_tracing(int i, int j, int verbose_level)
poset_classification::poset_classification * Gen
groups::matrix_group * M2
void search_singletons(int verbose_level)
poset_classification::poset_classification * Pairs
void early_test_func(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
groups::matrix_group * M1
void compute_orbits_on_pairs(groups::strong_generators *Strong_gens, int verbose_level)
groups::strong_generators * scan_subgroup_generators(int verbose_level)
void write_pair_orbit_file(int verbose_level)
int * row_type_this_or_bigger
ring_theory::longinteger_object go
void get_mask_core_and_singletons(long int *line, int len, int &nb_rows_used, int &nb_cols_used, int &nb_singletons, int verbose_level)
void compute_pair_orbit_table(int verbose_level)
int check_orbit_covering(long int *line, int len, int verbose_level)
poset_classification::poset_with_group_action * Poset_pairs
int * col_type_this_or_bigger
void search_starter(int verbose_level)
field_theory::finite_field * F2
void create_monomial_group(int verbose_level)
delandtsheer_doyen_description * Descr
int find_pair_orbit(int i, int j, int verbose_level)
void create_action(int verbose_level)
field_theory::finite_field * F1
#define Lint_vec_copy(A, B, C)
#define Int_vec_scan(A, B, C)
#define Int_vec_zero(A, B)
#define Lint_vec_print(A, B, C)
#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
groups::direct_product * direct_product_group
groups::matrix_group * matrix_grp