19namespace layer5_applications {
20namespace orthogonal_geometry_applications {
24static void blt_set_classify_print(std::ostream &ost,
int len,
long int *S,
void *data);
26static void blt_set_classify_lifting_prepare_function_new(
exact_cover *EC,
int starter_case,
32static void blt_set_classify_early_test_func_callback(
long int *S,
int len,
33 long int *candidates,
int nb_candidates,
34 long int *good_candidates,
int &nb_good_candidates,
35 void *data,
int verbose_level);
69 cout <<
"blt_set_classify::freeself before A" << endl;
80 cout <<
"blt_set_classify::freeself before gen" << endl;
96 cout <<
"blt_set_classify::freeself done" << endl;
107 int f_v = (verbose_level >= 1);
110 cout <<
"blt_set_classify::init_basic" << endl;
111 cout <<
"blt_set_classify::init_basic "
112 "verbose_level = " << verbose_level << endl;
127 cout <<
"the group must be of orthogonal type" << endl;
136 cout <<
"blt_set_classify::init_basic" << endl;
137 cout <<
"blt_set_classify::init_basic "
144 cout <<
"blt_set_classify::init_basic "
145 "before lex_least_base_in_place" << endl;
149 cout <<
"blt_set_classify::init_basic "
150 "after lex_least_base_in_place" << endl;
153 cout <<
"blt_set_classify::init_group "
154 "computing lex least base done" << endl;
155 cout <<
"blt_set::init_group base: ";
170 cout <<
"blt_set_classify::init_basic q=" <<
q
175 cout <<
"blt_set_classify::init_basic finished" << endl;
184 int f_v = (verbose_level >= 1);
187 cout <<
"blt_set_classify::compute_starter" << endl;
188 cout <<
"blt_set_classify::compute_starter "
189 "verbose_level = " << verbose_level << endl;
199 cout <<
"blt_set_classify::compute_starter before "
200 "Poset->add_testing_without_group" << endl;
203 blt_set_classify_early_test_func_callback,
207 cout <<
"blt_set_classify::compute_starter after "
208 "Poset->add_testing_without_group" << endl;
219 cout <<
"blt_set_classify::compute_starter before gen->compute_orbits_on_subsets" << endl;
228 cout <<
"blt_set_classify::compute_starter after gen->compute_orbits_on_subsets" << endl;
233 cout <<
"blt_set_classify::compute_starter finished" << endl;
238void blt_set_classify::init_group(
int f_semilinear,
int verbose_level)
240 int f_v = (verbose_level >= 1);
241 int f_vv = (verbose_level >= 2);
245 cout <<
"blt_set_classify::init_group" << endl;
249 cout <<
"blt_set_classify::init_group "
250 "before A->init_orthogonal_group" << endl;
261 cout <<
"blt_set_classify::init_group "
262 "after A->init_orthogonal_group" << endl;
263 cout <<
"blt_set::init_group "
264 "degree = " <<
degree << endl;
268 cout <<
"blt_set_classify::init_group "
269 "computing lex least base" << endl;
273 cout <<
"blt_set_classify::init_group "
274 "computing lex least base done" << endl;
275 cout <<
"blt_set::init_group base: ";
286 cout <<
"blt_set_classify::init_group "
287 "degree = " <<
A->
degree << endl;
295 cout <<
"blt_set_classify::init_group "
296 "before test_Orthogonal" << endl;
298 test_Orthogonal(epsilon, n - 1,
q);
304 cout <<
"blt_set_classify::init_group before "
305 "A->Sims->print_all_transversal_elements" << endl;
307 cout <<
"blt_set_classify::init_group after "
308 "A->Sims->print_all_transversal_elements" << endl;
319 cout <<
"blt_set_classify::init_group "
320 "allocating Pts and Candidates" << endl;
324 cout <<
"blt_set_classify::init_group finished" << endl;
328void blt_set_classify::init_orthogonal_hash(
int verbose_level)
330 int f_v = (verbose_level >= 1);
333 cout <<
"blt_set_classify::init_orthogonal_hash" << endl;
340 cout <<
"blt_set_classify::init_orthogonal_hash finished" << endl;
348 int orbit_at_level_r,
int orbit_at_level_m,
349 int level_of_candidates_file,
350 int f_lexorder_test,
int f_eliminate_graphs_if_possible,
353 int f_v = (verbose_level >= 1);
354 int f_vv = (verbose_level >= 2);
355 int f_v3 = (verbose_level >= 3);
360 cout <<
"blt_set_classify::create_graphs" << endl;
361 cout <<
"blt_set_classify::create_graphs "
363 cout <<
"blt_set_classify::create_graphs "
364 "f_lexorder_test=" << f_lexorder_test << endl;
374 string fname_list_of_cases;
378 long int *list_of_cases;
393 fname_list_of_cases.append(
"_list_of_cases");
394 sprintf(str2,
"_%d_%d_%d",
starter_size, orbit_at_level_r, orbit_at_level_m);
395 fname_list_of_cases.append(str2);
396 fname_list_of_cases.append(
".csv");
400 fname_time.append(
"_time");
401 fname_time.append(str2);
402 fname_time.append(
".csv");
412 cout <<
"blt_set_classify::create_graphs counting number of starter in file " << fname << endl;
416 cout <<
"blt_set_classify::create_graphs There are "
417 << nb_orbits <<
" starters" << endl;
420 cout <<
"Something is wrong, nb_orbits is negative" << endl;
430 list_of_cases =
NEW_lint(nb_orbits);
431 for (orbit = 0; orbit < nb_orbits; orbit++) {
432 if ((orbit % orbit_at_level_m) != orbit_at_level_r) {
436 cout <<
"blt_set_classify::create_graphs creating graph associated "
437 "with orbit " << orbit <<
" / " << nb_orbits
443 int nb_vertices = -1;
448 cout <<
"blt_set_classify::create_graphs creating graph associated "
449 "with orbit " << orbit <<
" / " << nb_orbits
450 <<
": before create_graph" << endl;
453 f_lexorder_test, f_eliminate_graphs_if_possible,
456 verbose_level - 1)) {
457 list_of_cases[nb_of_cases++] = orbit;
462 fname.append(
".bin");
463 CG->
save(fname, verbose_level - 2);
468 cout <<
"blt_set_classify::create_graphs creating graph associated "
469 "with orbit " << orbit <<
" / " << nb_orbits
470 <<
": after create_graph" << endl;
479 Time[time_idx * 2 + 0] = orbit;
480 Time[time_idx * 2 + 1] = t1 - t0;
484 if (nb_vertices >= 0) {
485 cout <<
"blt_set_classify::create_graphs creating graph "
486 "associated with orbit " << orbit <<
" / "
487 << nb_orbits <<
" with " << nb_vertices
488 <<
" vertices created" << endl;
491 cout <<
"blt_set_classify::create_graphs creating graph "
492 "associated with orbit " << orbit <<
" / "
493 << nb_orbits <<
" is ruled out" << endl;
499 cout <<
"blt_set_classify::create_graphs writing file "
500 << fname_time << endl;
504 cout <<
"blt_set_classify::create_graphs Written file "
505 << fname_time <<
" of size "
510 list_of_cases, nb_of_cases, 1);
512 cout <<
"blt_set_classify::create_graphs Written file "
513 << fname_list_of_cases <<
" of size "
514 << Fio.
file_size(fname_list_of_cases) << endl;
524 std::string &case_label,
525 std::string &list_of_cases_text,
526 int level_of_candidates_file,
527 int f_lexorder_test,
int f_eliminate_graphs_if_possible,
530 int f_v = (verbose_level >= 1);
531 int f_vv = (verbose_level >= 2);
532 int f_v3 = (verbose_level >= 3);
536 cout <<
"blt_set_classify::create_graphs_list_of_cases" << endl;
537 cout <<
"blt_set_classify::create_graphs_list_of_cases "
538 "case_label = " << case_label << endl;
544 int *list_of_cases = NULL;
548 Int_vec_scan(list_of_cases_text, list_of_cases, nb_of_cases);
550 cout <<
"blt_set_classify::create_graphs_list_of_cases "
551 "nb_of_cases = " << nb_of_cases << endl;
552 cout <<
"blt_set_classify::create_graphs_list_of_cases "
554 cout <<
"blt_set_classify::create_graphs_list_of_cases "
555 "f_lexorder_test=" << f_lexorder_test << endl;
560 string fname_list_of_cases;
563 long int *list_of_cases_created;
564 int nb_of_cases_created;
574 sprintf(str,
"_list_of_cases.txt");
576 fname_list_of_cases.append(case_label);
577 fname_list_of_cases.append(str);
582 cout <<
"blt_set_classify::create_graphs_list_of_cases "
583 "There are " << nb_orbits <<
" starters" << endl;
586 cout <<
"Something is wrong, nb_orbits is negative" << endl;
587 cout <<
"fname = " << fname << endl;
592 nb_of_cases_created = 0;
593 list_of_cases_created =
NEW_lint(nb_orbits);
594 for (c = 0; c < nb_of_cases; c++) {
595 orbit = list_of_cases[c];
597 cout <<
"blt_set_classify::create_graphs_list_of_cases case "
598 << c <<
" / " << nb_of_cases <<
" creating graph "
599 "associated with orbit " << orbit <<
" / "
600 << nb_orbits <<
":" << endl;
605 int nb_vertices = -1;
609 f_lexorder_test, f_eliminate_graphs_if_possible,
612 verbose_level - 2)) {
613 list_of_cases_created[nb_of_cases_created++] = orbit;
619 fname.append(
".bin");
621 CG->
save(fname, verbose_level - 2);
628 cout <<
"before FREE_OBJECT(CG)" << endl;
630 cout <<
"after FREE_OBJECT(CG)" << endl;
633 if (nb_vertices >= 0) {
634 cout <<
"blt_set_classify::create_graphs_list_of_cases "
635 "case " << c <<
" / " << nb_of_cases
636 <<
" creating graph associated with orbit "
637 << orbit <<
" / " << nb_orbits <<
" with "
638 << nb_vertices <<
" vertices created" << endl;
641 cout <<
"blt_set_classify::create_graphs_list_of_cases "
642 "case " << c <<
" / " << nb_of_cases
643 <<
" creating graph associated with orbit "
644 << orbit <<
" / " << nb_orbits
645 <<
" is ruled out" << endl;
651 list_of_cases_created, nb_of_cases_created,
654 cout <<
"blt_set_classify::create_graphs_list_of_cases "
655 "Written file " << fname_list_of_cases
656 <<
" of size " << Fio.
file_size(fname_list_of_cases) << endl;
659 cout <<
"blt_set_classify::create_graphs_list_of_cases "
660 "we created " << nb_of_cases_created
661 <<
" / " << nb_of_cases <<
" cases" << endl;
671 int orbit_at_level,
int level_of_candidates_file,
672 int f_lexorder_test,
int f_eliminate_graphs_if_possible,
678 int f_v = (verbose_level >= 1);
679 int f_vv = (verbose_level >= 2);
680 int f_v3 = (verbose_level >= 3);
684 cout <<
"blt_set_classify::create_graph" << endl;
685 cout <<
"blt_set_classify::create_graph "
686 "f_lexorder_test=" << f_lexorder_test << endl;
687 cout <<
"blt_set_classify::create_graph "
688 "orbit_at_level=" << orbit_at_level << endl;
689 cout <<
"blt_set_classify::create_graph "
690 "level_of_candidates_file="
691 << level_of_candidates_file << endl;
710 cout <<
"blt_set_classify::create_graph before R->init_from_file" << endl;
715 blt_set_classify_early_test_func_callback,
719 cout <<
"blt_set_classify::create_graph after R->init_from_file" << endl;
725 cout <<
"blt_set_classify::create_graph Case "
726 << orbit_at_level <<
" / " << R->
nb_cases
727 <<
" Read starter : ";
735 cout <<
"blt_set_classify::create_graph Case " << orbit_at_level
736 <<
" / " << R->
nb_cases <<
" max_starter="
737 << max_starter << endl;
738 cout <<
"blt_set_classify::create_graph Case " << orbit_at_level
739 <<
" / " << R->
nb_cases <<
" Group order="
741 cout <<
"blt_set_classify::create_graph Case " << orbit_at_level
742 <<
" / " << R->
nb_cases <<
" nb_candidates="
749 if (f_lexorder_test) {
753 cout <<
"blt_set_classify::create_graph Case " << orbit_at_level
755 <<
" Before lexorder_test" << endl;
761 cout <<
"blt_set_classify::create_graph "
762 "After lexorder_test nb_candidates="
763 << nb_candidates2 <<
" eliminated "
765 <<
" candidates" << endl;
777 cout <<
"blt_set_classify::create_graph "
778 "Case " << orbit_at_level <<
" / "
779 << R->
nb_cases <<
" nb_candidates < nb, "
780 "the case is eliminated" << endl;
792 cout <<
"blt_set_classify::create_graph before "
793 "Blt_set_domain->create_graph" << endl;
799 f_eliminate_graphs_if_possible,
803 cout <<
"blt_set_classify::create_graph after "
804 "Blt_set_domain->create_graph" << endl;
815 long int *candidates,
int nb_candidates,
821 int f_v = (verbose_level >= 1);
822 int f_vv = (verbose_level >= 2);
827 cout <<
"blt_set_classify::lifting_prepare_function_new "
828 "nb_candidates=" << nb_candidates << endl;
834 int nb_free_points, nb_needed;
835 long int *free_point_list;
845 cout <<
"blt_set_classify::lifting_prepare_function "
846 "nb_needed=" << nb_needed << endl;
847 cout <<
"blt_set_classify::lifting_prepare_function "
848 "nb_candidates=" << nb_candidates << endl;
852 cout <<
"blt_set_classify::lifting_prepare_function "
853 "before find_free_points" << endl;
857 free_point_list, point_idx, nb_free_points,
861 cout <<
"blt_set_classify::lifting_prepare_function "
862 "There are " << nb_free_points <<
" free points" << endl;
867 col_labels =
NEW_lint(nb_candidates);
873 int nb_rows = nb_free_points;
874 int nb_cols = nb_candidates;
878 cout <<
"blt_set_classify::lifting_prepare_function_new candidates: ";
880 cout <<
" (nb_candidates=" << nb_candidates <<
")" << endl;
889 nb_cols_before = nb_cols;
893 cout <<
"blt_set_classify::lifting_prepare_function_new "
894 "after lexorder test nb_candidates before: "
895 << nb_cols_before <<
" reduced to " << nb_cols
896 <<
" (deleted " << nb_cols_before - nb_cols
902 cout <<
"blt_set_classify::lifting_prepare_function_new "
903 "after lexorder test" << endl;
904 cout <<
"blt_set_classify::lifting_prepare_function_new "
905 "nb_cols=" << nb_cols << endl;
910 Pts1 =
NEW_int(nb_free_points * 5);
912 for (i = 0; i < nb_free_points; i++) {
917 for (i = 0; i < nb_cols; i++) {
926 Dio->
open(nb_rows, nb_cols);
927 Dio->
sum = nb_needed;
929 for (i = 0; i < nb_rows; i++) {
936 cout <<
"blt_set_classify::lifting_prepare_function_new "
937 "initializing Inc" << endl;
941 for (i = 0; i < nb_free_points; i++) {
942 for (j = 0; j < nb_cols; j++) {
958 cout <<
"blt_set_classify::lifting_prepare_function_new "
959 "nb_free_points=" << nb_free_points
960 <<
" nb_candidates=" << nb_candidates << endl;
964 cout <<
"blt_set_classify::lifting_prepare_function_new "
972 int f_v = (verbose_level >= 1);
975 cout <<
"blt_set_classify::report_from_iso" << endl;
981 cout <<
"blt_set_classify::report_from_iso "
982 "before Iso.get_orbit_transversal" << endl;
988 cout <<
"blt_set_classify::report_from_iso "
989 "after Iso.get_orbit_transversal" << endl;
997 cout <<
"blt_set_classify::report_from_iso done" << endl;
1005 int f_v = (verbose_level >= 1);
1009 cout <<
"blt_set_classify::report" << endl;
1013 fname.append(
"_report.tex");
1016 ofstream ost(fname);
1018 report2(ost, T, verbose_level);
1024 cout <<
"Written file " << fname <<
" of size "
1031 cout <<
"blt_set_classify::report done" << endl;
1037void blt_set_classify::subset_orbits(
isomorph &Iso,
int verbose_level)
1039 int f_v = (verbose_level >= 1);
1043 cout <<
"blt_set_classify::subset_orbits" << endl;
1046 sprintf(fname,
"report_BLT_%d_subset_orbits.tex",
q);
1060 for (i = 0; i <= Iso.
level + 1; i++) {
1061 cout <<
"gen->first_poset_orbit_node_at_level[" << i
1062 <<
"]=" << Iso.
gen->first_poset_orbit_node_at_level[i]
1075 const char *author =
"Orbiter";
1077 int f_landscape =
FALSE;
1079 int f_enlarged_page =
TRUE;
1080 int f_pagenumbers =
TRUE;
1082 sprintf(title,
"BLT-sets of Q$(4,%d)$",
q);
1083 cout <<
"Writing file " << fname <<
" with "
1084 << Iso.
Reps->
count <<
" BLT-sets:" << endl;
1085 latex_head(f, f_book, f_title,
1094 f <<
"\\section{Summary}" << endl << endl;
1095 f <<
"There are " << Iso.
Reps->
count <<
" BLT-sets." << endl << endl;
1102 int h, rep, first, id;
1103 longinteger_object go;
1116 f <<
"\\section{Isomorphism Type " << h <<
"}" << endl;
1117 f <<
"\\bigskip" << endl;
1119 int_vec_print(cout, data, Iso.
size);
1127 cout <<
"blt_set_classify::subset_orbits computing induced "
1128 "action on the set (in data)" << endl;
1132 cout <<
"data after induced_action_on_set:" << endl;
1133 int_vec_print(cout, data, Iso.
size);
1136 longinteger_object go1;
1139 cout <<
"action " << Iso.
AA->
label <<
" computed, group "
1140 "order is " << go1 << endl;
1142 f <<
"Order of the group that is induced on the object is ";
1144 go1.print_not_scientific(f);
1145 f <<
"$\\\\" << endl;
1168 Iso.
level, orbit_reps, nb_orbits, verbose_level);
1172 cout <<
"Orbit reps: nb_orbits=" << nb_orbits << endl;
1173 int_matrix_print(orbit_reps, nb_orbits, Iso.
level);
1175 f <<
"Number of orbits on $" << Iso.
level
1176 <<
"$-sets is " << nb_orbits <<
".\\\\" << endl;
1178 int *rearranged_set;
1182 int f_implicit_fusion =
FALSE;
1183 int cnt_special_orbits;
1190 cnt_special_orbits = 0;
1191 for (u = 0; u < nb_orbits; u++) {
1192 cout <<
"orbit " << u <<
":" << endl;
1199 rearrange_subset(Iso.
size, Iso.
level, data,
1200 orbit_reps + u * Iso.
level, rearranged_set,
1206 int f_failure_to_find_point, f_found;
1209 case_nb = Iso.
trace_set(rearranged_set, transporter,
1210 f_implicit_fusion, f_failure_to_find_point,
1215 rearranged_set, case_nb, idx,
1219 f_implicit_fusion, orbit_no0,
1220 f_failure_to_find_point, 3 );
1223 cout <<
"case_nb=" << case_nb << endl;
1224 if (f_failure_to_find_point) {
1225 cout <<
"blt_set_classify::subset_orbits "
1226 "f_failure_to_find_point" << endl;
1231 cout <<
"blt_set_classify::subset_orbits not found" << endl;
1235 cnt_special_orbits++;
1238 f <<
"Number of special orbits on $" << Iso.
level
1239 <<
"$-sets is " << cnt_special_orbits <<
".\\\\" << endl;
1258 cout <<
"Written file " << fname <<
" of size "
1259 << file_size(fname) << endl;
1261 cout <<
"blt_set::subset_orbits done" << endl;
1269 int f_v = (verbose_level >= 1);
1272 cout <<
"blt_set_classify::report2" << endl;
1278 const char *author =
"Orbiter";
1280 int f_landscape =
FALSE;
1282 int f_enlarged_page =
TRUE;
1283 int f_pagenumbers =
TRUE;
1286 sprintf(title,
"BLT-sets of ${\\cal Q}(4,%d)$",
q);
1287 cout <<
"number of BLT-sets is " << T->
nb_orbits << endl;
1289 L.
head(ost, f_book, f_title,
1310 ost <<
"\\section{Summary}" << endl << endl;
1312 <<
" isomorphism types of BLT-sets." << endl << endl;
1323 cout <<
"Computing intersection and plane invariants" << endl;
1334 cout <<
"blt_set_classify::report2 looking at "
1335 "representative h=" << h << endl;
1343 Inv[h].
compute(verbose_level);
1348 cout <<
"Computing intersection and plane invariants done" << endl;
1352 ost <<
"\\section{The BLT-Sets}" << endl << endl;
1359 ost <<
"\\subsection{Isomorphism Type " << h <<
"}" << endl;
1360 ost <<
"\\bigskip" << endl;
1365 ost <<
"Stabilizer has order $";
1367 ost <<
"$\\\\" << endl;
1373 Inv[h].
latex(ost, verbose_level);
1384 cout <<
"blt_set_classify::report computing induced action "
1385 "on the set (in data)" << endl;
1389 longinteger_object go1;
1392 cout <<
"action " << Iso.
AA->
label <<
" computed, "
1393 "group order is " << go1 << endl;
1395 f <<
"Order of the group that is induced on the object is ";
1397 go1.print_not_scientific(f);
1398 f <<
"$\\\\" << endl;
1404 f <<
"Number of ancestors on $" << Iso.
level <<
"$-sets is "
1405 << nb_ancestors <<
".\\\\" << endl;
1423 Iso.
level, orbit_reps, nb_orbits, verbose_level);
1426 f <<
"Number of orbits on $" << Iso.
level <<
"$-sets is "
1427 << nb_orbits <<
".\\\\" << endl;
1437 f <<
"With " << Orb.nb_orbits
1438 <<
" orbits on the object\\\\" << endl;
1442 C_ol.init(Orb.orbit_len, Orb.nb_orbits,
FALSE, 0);
1444 f <<
"Orbit lengths: $";
1446 C_ol.print_naked_tex(f,
FALSE );
1447 f <<
"$ \\\\" << endl;
1457 longinteger_object so;
1461 f <<
"Stabilizer of order ";
1462 so.print_not_scientific(f);
1463 f <<
" is generated by:\\\\" << endl;
1473 f <<
"$$ g_{" << i + 1 <<
"}=" << endl;
1475 f <<
"$$" << endl <<
"with " << n
1476 <<
" fixed points" << endl;
1493 string label_of_structure_plural;
1495 label_of_structure_plural.assign(
"BLT-Sets");
1499 label_of_structure_plural, ost,
1515static void blt_set_classify_print(ostream &ost,
int len,
long int *S,
void *data)
1524static void blt_set_classify_lifting_prepare_function_new(
1526 long int *candidates,
int nb_candidates,
1532 int f_v = (verbose_level >= 1);
1533 blt_set_classify *B = (blt_set_classify *) EC->
user_data;
1536 cout <<
"blt_set_classify_lifting_prepare_function_new "
1537 "nb_candidates=" << nb_candidates << endl;
1540 B->lifting_prepare_function_new(EC, starter_case,
1541 candidates, nb_candidates, Strong_gens,
1542 Dio, col_labels, f_ruled_out,
1547 cout <<
"blt_set_classify_lifting_prepare_function_new "
1548 "after lifting_prepare_function_new" << endl;
1552 cout <<
"blt_set_classify_lifting_prepare_function_new "
1553 "nb_rows=" << Dio->
m <<
" nb_cols=" << Dio->
n << endl;
1557 cout <<
"blt_set_classify_lifting_prepare_function_new "
1564static void blt_set_classify_early_test_func_callback(
long int *S,
int len,
1565 long int *candidates,
int nb_candidates,
1566 long int *good_candidates,
int &nb_good_candidates,
1567 void *data,
int verbose_level)
1569 blt_set_classify *BLT = (blt_set_classify *) data;
1570 int f_v = (verbose_level >= 1);
1573 cout <<
"blt_set_early_test_func for set ";
1577 BLT->Blt_set_domain->early_test_func(S, len,
1578 candidates, nb_candidates,
1579 good_candidates, nb_good_candidates,
1582 cout <<
"blt_set_early_test_func done" << endl;
1587static void blt_set_classify_callback_report(
isomorph *Iso,
void *data,
int verbose_level)
1589 blt_set_classify *Gen = (blt_set_classify *) data;
void zero(long int *v, long int len)
a graph with a vertex coloring
void save(std::string &fname, int verbose_level)
a collection of functions related to file io
int count_number_of_orbits_in_file(std::string &fname, int verbose_level)
void lint_matrix_write_csv(std::string &fname, long int *M, int m, int n)
long int file_size(std::string &fname)
void write_set_to_file(std::string &fname, long int *the_set, int set_size, int verbose_level)
interface to create latex output files
void head(std::ostream &ost, int f_book, int f_title, const char *title, const char *author, int f_toc, int f_landscape, int f_12pt, int f_enlarged_page, int f_pagenumbers, const char *extras_for_preamble)
void foot(std::ostream &ost)
data_structures::lint_vec * Lint_vec
interface to system functions
void init(orthogonal *O, int verbose_level)
void find_free_points(long int *S, int S_sz, long int *&free_pts, int *&free_pt_idx, int &nb_free_pts, int verbose_level)
void print(std::ostream &ost, long int *S, int len)
int create_graph(int case_number, int nb_cases_total, long int *Starter_set, int starter_size, long int *candidates, int nb_candidates, int f_eliminate_graphs_if_possible, graph_theory::colored_graph *&CG, int verbose_level)
invariants of a BLT-sets in Q(4,q)
void latex(std::ostream &ost, int verbose_level)
void init(blt_set_domain *D, long int *the_set, int verbose_level)
void compute(int verbose_level)
an orthogonal geometry O^epsilon(n,q)
field_theory::finite_field * F
void unrank_point(int *v, int stride, long int rk, int verbose_level)
int evaluate_bilinear_form(int *u, int *v, int stride)
a class to represent arbitrary precision integers
std::ostream & print_not_scientific(std::ostream &ost)
diophantine systems of equations (i.e., linear systems over the integers)
void fill_coefficient_matrix_with(int a)
diophant_equation_type * type
a permutation group in a fixed action.
void element_print_latex(void *elt, std::ostream &ost)
void compute_all_point_orbits(groups::schreier &S, data_structures_groups::vector_ge &gens, int verbose_level)
void lex_least_base_in_place(int verbose_level)
symmetry_group_type type_G
void init_orthogonal_group_with_O(orthogonal_geometry::orthogonal *O, int f_on_points, int f_on_lines, int f_on_points_and_lines, int f_semilinear, int f_basis, int verbose_level)
void element_one(void *elt, int verbose_level)
int is_semilinear_matrix_group()
void lexorder_test(long int *set, int set_sz, int &set_sz_after_test, data_structures_groups::vector_ge *gens, int max_starter, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
int find_fixed_points(void *elt, int *fixed_points, int verbose_level)
to hold one orbit after reading files from Orbiters poset classification
void init_from_file(actions::action *A, std::string &prefix, int level, int orbit_at_level, int level_of_candidates_file, void(*early_test_func_callback)(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 *early_test_func_callback_data, int verbose_level)
ring_theory::longinteger_object * stab_go
groups::strong_generators * Strong_gens
a set of orbits using a vector of orbit representatives and stabilizers
set_and_stabilizer * Reps
void export_data_in_source_code_inside_tex(std::string &prefix, std::string &label_of_structure, std::ostream &ost, int verbose_level)
groups::strong_generators * Strong_gens
void group_order(ring_theory::longinteger_object &go)
void group_order(ring_theory::longinteger_object &go)
data_structures_groups::vector_ge gens
void print_all_transversal_elements()
a strong generating set for a permutation group with respect to a fixed action
void print_generators_tex()
void init_from_sims(groups::sims *S, int verbose_level)
void print_generators_for_make_element(std::ostream &ost)
data_structures_groups::vector_ge * gens
induced action on the orthogonal geometry
orthogonal_geometry::orthogonal * O
exact cover problems arising with the lifting of combinatorial objects
void lexorder_test(long int *live_blocks2, int &nb_live_blocks2, data_structures_groups::vector_ge *stab_gens, int verbose_level)
classification of combinatorial objects using subobjects
data_structures_groups::union_find * UF
void iso_test_init2(int verbose_level)
int find_extension_easy_new(long int *set, int case_nb, int &idx, int verbose_level)
int trace_set(long int *canonical_set, int *transporter, int f_implicit_fusion, int &f_failure_to_find_point, int verbose_level)
void setup_and_open_solution_database(int verbose_level)
int identify_solution_relaxed(long int *set, int *transporter, int f_implicit_fusion, int &orbit_no, int &f_failure_to_find_point, int verbose_level)
void load_solution(int id, long int *data)
void induced_action_on_set(groups::sims *S, long int *set, int verbose_level)
poset_classification::poset_classification * gen
void load_table_of_solutions(int verbose_level)
void get_orbit_transversal(data_structures_groups::orbit_transversal *&T, int verbose_level)
void close_solution_database(int verbose_level)
to control the behavior of the poset classification algorithm
the poset classification algorithm
void compute_orbits_on_subsets(int target_depth, poset_classification_control *PC_control, poset_with_group_action *Poset, int verbose_level)
void recreate_schreier_vectors_up_to_level(int lvl, int verbose_level)
a poset with a group action on it
void * print_function_data
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)
void orbits_on_k_sets(poset_classification_control *Control, int k, long int *&orbit_reps, int &nb_orbits, int verbose_level)
void(* print_function)(std::ostream &ost, int len, long int *S, void *data)
classification of BLT-sets
poset_classification::poset_classification * gen
void create_graphs(int orbit_at_level_r, int orbit_at_level_m, int level_of_candidates_file, int f_lexorder_test, int f_eliminate_graphs_if_possible, int verbose_level)
groups::strong_generators * Strong_gens
void compute_starter(poset_classification::poset_classification_control *Control, int verbose_level)
void report(data_structures_groups::orbit_transversal *T, int verbose_level)
void create_graphs_list_of_cases(std::string &case_label, std::string &list_of_cases_text, int level_of_candidates_file, int f_lexorder_test, int f_eliminate_graphs_if_possible, int verbose_level)
poset_classification::poset_classification_control * Control
void report_from_iso(isomorph &Iso, int verbose_level)
void report2(std::ostream &ost, data_structures_groups::orbit_transversal *T, int verbose_level)
void init_basic(actions::action *A, groups::strong_generators *Strong_gens, int starter_size, int verbose_level)
void lifting_prepare_function_new(exact_cover *E, int starter_case, long int *candidates, int nb_candidates, groups::strong_generators *Strong_gens, solvers::diophant *&Dio, long int *&col_labels, int &f_ruled_out, int verbose_level)
poset_classification::poset_with_group_action * Poset
layer1_foundations::orthogonal_geometry::blt_set_domain * Blt_set_domain
int create_graph(int orbit_at_level, int level_of_candidates_file, int f_lexorder_test, int f_eliminate_graphs_if_possible, int &nb_vertices, graph_theory::colored_graph *&CG, int verbose_level)
a BLT-set together with its stabilizer
void init_set(actions::action *A, orthogonal_geometry::blt_set_domain *Blt_set_domain, long int *set, groups::strong_generators *Aut_gens, int verbose_level)
void print_automorphism_group(std::ostream &ost)
#define Lint_vec_copy(A, B, C)
#define Int_vec_scan(A, B, C)
#define Lint_vec_print(A, B, C)
#define NEW_OBJECTS(type, n)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects
induced_actions::action_on_orthogonal * AO