14namespace layer1_foundations {
15namespace data_structures {
17static int set_of_sets_compare_func(
void *data,
int i,
int j,
void *extra_data);
18static void set_of_sets_swap_func(
void *data,
int i,
int j,
void *extra_data);
68 int nb_sets,
int verbose_level)
70 int f_v = (verbose_level >= 1);
74 cout <<
"set_of_sets::init_simple nb_sets=" <<
nb_sets
88 int n,
int *Adj,
int verbose_level)
90 int f_v = (verbose_level >= 1);
94 cout <<
"set_of_sets::init_from_adjacency_matrix "
98 for (i = 0; i < n; i++) {
99 for (j = 0; j < n; j++) {
100 if (Adj[i * n + j]) {
105 for (i = 0; i < n; i++) {
109 for (i = 0; i < n; i++) {
110 for (j = 0; j < n; j++) {
111 if (Adj[i * n + j]) {
120 int nb_sets,
long int **Pts,
long int *Sz,
int verbose_level)
122 int f_v = (verbose_level >= 1);
126 cout <<
"set_of_sets::init nb_sets=" <<
nb_sets
132 for (i = 0; i <
nb_sets; i++) {
138 int nb_sets,
long int **Pts,
int *Sz,
int verbose_level)
140 int f_v = (verbose_level >= 1);
144 cout <<
"set_of_sets::init nb_sets=" <<
nb_sets
151 for (i = 0; i <
nb_sets; i++) {
157 for (i = 0; i <
nb_sets; i++) {
164 int nb_sets,
long int *Sz,
int verbose_level)
166 int f_v = (verbose_level >= 1);
170 cout <<
"set_of_sets::init_basic nb_sets=" <<
nb_sets
177 for (i = 0; i <
nb_sets; i++) {
180 for (i = 0; i <
nb_sets; i++) {
183 cout <<
"set_of_sets::init_basic allocating set " << i
184 <<
" of size " << Sz[i] << endl;
191 int nb_sets,
int *Sz,
int verbose_level)
199 for (i = 0; i <
nb_sets; i++) {
209 int underlying_set_size,
210 int nb_sets,
int constant_size,
int verbose_level)
212 int f_v = (verbose_level >= 1);
216 cout <<
"set_of_sets::init_basic_constant_size "
224 for (i = 0; i <
nb_sets; i++) {
227 for (i = 0; i <
nb_sets; i++) {
230 cout <<
"set_of_sets::init_basic_constant_size "
231 "allocating set " << i <<
" of size "
232 << constant_size << endl;
241 std::string &fname,
int verbose_level)
243 int f_v = (verbose_level >= 1);
247 cout <<
"set_of_sets::init_from_file fname=" << fname << endl;
251 cout <<
"set_of_sets::init_from_file "
252 "the file is a csv file" << endl;
258 cout <<
"set_of_sets::init_from_file "
259 "the file is an inc file" << endl;
265 std::vector<std::vector<int> > Geos;
269 cout <<
"set_of_sets::init_from_file "
270 "the file contains " << Geos.size() <<
" incidence geometries" << endl;
271 cout <<
"set_of_sets::init_from_file "
272 "m=" << m <<
" n=" << n <<
" nb_flags=" << nb_flags << endl;
282 for (h = 0; h < Geos.size(); h++) {
283 for (f = 0; f < nb_flags; f++) {
284 Sets[h][f] = Geos[h][f];
291 cout <<
"set_of_sets::init_from_file "
292 "assuming the file is an orbiter file" << endl;
297 cout <<
"set_of_sets::init_from_file done" << endl;
302 std::string &fname,
int verbose_level)
304 int f_v = (verbose_level >= 1);
308 cout <<
"set_of_sets::init_from_csv_file fname=" << fname << endl;
318 cout <<
"set_of_sets::init_from_csv_file "
319 "m=" << m <<
" n=" << n << endl;
327 for (i = 0; i < m; i++) {
334 cout <<
"set_of_sets::init_from_csv_file done" << endl;
339 std::string &fname,
int verbose_level)
341 int f_v = (verbose_level >= 1);
346 cout <<
"set_of_sets::init_from_orbiter_file "
347 "fname=" << fname << endl;
351 cout <<
"set_of_sets::init_from_orbiter_file "
357 for (i = 0; i <
nb_sets; i++) {
371 int len, nb_sol, a, j;
383 fp.getline(buf, sz + 1,
'\n');
384 if (strlen(buf) == 0) {
385 cout <<
"set_of_sets::init_from_orbiter_file "
386 "reading an empty line" << endl;
398 cout <<
"set_of_sets::init_from_orbiter_file "
399 "found a complete file with " << nb_sol
400 <<
" solutions" << endl;
406 cout <<
"set_of_sets::init_from_orbiter_file "
407 "reading a set of size " << len << endl;
412 for (j = 0; j < len; j++) {
419 cout <<
"set_of_sets::init_from_orbiter_file "
420 "nb_sol != nb_sets" << endl;
427 cout <<
"set_of_sets::init_from_orbiter_file "
433 int *set,
int sz,
int verbose_level)
436 int f_v = (verbose_level >= 1);
440 cout <<
"set_of_sets::init_set" << endl;
442 if (
Sets[idx_of_set]) {
443 cout <<
"set_of_sets::init_set Sets[idx_of_set] "
444 "is allocated" << endl;
449 for (j = 0; j < sz; j++) {
450 Sets[idx_of_set][j] = set[j];
454 cout <<
"set_of_sets::init_set done" << endl;
459 int n,
int verbose_level)
461 int f_v = (verbose_level >= 1);
464 cout <<
"set_of_sets::init_cycle_structure" << endl;
466 int *have_seen = NULL;
467 long int *orbit_length = NULL;
468 long int *orbit_length2 = NULL;
471 int i, l, l1, first, next, len, c;
474 cout <<
"set_of_sets::init_cycle_structure n=" << n << endl;
495 cout <<
"set_of_sets::init_cycle_structure cyle "
496 "starting with " << first << endl;
497 cout <<
"l1 = " << l1 <<
" >= n" << endl;
500 have_seen[l1] =
TRUE;
503 cout <<
"set_of_sets::init_cycle_structure next = "
504 << next <<
" >= n = " << n << endl;
511 if (have_seen[next]) {
512 cout <<
"set_of_sets::init_cycle_structure "
513 "have_seen[next]" << endl;
514 cout <<
"first=" << first << endl;
515 cout <<
"len=" << len << endl;
516 cout <<
"l1=" << l1 << endl;
517 cout <<
"next=" << next << endl;
518 for (i = 0; i < n; i++) {
519 cout << i <<
" : " << perm[i] << endl;
529 orbit_length[nb_orbits++] = len;
549 cout <<
"set_of_sets::init_cycle_structure we found "
550 "the following cycle structure:";
556 nb_orbits, orbit_length, 0 );
574 cout <<
"set_of_sets::init_cycle_structure cyle "
575 "starting with " << first << endl;
576 cout <<
"l1 = " << l1 <<
" >= n" << endl;
579 have_seen[l1] =
TRUE;
582 cout <<
"set_of_sets::init_cycle_structure next = "
583 << next <<
" >= n = " << n << endl;
590 if (have_seen[next]) {
591 cout <<
"set_of_sets::init_cycle_structure "
592 "have_seen[next]" << endl;
593 cout <<
"first=" << first << endl;
594 cout <<
"len=" << len << endl;
595 cout <<
"l1=" << l1 << endl;
596 cout <<
"next=" << next << endl;
597 for (i = 0; i < n; i++) {
598 cout << i <<
" : " << perm[i] << endl;
608 orbit_length2[nb_orbits2] = len;
609 if (orbit_length2[nb_orbits2] != orbit_length[nb_orbits2]) {
610 cout <<
"set_of_sets::init_cycle_structure "
611 "orbit_length2[nb_orbits2] != "
612 "orbit_length[nb_orbits2]" << endl;
620 Sets[nb_orbits2][c++] = l1;
627 if (c != orbit_length2[nb_orbits2]) {
628 cout <<
"set_of_sets::init_cycle_structure c != "
629 "orbit_length2[nb_orbits2]" << endl;
636 if (nb_orbits2 != nb_orbits) {
637 cout <<
"set_of_sets::init_cycle_structure "
638 "nb_orbits2 != nb_orbits" << endl;
646 cout <<
"set_of_sets::init_cycle_structure done" << endl;
655 for (i = 0; i <
nb_sets; i++) {
676 for (i = 0; i <
nb_sets; i++) {
689 cout <<
"set of sets with " <<
nb_sets <<
" sets :" << endl;
690 for (i = 0; i <
nb_sets; i++) {
691 cout <<
"set " << i <<
" has size " <<
Set_size[i] <<
" : ";
695 cout <<
"end set of sets" << endl;
704 for (i = 0; i <
nb_sets; i++) {
705 ost <<
"Set " << i <<
" has size " <<
Set_size[i] <<
" : ";
707 ost <<
"\\\\" << endl;
718 ost <<
"\\noindent ";
719 for (i = 0; i <
nb_sets; i++) {
723 ost <<
"\\\\" << endl;
735 ost <<
"\\noindent ";
736 for (h = 0; h < nb_sel; h++) {
741 ost <<
"\\\\" << endl;
750 int f_v = (verbose_level >= 1);
754 cout <<
"set_of_sets::dualize" << endl;
760 for (i = 0; i <
nb_sets; i++) {
769 cout <<
"set_of_sets::dualize done" << endl;
776 int f_v = (verbose_level >= 1);
781 cout <<
"set_of_sets::remove_sets_of_given_size" << endl;
784 for (i = 0; i <
nb_sets; i++) {
792 for (i = 0; i <
nb_sets; i++) {
804 cout <<
"set_of_sets::remove_sets_of_given_size "
813 int f_v = (verbose_level >= 1);
816 int f_second =
FALSE;
817 int f, m, nb_big_sets, i, ii, j;
820 cout <<
"set_of_sets::extract_largest_sets" << endl;
824 cout <<
"set_of_sets::extract_largest_sets set sizes: ";
833 for (i = 0; i < nb_big_sets; i++) {
838 for (j = 0; j < m; j++) {
846 int *&intersection_type,
int &highest_intersection_number,
847 int *&intersection_matrix,
int &nb_big_sets,
850 int f_v = (verbose_level >= 1);
853 int f_second =
FALSE;
854 int f, l, a, i, ii, u, j;
857 cout <<
"set_of_sets::intersection_matrix" << endl;
861 cout <<
"set_of_sets::intersection_matrix "
862 "plane-intersection type: ";
867 cout <<
"The intersection type is (";
869 cout <<
")" << endl << endl;
873 intersection_type =
NEW_int(highest_intersection_number + 1);
874 for (i = 0; i <= highest_intersection_number; i++) {
875 intersection_type[i] = 0;
882 intersection_type[a] = l;
887 int *Incma, *Incma_t, *IIt, *ItI;
892 ItI =
NEW_int(nb_big_sets * nb_big_sets);
898 for (i = 0; i < nb_big_sets; i++) {
900 for (j = 0; j <
Set_size[ii]; j++) {
902 Incma[a * nb_big_sets + i] = 1;
906 cout <<
"Incidence matrix:" << endl;
913 for (u = 0; u < nb_big_sets; u++) {
914 a += Incma[i * nb_big_sets + u] *
921 cout <<
"I * I^\\top = " << endl;
926 for (i = 0; i < nb_big_sets; i++) {
927 for (j = 0; j < nb_big_sets; j++) {
930 a += Incma[u * nb_big_sets + i] *
931 Incma[u * nb_big_sets + j];
933 ItI[i * nb_big_sets + j] = a;
937 cout <<
"I^\\top * I = " << endl;
939 nb_big_sets, nb_big_sets, nb_big_sets, 3);
943 for (i = 0; i < nb_big_sets; i++) {
944 for (j = 0; j < nb_big_sets; j++) {
946 ItI[i * nb_big_sets + j];
955 cout <<
"set_of_sets::intersection_matrix done" << endl;
960 int *&Inc,
int &m,
int &n,
int verbose_level)
962 int f_v = (verbose_level >= 1);
966 cout <<
"set_of_sets::compute_and_print_tdo_row_scheme" << endl;
972 for (j = 0; j <
nb_sets; j++) {
981 std::ostream &file,
int verbose_level)
983 int f_v = (verbose_level >= 1);
992 cout <<
"set_of_sets::compute_and_print_tdo_row_scheme" << endl;
1002 for (i = 0; i <
nb_sets; i++) {
1003 for (j = 0; j <
Set_size[i]; j++) {
1017 Stack->
allocate(set_size + nb_blocks, 0 );
1032 cout <<
"set_of_sets::compute_and_print_tdo_row_scheme done" << endl;
1037 std::ostream &file,
int verbose_level)
1039 int f_v = (verbose_level >= 1);
1044 int depth = INT_MAX;
1048 cout <<
"set_of_sets::compute_and_print_tdo_col_scheme" << endl;
1059 for (i = 0; i <
nb_sets; i++) {
1060 for (j = 0; j <
Set_size[i]; j++) {
1073 Stack->
allocate(set_size + nb_blocks, 0 );
1088 cout <<
"set_of_sets::compute_and_print_tdo_col_scheme done" << endl;
1095 int f_v = (verbose_level >= 1);
1100 cout <<
"set_of_sets::init_decomposition" << endl;
1107 nb_sets, Inc, verbose_level - 1);
1112 cout <<
"set_of_sets::init_decomposition done" << endl;
1119 int f_v = (verbose_level >= 1);
1127 cout <<
"set_of_sets::compute_tdo_decomposition" << endl;
1133 cout <<
"set_of_sets::compute_tdo_decomposition "
1134 "after compute_incidence_matrix" << endl;
1136 cout <<
"nb_sets=" <<
nb_sets << endl;
1145 cout <<
"set_of_sets::compute_tdo_decomposition "
1146 "before D.init_incidence_matrix" << endl;
1149 nb_sets, Inc, verbose_level - 1);
1154 cout <<
"set_of_sets::compute_tdo_decomposition "
1155 "before D.setup_default_partition" << endl;
1160 cout <<
"set_of_sets::compute_tdo_decomposition "
1161 "before D.compute_TDO" << endl;
1166 cout <<
"set_of_sets::compute_tdo_scheme done" << endl;
1172 int f_v = (verbose_level >= 1);
1177 cout <<
"set_of_sets::is_member" << endl;
1181 cout <<
"set_of_sets::is_member done" << endl;
1188 int f_v = (verbose_level >= 1);
1193 cout <<
"set_of_sets::sort_all" << endl;
1195 for (i = 0; i <
nb_sets; i++) {
1200 cout <<
"set_of_sets::sort_all done" << endl;
1207 int f_v = (verbose_level >= 1);
1208 long int N, i, j, k;
1215 cout <<
"set_of_sets::all_pairwise_intersections" << endl;
1222 N, verbose_level - 1);
1225 for (i = 0; i <
nb_sets; i++) {
1226 for (j = i + 1; j <
nb_sets; j++) {
1239 cout <<
"set_of_sets::all_pairwise_intersections done" << endl;
1245 int f_v = (verbose_level >= 1);
1252 cout <<
"set_of_sets::pairwise_intersection_matrix" << endl;
1260 for (i = 0; i <
nb_sets; i++) {
1261 for (j = i + 1; j <
nb_sets; j++) {
1272 cout <<
"set_of_sets::all_pairwise_intersections done" << endl;
1279 int f_v = (verbose_level >= 1);
1288 cout <<
"set_of_sets::all_triple_intersections" << endl;
1298 for (i = 0; i <
nb_sets; i++) {
1299 for (j = i + 1; j <
nb_sets; j++) {
1304 for (k = j + 1; k <
nb_sets; k++) {
1320 cout <<
"set_of_sets::all_triple_intersections done" << endl;
1329 cout <<
"set_of_sets::has_constant_size_property no sets" << endl;
1333 for (i = 1; i <
nb_sets; i++) {
1346 for (i = 0; i <
nb_sets; i++) {
1353 int f_make_heading,
int verbose_level)
1355 int f_v = (verbose_level >= 1);
1359 cout <<
"set_of_sets::save_csv" << endl;
1363 Sp->
save(fname, verbose_level);
1365 cout <<
"set_of_sets::save_csv "
1366 "before delete spreadsheet" << endl;
1370 cout <<
"set_of_sets::save_csv done" << endl;
1377 int f_v = (verbose_level >= 1);
1384 cout <<
"set_of_sets::save_constant_size_csv" << endl;
1387 cout <<
"set_of_sets::save_constant_size_csv !has_constant_size_property()" << endl;
1392 for (i = 0; i <
nb_sets; i++) {
1393 for (j = 0; j < nb_cols; j++) {
1394 M[i * nb_cols + j] =
Sets[i][j];
1400 cout <<
"set_of_sets::save_constant_size_csv done" << endl;
1405 int idx1,
int idx2,
int &common_elt)
1412 common_elt =
Sets[idx1][pos1];
1424 for (i = 0; i <
nb_sets; i++) {
1434 set_of_sets_compare_func,
1435 set_of_sets_swap_func, NULL);
1439 int *&orbit,
int *&orbit_inv,
1440 int *&orbit_first,
int *&orbit_len,
1442 void *compute_image_data,
int elt_idx,
1443 int gen_idx,
int &idx_of_image,
int verbose_level),
1444 void *compute_image_data,
1448 int f_v = (verbose_level >= 1);
1449 int f_vv = (verbose_level >= 2);
1450 int i, cur, a, b, g, t, l, pos, x;
1453 cout <<
"set_of_sets::compute_orbits" << endl;
1457 for (i = 0; i <
nb_sets; i++) {
1467 orbit_first[nb_orbits] = cur;
1468 orbit_len[nb_orbits] = 1;
1470 cout <<
"set_of_sets::compute_orbits "
1471 "New orbit " << nb_orbits
1472 <<
" is orbit of " << orbit[cur] << endl;
1476 for (g = 0; g < nb_gens; g++) {
1477 (*compute_image_function)(
this,
1478 compute_image_data, a, g, b, verbose_level - 2);
1480 cout << a <<
" -" << g <<
"-> " << b << endl;
1486 for (i = pos; i > l; i--) {
1500 orbit_len[nb_orbits]++;
1509 cout <<
"set_of_sets::compute_orbits "
1510 "we found " << nb_orbits <<
" orbits" << endl;
1514 cout <<
"set_of_sets::compute_orbits done" << endl;
1520 int f_v = (verbose_level >= 1);
1525 cout <<
"set_of_sets::number_of_eckardt_points" << endl;
1530 cout <<
"set_of_sets::number_of_eckardt_points done" << endl;
1536 int *&E,
int &nb_E,
int verbose_level)
1538 int f_v = (verbose_level >= 1);
1541 cout <<
"set_of_sets::get_eckardt_points" << endl;
1563 cout ,
FALSE , *PStack);
1565 cout ,
FALSE , *PStack);
1568 int *row_classes, *row_class_inv, nb_row_classes;
1569 int *col_classes, *col_class_inv, nb_col_classes;
1573 row_classes, row_class_inv, nb_row_classes,
1574 col_classes, col_class_inv, nb_col_classes,
1577 col_scheme =
NEW_int(nb_row_classes * nb_col_classes);
1580 row_classes, row_class_inv, nb_row_classes,
1581 col_classes, col_class_inv, nb_col_classes,
1587 cout <<
"col_scheme:" << endl;
1589 row_classes, nb_row_classes,
1590 col_classes, nb_col_classes,
1591 col_scheme, -1, -1);
1597 for (j = 0; j < nb_col_classes; j++) {
1601 for (i = 0; i < nb_row_classes; i++) {
1602 s += col_scheme[i * nb_col_classes + j];
1609 cout <<
"set_of_sets::get_eckardt_points nb_E=" << nb_E << endl;
1616 for (j = 0; j < nb_col_classes; j++) {
1620 for (i = 0; i < nb_row_classes; i++) {
1621 s += col_scheme[i * nb_col_classes + j];
1625 for (i = 0; i < sz; i++) {
1641 cout <<
"set_of_sets::get_eckardt_points done" << endl;
1646 int (*evaluate_function)(
int a,
int i,
int j,
void *evaluate_data,
int verbose_level),
1647 void *evaluate_data,
1650 int f_v = (verbose_level >= 1);
1654 cout <<
"set_of_sets::evaluate_function_and_store nb_sets=" <<
nb_sets
1661 for (i = 0; i <
nb_sets; i++) {
1662 for (j = 0; j <
Set_size[i]; j++) {
1664 c = (*evaluate_function)(a, i, j, evaluate_data, verbose_level - 2);
1665 Function_values->
Sets[i][j] = c;
1669 cout <<
"set_of_sets::evaluate_function_and_store done" << endl;
1679 for (i = 1; i <
nb_sets; i++) {
1693static int set_of_sets_compare_func(
void *data,
int i,
int j,
void *extra_data)
1700 cout <<
"set_of_sets_compare_func sets "
1701 "must have the same size" << endl;
1708static void set_of_sets_swap_func(
void *data,
int i,
int j,
void *extra_data)
1710 set_of_sets *S = (set_of_sets *) data;
1713 if (S->Set_size[i] != S->Set_size[j]) {
1714 cout <<
"set_of_sets_swap_func sets "
1715 "must have the same size" << endl;
1719 S->Sets[i] = S->Sets[j];
a collection of combinatorial functions
long int int_n_choose_k(int n, int k)
int ijk2h(int i, int j, int k, int n)
int ij2k(int i, int j, int n)
void zero(long int *v, long int len)
data structure for set partitions following Jeffrey Leon
void subset_continguous(int from, int len)
void split_cell(int verbose_level)
void allocate_and_get_decomposition(int *&row_classes, int *&row_class_inv, int &nb_row_classes, int *&col_classes, int *&col_class_inv, int &nb_col_classes, int verbose_level)
void print_decomposition_scheme(std::ostream &ost, int *row_classes, int nb_row_classes, int *col_classes, int nb_col_classes, int *scheme, int marker1, int marker2)
void allocate(int n, int verbose_level)
void init_decomposition(geometry::decomposition *&D, int verbose_level)
void evaluate_function_and_store(data_structures::set_of_sets *&Function_values, int(*evaluate_function)(int a, int i, int j, void *evaluate_data, int verbose_level), void *evaluate_data, int verbose_level)
void init_from_file(int &underlying_set_size, std::string &fname, int verbose_level)
void sort_all(int verbose_level)
long int & element(int i, int j)
void init_from_csv_file(int underlying_set_size, std::string &fname, int verbose_level)
int has_constant_size_property()
int find_smallest_class()
void add_element(int i, long int a)
void print_table_latex_simple(std::ostream &ost)
void save_constant_size_csv(std::string &fname, int verbose_level)
void sort_big(int verbose_level)
void compute_orbits(int &nb_orbits, int *&orbit, int *&orbit_inv, int *&orbit_first, int *&orbit_len, void(*compute_image_function)(set_of_sets *S, void *compute_image_data, int elt_idx, int gen_idx, int &idx_of_image, int verbose_level), void *compute_image_data, int nb_gens, int verbose_level)
void init_basic_with_Sz_in_int(int underlying_set_size, int nb_sets, int *Sz, int verbose_level)
void compute_and_print_tdo_col_scheme(std::ostream &file, int verbose_level)
void init_set(int idx_of_set, int *set, int sz, int verbose_level)
void init_basic_constant_size(int underlying_set_size, int nb_sets, int constant_size, int verbose_level)
int is_member(int i, int a, int verbose_level)
void print_table_tex(std::ostream &ost)
void init_cycle_structure(int *perm, int n, int verbose_level)
void compute_and_print_tdo_row_scheme(std::ostream &file, int verbose_level)
void compute_incidence_matrix(int *&Inc, int &m, int &n, int verbose_level)
void init_with_Sz_in_int(int underlying_set_size, int nb_sets, long int **Pts, int *Sz, int verbose_level)
void intersection_matrix(int *&intersection_type, int &highest_intersection_number, int *&intersection_matrix, int &nb_big_sets, int verbose_level)
void get_eckardt_points(int *&E, int &nb_E, int verbose_level)
int find_common_element_in_two_sets(int idx1, int idx2, int &common_elt)
void init(int underlying_set_size, int nb_sets, long int **Pts, long int *Sz, int verbose_level)
void extract_largest_sets(set_of_sets &S, int *&Idx, int verbose_level)
void print_table_latex_simple_with_selection(std::ostream &ost, int *Selection, int nb_sel)
void init_from_adjacency_matrix(int n, int *Adj, int verbose_level)
void compute_tdo_decomposition(geometry::decomposition &D, int verbose_level)
void remove_sets_of_given_size(int k, set_of_sets &S, int *&Idx, int verbose_level)
void dualize(set_of_sets *&S, int verbose_level)
void save_csv(std::string &fname, int f_make_heading, int verbose_level)
void pairwise_intersection_matrix(int *&M, int verbose_level)
int number_of_eckardt_points(int verbose_level)
void all_triple_intersections(set_of_sets *&Intersections, int verbose_level)
void init_from_orbiter_file(int underlying_set_size, std::string &fname, int verbose_level)
void init_basic(int underlying_set_size, int nb_sets, long int *Sz, int verbose_level)
void all_pairwise_intersections(set_of_sets *&Intersections, int verbose_level)
void init_simple(int underlying_set_size, int nb_sets, int verbose_level)
a collection of functions related to sorted vectors
void lint_vec_intersect_sorted_vectors(long int *v1, int len1, long int *v2, int len2, long int *v3, int &len3)
int lint_vec_compare(long int *p, long int *q, int len)
int lint_vecs_find_common_element(long int *v1, int len1, long int *v2, int len2, int &idx1, int &idx2)
void Heapsort_general(void *data, int len, int(*compare_func)(void *data, int i, int j, void *extra_data), void(*swap_func)(void *data, int i, int j, void *extra_data), void *extra_data)
int lint_vec_search(long int *v, int len, long int a, int &idx, int verbose_level)
void lint_vec_heapsort(long int *v, int len)
for reading and writing of csv files
void save(std::string &fname, int verbose_level)
void init_set_of_sets(set_of_sets *S, int f_make_heading)
a statistical analysis of data consisting of single integers
void print(int f_backwards)
void init_lint(long int *data, int data_length, int f_second, int verbose_level)
void print_naked(int f_backwards)
decomposition of an incidence matrix
void compute_TDO(int max_depth, int verbose_level)
void init_incidence_matrix(int m, int n, int *M, int verbose_level)
void setup_default_partition(int verbose_level)
interface for various incidence geometries
void get_col_decomposition_scheme(data_structures::partitionstack &PStack, int *row_classes, int *row_class_inv, int nb_row_classes, int *col_classes, int *col_class_inv, int nb_col_classes, int *col_scheme, int verbose_level)
void get_and_print_row_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, int f_print_subscripts, data_structures::partitionstack &PStack)
void init_by_set_of_sets(data_structures::set_of_sets *SoS, int verbose_level)
void get_and_print_column_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, int f_print_subscripts, data_structures::partitionstack &PStack)
void init_by_matrix(int m, int n, int *M, int verbose_level)
void compute_TDO_safe(data_structures::partitionstack &PStack, int depth, 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 lint_matrix_read_csv(std::string &fname, long int *&M, int &m, int &n, int verbose_level)
void read_incidence_file(std::vector< std::vector< int > > &Geos, int &m, int &n, int &nb_flags, std::string &inc_file_name, int verbose_level)
interface to create latex output files
void lint_set_print_tex_text_mode(std::ostream &ost, long int *v, int len)
void lint_set_print_tex(std::ostream &ost, long int *v, int len)
data_structures::lint_vec * Lint_vec
#define Lint_vec_copy(A, B, C)
#define Int_vec_zero(A, B)
#define Lint_vec_print(A, B, C)
#define Int_vec_print_integer_matrix_width(A, B, C, D, E, F)
#define Int_matrix_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects