Orbiter 2022
Combinatorial Objects
combinatorics.h
Go to the documentation of this file.
1// combinatorics.h
2//
3// Anton Betten
4//
5// moved here from galois.h: July 27, 2018
6// started as orbiter: October 23, 2002
7// 2nd version started: December 7, 2003
8// galois started: August 12, 2005
9
10
11
12#ifndef ORBITER_SRC_LIB_FOUNDATIONS_COMBINATORICS_COMBINATORICS_H_
13#define ORBITER_SRC_LIB_FOUNDATIONS_COMBINATORICS_COMBINATORICS_H_
14
15
16
17namespace orbiter {
18namespace layer1_foundations {
19namespace combinatorics {
20
21
22// #############################################################################
23// boolean_function_domain.cpp
24// #############################################################################
25
27
29
30public:
31 int n;
32 int n2; // n / 2
33 int Q; // 2^n
34 int bent; // 2^{n/2}
35 int near_bent; // 2^{(n+1)/2}
36 //int NN;
38 int N; // size of PG(n,2)
39
41 //finite_field *FQ; // the field of order 2^n
42
44 // Poly[i] = polynomial of degree i in n + 1 variables.
45 // i = 1,..,n
46 int **A_poly;
47 int **B_poly;
48 int *Kernel;
50
51
52 long int *affine_points; // [Q]
53
54
55
56 int *v; // [n]
57 int *v1; // [n + 1]
58 int *w; // [n]
59 int *f; // [Q]
60 int *f2; // [Q]
61 int *F; // [Q]
62 int *T; // [Q]
63 int *W; // [Q * Q]
64 int *f_proj;
65 int *f_proj2;
66
67
68
71 void init(int n, int verbose_level);
72 void setup_polynomial_rings(int verbose_level);
73 void compute_polynomial_representation(int *func, int *coeff, int verbose_level);
74 void evaluate_projectively(int *coeff, int *f);
75 void evaluate(int *coeff, int *f);
76 void raise(int *in, int *out);
77 void apply_Walsh_transform(int *in, int *out);
78 int is_bent(int *T);
79 int is_near_bent(int *T);
80};
81
82
83
84
85// #############################################################################
86// brick_domain.cpp
87// #############################################################################
88
90
92
93public:
95 int q;
97
100 void null();
101 void freeself();
102 void init(field_theory::finite_field *F, int verbose_level);
103 void unrank(int rk, int &f_vertical,
104 int &x0, int &y0, int verbose_level);
105 int rank(int f_vertical, int x0, int y0, int verbose_level);
106 void unrank_coordinates(int rk,
107 int &x1, int &y1, int &x2, int &y2,
108 int verbose_level);
109 int rank_coordinates(int x1, int y1, int x2, int y2,
110 int verbose_level);
111};
112
113
114
115
116// #############################################################################
117// classification_of_objects_description.cpp
118// #############################################################################
119
120
121
122
124
125
126
128
129public:
130
132 std::string label;
133
135 std::string save_prefix;
136
139
142
144
146
148
149
152 int read_arguments(
153 int argc, std::string *argv,
154 int verbose_level);
155 void print();
156
157};
158
159// #############################################################################
160// classification_of_objects_report_options.cpp
161// #############################################################################
162
163
164
165
167
168
169
171
172public:
173
175 std::string prefix;
176
178
180
182
184
186
189
192 int read_arguments(
193 int argc, std::string *argv,
194 int verbose_level);
195 void print();
196
197};
198
199
200// #############################################################################
201// classification_of_objects.cpp
202// #############################################################################
203
204
205
206
208
209
210
212
213public:
214
216
218 //projective_space_with_action *PA;
220
222
223
225
226 long int *Ago; // [IS->nb_objects_to_test]
227 int *F_reject; // [IS->nb_objects_to_test]
228
229
230 // the classification:
231
232 int nb_orbits; // number of isomorphism types
233
234 int *Idx_transversal; // [nb_orbits]
235
236 long int *Ago_transversal; // [nb_orbits]
237
239
241
242
244
245
246
253 int verbose_level);
255 int verbose_level);
256 void save_automorphism_group_order(int verbose_level);
257 void save_transversal(int verbose_level);
260 int input_idx, long int &ago, int &f_reject, data_structures::nauty_output *&NO,
261 int verbose_level);
262 int process_object(
264 long int &ago,
265 int &iso_idx_if_found,
267 int verbose_level);
268 // returns f_found, which is TRUE if the object is already in the list
270 std::ostream &fp, int verbose_level);
272 std::ostream &fp, int max_TDO_depth,
273 int f_show_incma,
274 int verbose_level);
276 std::ostream &fp, int i, int max_TDO_depth,
277 int f_show_incma,
278 int verbose_level);
279 void report_object(std::ostream &fp,
281 int object_idx,
282 int max_TDO_depth,
283 int f_show_incma,
284 int verbose_level);
285
286
287};
288
289
290
291
292
293
294
295// #############################################################################
296// combinatorics_domain.cpp
297// #############################################################################
298
300
302
303public:
306 int int_factorial(int a);
307 int Kung_mue_i(int *part, int i, int m);
308 void partition_dual(int *part, int *dual_part, int n, int verbose_level);
309 void make_all_partitions_of_n(int n, int *&Table, int &nb, int verbose_level);
310 int count_all_partitions_of_n(int n);
311 int partition_first(int *v, int n);
312 int partition_next(int *v, int n);
313 void partition_print(std::ostream &ost, int *v, int n);
314 int int_vec_is_regular_word(int *v, int len, int q);
315 // Returns TRUE if the word v of length len is regular, i.~e.
316 // lies in an orbit of length $len$ under the action of the cyclic group
317 // $C_{len}$ acting on the coordinates.
318 // Lueneburg~\cite{Lueneburg87a} p. 118.
319 // v is a vector over $\{0, 1, \ldots , q-1\}$
320 int int_vec_first_regular_word(int *v, int len, int q);
321 int int_vec_next_regular_word(int *v, int len, int q);
322 void int_vec_splice(int *v, int *w, int len, int p);
323 int is_subset_of(int *A, int sz_A, int *B, int sz_B);
324 int set_find(int *elts, int size, int a);
325 void set_complement(int *subset, int subset_size, int *complement,
326 int &size_complement, int universal_set_size);
327 void set_complement_lint(long int *subset, int subset_size, long int *complement,
328 int &size_complement, int universal_set_size);
329 void set_complement_safe(int *subset, int subset_size, int *complement,
330 int &size_complement, int universal_set_size);
331 // subset does not need to be in increasing order
332 void set_add_elements(int *elts, int &size,
333 int *elts_to_add, int nb_elts_to_add);
334 void set_add_element(int *elts, int &size, int a);
335 void set_delete_elements(int *elts, int &size,
336 int *elts_to_delete, int nb_elts_to_delete);
337 void set_delete_element(int *elts, int &size, int a);
338 int compare_lexicographically(int a_len, long int *a, int b_len, long int *b);
339 long int int_n_choose_k(int n, int k);
340 void make_t_k_incidence_matrix(int v, int t, int k, int &m, int &n, int *&M,
341 int verbose_level);
342 void print_k_subsets_by_rank(std::ostream &ost, int v, int k);
343 int f_is_subset_of(int v, int t, int k, int rk_t_subset, int rk_k_subset);
344 int rank_subset(int *set, int sz, int n);
345 void rank_subset_recursion(int *set, int sz, int n, int a0, int &r);
346 void unrank_subset(int *set, int &sz, int n, int r);
347 void unrank_subset_recursion(int *set, int &sz, int n, int a0, int &r);
348 int rank_k_subset(int *set, int n, int k);
349 void unrank_k_subset(int rk, int *set, int n, int k);
350 void unrank_k_subset_and_complement(int rk, int *set, int n, int k);
351 int first_k_subset(int *set, int n, int k);
352 int next_k_subset(int *set, int n, int k);
353 int next_k_subset_at_level(int *set, int n, int k, int backtrack_level);
354 void subset_permute_up_front(int n, int k, int *set, int *k_subset_idx,
355 int *permuted_set);
356 int ordered_pair_rank(int i, int j, int n);
357 void ordered_pair_unrank(int rk, int &i, int &j, int n);
358 void set_partition_4_into_2_unrank(int rk, int *v);
359 int set_partition_4_into_2_rank(int *v);
360 int unordered_triple_pair_rank(int i, int j, int k, int l, int m, int n);
361 void unordered_triple_pair_unrank(int rk, int &i, int &j, int &k,
362 int &l, int &m, int &n);
363 long int ij2k_lint(long int i, long int j, long int n);
364 void k2ij_lint(long int k, long int & i, long int & j, long int n);
365 int ij2k(int i, int j, int n);
366 void k2ij(int k, int & i, int & j, int n);
367 int ijk2h(int i, int j, int k, int n);
368 void h2ijk(int h, int &i, int &j, int &k, int n);
369 void random_permutation(int *random_permutation, long int n);
370 void perm_move(int *from, int *to, long int n);
371 void perm_identity(int *a, long int n);
372 int perm_is_identity(int *a, long int n);
373 void perm_elementary_transposition(int *a, long int n, int f);
374 void perm_mult(int *a, int *b, int *c, long int n);
375 void perm_conjugate(int *a, int *b, int *c, long int n);
376 // c := a^b = b^-1 * a * b
377 void perm_inverse(int *a, int *b, long int n);
378 // b := a^-1
379 void perm_raise(int *a, int *b, int e, long int n);
380 // b := a^e (e >= 0)
381 void perm_direct_product(long int n1, long int n2, int *perm1, int *perm2, int *perm3);
382 void perm_print_list(std::ostream &ost, int *a, int n);
383 void perm_print_list_offset(std::ostream &ost, int *a, int n, int offset);
384 void perm_print_product_action(std::ostream &ost, int *a, int m_plus_n, int m,
385 int offset, int f_cycle_length);
386 void perm_print(std::ostream &ost, int *a, int n);
388 std::ostream &ost,
389 int *a, int n,
390 void (*point_label)(std::stringstream &sstr, long int pt, void *data),
391 void *point_label_data);
392 void perm_print_with_cycle_length(std::ostream &ost, int *a, int n);
393 void perm_print_counting_from_one(std::ostream &ost, int *a, int n);
394 void perm_print_offset(std::ostream &ost,
395 int *a, int n,
396 int offset,
397 int f_print_cycles_of_length_one,
398 int f_cycle_length,
399 int f_max_cycle_length,
400 int max_cycle_length,
401 int f_orbit_structure,
402 void (*point_label)(std::stringstream &sstr, long int pt, void *data),
403 void *point_label_data);
404 void perm_cycle_type(int *perm, long int degree, int *cycles, int &nb_cycles);
405 int perm_order(int *a, long int n);
406 int perm_signum(int *perm, long int n);
407 int is_permutation(int *perm, long int n);
408 int is_permutation_lint(long int *perm, long int n);
409 void first_lehmercode(int n, int *v);
410 int next_lehmercode(int n, int *v);
411 void lehmercode_to_permutation(int n, int *code, int *perm);
412 int disjoint_binary_representation(int u, int v);
413 int hall_test(int *A, int n, int kmax, int *memo, int verbose_level);
414 int philip_hall_test(int *A, int n, int k, int *memo, int verbose_level);
415 int philip_hall_test_dual(int *A, int n, int k, int *memo, int verbose_level);
416 void print_01_matrix_with_stars(std::ostream &ost, int *A, int m, int n);
417 void print_int_matrix(std::ostream &ost, int *A, int m, int n);
419 long int generalized_binomial(int n, int k, int q);
420 void print_tableau(int *Tableau, int l1, int l2,
421 int *row_parts, int *col_parts);
422 int ijk_rank(int i, int j, int k, int n);
423 void ijk_unrank(int &i, int &j, int &k, int n, int rk);
424 long int largest_binomial2_below(int a2);
425 long int largest_binomial3_below(int a3);
426 long int binomial2(int a);
427 long int binomial3(int a);
428 int minus_one_if_positive(int i);
429 void make_partitions(int n, int *Part, int cnt);
430 int count_partitions(int n);
431 int next_partition(int n, int *part);
432 long int binomial_lint(int n, int k);
433 void binomial(ring_theory::longinteger_object &a, int n, int k, int verbose_level);
437 int n, int k, int q, int verbose_level);
438 void q_binomial(
440 int n, int k, int q, int verbose_level);
443 int n, int k, int q, int verbose_level);
445 int n, int q, int k, int x);
446 void krawtchouk(ring_theory::longinteger_object &a, int n, int q, int k, int x);
447 void do_tdo_refinement(tdo_refinement_description *Descr, int verbose_level);
448 void do_tdo_print(std::string &fname, int verbose_level);
449 void make_elementary_symmetric_functions(int n, int k_max, int verbose_level);
450 void Dedekind_numbers(int n_min, int n_max, int q_min, int q_max, int verbose_level);
451 void convert_stack_to_tdo(std::string &stack_fname, int verbose_level);
452 void do_parameters_maximal_arc(int q, int r, int verbose_level);
453 void do_parameters_arc(int q, int s, int r, int verbose_level);
454 void do_read_poset_file(std::string &fname,
455 int f_grouping, double x_stretch, int verbose_level);
456 // creates a layered graph file from a text file
457 // which was created by DISCRETA/sgls2.cpp
458 void do_make_tree_of_all_k_subsets(int n, int k, int verbose_level);
459 void create_random_permutation(int deg,
460 std::string &fname_csv, int verbose_level);
461 void compute_incidence_matrix(int v, int b, int k, long int *Blocks_coded,
462 int *&M, int verbose_level);
463 void compute_blocks(int v, int b, int k, long int *Blocks_coded,
464 int *&Blocks, int verbose_level);
466 int v, int k, int b, long int *Blocks_coded,
467 int &b_reduced,
468 int verbose_level);
469 void create_incidence_matrix_of_graph(int *Adj, int n,
470 int *&M, int &nb_rows, int &nb_cols,
471 int verbose_level);
472 void free_global_data();
474
475};
476
477
478
479
480
481// #############################################################################
482// encoded_combinatorial_object.cpp
483// #############################################################################
484
486
487
489
490private:
491 int *Incma;
492
493public:
496
501 int canonical_labeling_len; // = nb_rows + nb_cols
502
505 void init_everything(int nb_rows, int nb_cols,
506 int *Incma, int *partition,
507 int verbose_level);
508 void init(int nb_rows, int nb_cols, int verbose_level);
509 int *get_Incma();
510 void set_incidence_ij(int i, int j);
511 int get_incidence_ij(int i, int j);
512 void set_incidence(int a);
514 data_structures::nauty_output *NO, int verbose_level);
515 void print_incma();
516 void print_partition();
517 void compute_canonical_incma(int *canonical_labeling,
518 int *&Incma_out, int verbose_level);
520 int *canonical_labeling, int verbose_level);
522 geometry::projective_space *P, int verbose_level);
524 geometry::projective_space *P, int verbose_level);
525 void canonical_form_given_canonical_labeling(int *canonical_labeling,
527 int verbose_level);
528 void latex_set_system_by_columns(std::ostream &ost,
529 int verbose_level);
530 void latex_set_system_by_rows(std::ostream &ost,
531 int verbose_level);
532 void latex_incma(std::ostream &ost, int verbose_level);
533 void latex_TDA(std::ostream &ost,
534 int nb_orbits, int *orbit_first, int *orbit_len, int *orbit,
535 int verbose_level);
536 void latex_TDA_with_labels(std::ostream &ost,
537 int nb_orbits, int *orbit_first, int *orbit_len, int *orbit,
538 int verbose_level);
539 void latex_canonical_form(std::ostream &ost,
541 int verbose_level);
542 void apply_canonical_labeling(int *&Inc2,
545 int *&Flags, int &nb_flags_counted,
547 void latex_canonical_form_with_labels(std::ostream &ost,
549 std::string *row_labels,
550 std::string *col_labels,
551 int verbose_level);
552
553};
554
555
556
557
558
559
560// #############################################################################
561// geo_parameter.cpp
562// #############################################################################
563
564
565#define MODE_UNDEFINED 0
566#define MODE_SINGLE 1
567#define MODE_STACK 2
568
569#define UNKNOWNTYPE 0
570#define POINTTACTICAL 1
571#define BLOCKTACTICAL 2
572#define POINTANDBLOCKTACTICAL 3
573
574#define FUSE_TYPE_NONE 0
575#define FUSE_TYPE_SIMPLE 1
576#define FUSE_TYPE_DOUBLE 2
577//#define FUSE_TYPE_MULTI 3
578//#define FUSE_TYPE_TDO 4
579
581
582
583
585public:
588 int v, b;
589
590 int mode;
591 std::string label;
592
593 // for MODE_SINGLE
594 int nb_V, nb_B;
595 int *V, *B;
596 int *scheme;
597 int *fuse;
598
599 // for MODE_STACK
601
602 int *part;
606
607
611
614 void append_to_part(int a);
615 void append_to_entries(int a1, int a2, int a3, int a4);
616 void write(std::ofstream &aStream, std::string &label);
617 void write_mode_single(std::ofstream &aStream, std::string &label);
618 void write_mode_stack(std::ofstream &aStream, std::string &label);
619 void convert_single_to_stack(int verbose_level);
620 int partition_number_row(int row_idx);
621 int partition_number_col(int col_idx);
622 int input(std::ifstream &aStream);
623 int input_mode_single(std::ifstream &aStream);
624 int input_mode_stack(std::ifstream &aStream, int verbose_level);
625 void init_tdo_scheme(tdo_scheme_synthetic &G, int verbose_level);
628 void print_scheme_tex(std::ostream &ost, tdo_scheme_synthetic &G, int h);
629 void print_C_source();
630 void convert_single_to_stack_fuse_simple_pt(int verbose_level);
631 void convert_single_to_stack_fuse_simple_bt(int verbose_level);
632 void convert_single_to_stack_fuse_double_pt(int verbose_level);
634 int *&part_relabel, int *&part_length,
635 int verbose_level);
636 void cut_off(geo_parameter &GP2, int w,
637 int *&part_relabel, int *&part_length,
638 int verbose_level);
639 void copy(geo_parameter &GP2);
640 void print_schemes();
642 int h, int class_first, int class_len);
644 int h, int class_first, int class_len);
645};
646
647
648
649// #############################################################################
650// pentomino_puzzle.cpp
651// #############################################################################
652
653
654#define NB_PIECES 18
655
656
657
659
660
662
663 public:
672 int Rotate[4 * 25];
673 int Rotate6[4 * 36];
676
677
678 void main(int verbose_level);
679 int has_interlocking_Ps(long int *set);
680 int has_interlocking_Pprime(long int *set);
681 int has_interlocking_Ls(long int *set);
682 int test_if_interlocking_Ps(int a1, int a2);
683 int has_interlocking_Lprime(long int *set);
684 int test_if_interlocking_Ls(int a1, int a2);
685 int number_of_pieces_of_type(int t, long int *set);
686 int does_it_contain_an_I(long int *set);
687 void decode_assembly(long int *set);
688 // input set[5]
689 void decode_piece(int j, int &h, int &r, int &t);
690 // h is the kind of piece
691 // r is the rotation index
692 // t is the translation index
693 // to get the actual rotation and translation, use
694 // R[h][r] and T[h][t].
695 int code_piece(int h, int r, int t);
696 void draw_it(std::ostream &ost, long int *sol);
698 int elt_idx,
699 int gen_idx, int &idx_of_image, int verbose_level);
700 void turn_piece(int &h, int &r, int &t, int verbose_level);
701 void flip_piece(int &h, int &r, int &t, int verbose_level);
702 void setup_pieces();
703 void setup_rotate();
704 void setup_var_start();
706
707};
708
709
710
711
712
713
714// #############################################################################
715// tdo_data.cpp TDO parameter refinement
716// #############################################################################
717
719
720class tdo_data {
721public:
731
732 tdo_data();
733 ~tdo_data();
734 void free();
735 void allocate(int R);
736 int solve_first_system(int verbose_level,
737 int *&line_types, int &nb_line_types,
738 int &line_types_allocated);
739 void solve_second_system_omit(int verbose_level,
740 int *classes_len,
741 int *&line_types, int &nb_line_types,
742 int *&distributions, int &nb_distributions,
743 int omit);
744 void solve_second_system_with_help(int verbose_level,
745 int f_use_mckay_solver, int f_once,
746 int *classes_len, int f_scale, int scaling,
747 int *&line_types, int &nb_line_types,
748 int *&distributions, int &nb_distributions,
749 int cnt_second_system, solution_file_data *Sol);
750 void solve_second_system_from_file(int verbose_level,
751 int *classes_len, int f_scale, int scaling,
752 int *&line_types, int &nb_line_types,
753 int *&distributions, int &nb_distributions,
754 std::string &solution_file_name);
755 void solve_second_system(int verbose_level,
756 int f_use_mckay_solver, int f_once,
757 int *classes_len, int f_scale, int scaling,
758 int *&line_types, int &nb_line_types,
759 int *&distributions, int &nb_distributions);
760};
761
762// #############################################################################
763// tdo_refinement_description.cpp
764// #############################################################################
765
766
767
769
771 public:
772
780 std::string select_label;
782 int omit1;
784 int omit2;
795 std::string fname_in;
796
798
801 int read_arguments(int argc, std::string *argv, int verbose_level);
802 void print();
803
804};
805
806
807// #############################################################################
808// tdo_refinement.cpp
809// #############################################################################
810
811
812
814
816 public:
817
818 int t0;
819 int cnt;
820
822
823 std::string fname;
824 std::string fname_out;
825
826
827
829
831
832
833
837
840 void init(tdo_refinement_description *Descr, int verbose_level);
841 void main_loop(int verbose_level);
842 void do_it(std::ofstream &g, int verbose_level);
843 void do_row_refinement(std::ofstream &g,
845 int verbose_level);
846 void do_col_refinement(std::ofstream &g,
848 int verbose_level);
849 void do_all_row_refinements(std::string &label_in, std::ofstream &g,
851 int *point_types, int nb_point_types, int point_type_len,
852 int *distributions, int nb_distributions, int &nb_tactical,
853 int verbose_level);
855 std::string &label_in, std::ofstream &g, tdo_scheme_synthetic &G,
856 int *line_types, int nb_line_types, int line_type_len,
857 int *distributions, int nb_distributions, int &nb_tactical,
858 int verbose_level);
860 std::string &label_in, std::ofstream &g, tdo_scheme_synthetic &G,
861 int *point_types, int nb_point_types, int point_type_len,
862 int *distributions, int nb_distributions,
863 int verbose_level);
864 // returns TRUE or FALSE depending on whether the
865 // refinement gave a tactical decomposition
866 int do_column_refinement(int t, std::string &label_in,
867 std::ofstream &g, tdo_scheme_synthetic &G,
868 int *line_types, int nb_line_types, int line_type_len,
869 int *distributions, int nb_distributions,
870 int verbose_level);
871 // returns TRUE or FALSE depending on whether the
872 // refinement gave a tactical decomposition
873};
874
875
876
877// #############################################################################
878// tdo_scheme_compute.cpp
879// #############################################################################
880
882
884
885public:
886
889
890
891
895 int max_depth,
896 int verbose_level);
897 void print_schemes(std::ostream &ost);
898
899};
900
901
902// #############################################################################
903// tdo_scheme_synthetic.cpp
904// #############################################################################
905
906
907
908#define NUMBER_OF_SCHEMES 5
909#define ROW_SCHEME 0
910#define COL_SCHEME 1
911#define LAMBDA_SCHEME 2
912#define EXTRA_ROW_SCHEME 3
913#define EXTRA_COL_SCHEME 4
914
915
917
918
921 std::vector<int> system_no;
922 std::vector<std::string> solution_file;
923};
924
926
928
929public:
930
931 // the following is needed by the TDO process:
932 // allocated in init_partition_stack
933 // freed in exit_partition_stack
934
935 //partition_backtrack PB;
936
938
940 int *part;
948
949 int mn; // m + n
950 int m; // # of rows
951 int n; // # of columns
952
964
969 int *the_row_scheme_cur; // [m * nb_col_classes[ROW_SCHEME]]
970 int *the_col_scheme_cur; // [n * nb_row_classes[COL_SCHEME]]
971 int *the_extra_row_scheme_cur; // [m * nb_col_classes[EXTRA_ROW_SCHEME]]
972 int *the_extra_col_scheme_cur; // [n * nb_row_classes[EXTRA_COL_SCHEME]]
973
974 // end of TDO process data
975
978
980 int *part, int *entries, int verbose_level);
982 int *part, int *entries, int verbose_level);
983 void init_TDO(int *Part, int *Entries,
984 int Row_level, int Col_level,
985 int Extra_row_level, int Extra_col_level,
986 int Lambda_level, int verbose_level);
987 void exit_TDO();
988 void init_partition_stack(int verbose_level);
990 void get_partition(int h, int l, int verbose_level);
991 void free_partition(int h);
992 void complete_partition_info(int h, int verbose_level);
993 void get_row_or_col_scheme(int h, int l, int verbose_level);
996 void print_all_schemes();
997 void print_scheme(int h, int verbose_level);
998 void print_scheme_tex(std::ostream &ost, int h);
999 void print_scheme_tex_fancy(std::ostream &ost,
1000 int h, int f_label, std::string &label);
1002 int *f_first_inc_must_be_moved, int verbose_level);
1003 int count_nb_inc_from_row_scheme(int verbose_level);
1004 int count_nb_inc_from_extra_row_scheme(int verbose_level);
1005
1006
1008 int *point_types, int nb_point_types, int point_type_len,
1009 int *distributions, int nb_distributions,
1010 int f_omit1, int omit1, int verbose_level);
1013 int *point_types, int nb_point_types, int point_type_len,
1014 int *distribution,
1015 int *non_zero_blocks, int nb_non_zero_blocks,
1016 int f_omit1, int omit1,
1017 int verbose_level);
1018
1019
1020 int refine_rows(int verbose_level,
1021 int f_use_mckay, int f_once,
1023 int *&point_types, int &nb_point_types, int &point_type_len,
1024 int *&distributions, int &nb_distributions,
1025 int &cnt_second_system, solution_file_data *Sol,
1026 int f_omit1, int omit1, int f_omit2, int omit2,
1027 int f_use_packing_numbers,
1028 int f_dual_is_linear_space,
1029 int f_do_the_geometric_test);
1030 int refine_rows_easy(int verbose_level,
1031 int *&point_types, int &nb_point_types, int &point_type_len,
1032 int *&distributions, int &nb_distributions,
1033 int &cnt_second_system);
1034 int refine_rows_hard(data_structures::partitionstack &P, int verbose_level,
1035 int f_use_mckay, int f_once,
1036 int *&point_types, int &nb_point_types, int &point_type_len,
1037 int *&distributions, int &nb_distributions,
1038 int &cnt_second_system,
1039 int f_omit1, int omit1, int f_omit, int omit,
1040 int f_use_packing_numbers, int f_dual_is_linear_space);
1041 void row_refinement_L1_L2(data_structures::partitionstack &P, int f_omit, int omit,
1042 int &L1, int &L2, int verbose_level);
1043 int tdo_rows_setup_first_system(int verbose_level,
1045 int f_omit, int omit,
1046 int *&point_types, int &nb_point_types);
1047 int tdo_rows_setup_second_system(int verbose_level,
1049 int f_omit, int omit,
1050 int f_use_packing_numbers,
1051 int f_dual_is_linear_space,
1052 int *&point_types, int &nb_point_types);
1053 int tdo_rows_setup_second_system_eqns_joining(int verbose_level,
1055 int f_omit, int omit, int f_dual_is_linear_space,
1056 int *point_types, int nb_point_types,
1057 int eqn_offset);
1058 int tdo_rows_setup_second_system_eqns_counting(int verbose_level,
1060 int f_omit, int omit,
1061 int *point_types, int nb_point_types,
1062 int eqn_offset);
1063 int tdo_rows_setup_second_system_eqns_packing(int verbose_level,
1065 int f_omit, int omit,
1066 int *point_types, int nb_point_types,
1067 int eqn_start, int &nb_eqns_used);
1068
1069 int refine_columns(int verbose_level, int f_once,
1071 int *&line_types, int &nb_line_types, int &line_type_len,
1072 int *&distributions, int &nb_distributions,
1073 int &cnt_second_system, solution_file_data *Sol,
1074 int f_omit1, int omit1, int f_omit, int omit,
1075 int f_D1_upper_bound_x0, int D1_upper_bound_x0,
1076 int f_use_mckay_solver,
1077 int f_use_packing_numbers);
1078 int refine_cols_hard(
1080 int verbose_level, int f_once,
1081 int *&line_types, int &nb_line_types, int &line_type_len,
1082 int *&distributions, int &nb_distributions,
1083 int &cnt_second_system, solution_file_data *Sol,
1084 int f_omit1, int omit1, int f_omit, int omit,
1085 int f_D1_upper_bound_x0, int D1_upper_bound_x0,
1086 int f_use_mckay_solver,
1087 int f_use_packing_numbers);
1089 int f_omit, int omit,
1090 int &L1, int &L2, int verbose_level);
1091 int tdo_columns_setup_first_system(int verbose_level,
1092 tdo_data &T, int r,
1094 int f_omit, int omit,
1095 int *&line_types, int &nb_line_types);
1096 int tdo_columns_setup_second_system(int verbose_level,
1097 tdo_data &T,
1099 int f_omit, int omit,
1100 int f_use_packing_numbers,
1101 int *&line_types, int &nb_line_types);
1103 tdo_data &T,
1105 int f_omit, int omit,
1106 int *line_types, int nb_line_types,
1107 int eqn_start);
1108 void tdo_columns_setup_second_system_eqns_counting(int verbose_level,
1109 tdo_data &T,
1111 int f_omit, int omit,
1112 int *line_types, int nb_line_types,
1113 int eqn_start);
1115 tdo_data &T,
1117 int f_omit, int omit,
1118 int *line_types, int nb_line_types,
1119 int eqn_start, int &nb_eqns_used);
1120
1121
1122 int td3_refine_rows(int verbose_level, int f_once,
1123 int lambda3, int block_size,
1124 int *&point_types, int &nb_point_types, int &point_type_len,
1125 int *&distributions, int &nb_distributions);
1126 int td3_rows_setup_first_system(int verbose_level,
1127 int lambda3, int block_size, int lambda2,
1128 tdo_data &T, int r,
1130 int &nb_vars,int &nb_eqns,
1131 int *&point_types, int &nb_point_types);
1132 int td3_rows_setup_second_system(int verbose_level,
1133 int lambda3, int block_size, int lambda2,
1134 tdo_data &T,
1135 int nb_vars, int &Nb_vars, int &Nb_eqns,
1136 int *&point_types, int &nb_point_types);
1137 int td3_rows_counting_flags(int verbose_level,
1138 int lambda3, int block_size, int lambda2, int &S,
1139 tdo_data &T,
1140 int nb_vars, int Nb_vars,
1141 int *&point_types, int &nb_point_types, int eqn_offset);
1142 int td3_refine_columns(int verbose_level, int f_once,
1143 int lambda3, int block_size,
1144 int f_scale, int scaling,
1145 int *&line_types, int &nb_line_types, int &line_type_len,
1146 int *&distributions, int &nb_distributions);
1147 int td3_columns_setup_first_system(int verbose_level,
1148 int lambda3, int block_size, int lambda2,
1149 tdo_data &T, int r,
1151 int &nb_vars, int &nb_eqns,
1152 int *&line_types, int &nb_line_types);
1153 int td3_columns_setup_second_system(int verbose_level,
1154 int lambda3, int block_size, int lambda2, int f_scale, int scaling,
1155 tdo_data &T,
1156 int nb_vars, int &Nb_vars, int &Nb_eqns,
1157 int *&line_types, int &nb_line_types);
1158 int td3_columns_triples_same_class(int verbose_level,
1159 int lambda3, int block_size,
1160 tdo_data &T,
1161 int nb_vars, int Nb_vars,
1162 int *&line_types, int &nb_line_types, int eqn_offset);
1163 int td3_columns_pairs_same_class(int verbose_level,
1164 int lambda3, int block_size, int lambda2,
1165 tdo_data &T,
1166 int nb_vars, int Nb_vars,
1167 int *&line_types, int &nb_line_types, int eqn_offset);
1168 int td3_columns_counting_flags(int verbose_level,
1169 int lambda3, int block_size, int lambda2, int &S,
1170 tdo_data &T,
1171 int nb_vars, int Nb_vars,
1172 int *&line_types, int &nb_line_types, int eqn_offset);
1174 int verbose_level,
1175 int lambda3, int block_size, int lambda2,
1176 tdo_data &T,
1177 int nb_vars, int Nb_vars,
1178 int *&line_types, int &nb_line_types, int eqn_offset);
1179 int td3_columns_lambda3_joining_triples_2_1(int verbose_level,
1180 int lambda3, int block_size, int lambda2,
1181 tdo_data &T,
1182 int nb_vars, int Nb_vars,
1183 int *&line_types, int &nb_line_types, int eqn_offset);
1184 int td3_columns_lambda3_joining_triples_1_1_1(int verbose_level,
1185 int lambda3, int block_size, int lambda2,
1186 tdo_data &T,
1187 int nb_vars, int Nb_vars,
1188 int *&line_types, int &nb_line_types, int eqn_offset);
1189
1190
1191};
1192
1193
1194
1195
1196
1197
1198
1199}}}
1200
1201
1202
1203#endif /* ORBITER_SRC_LIB_FOUNDATIONS_COMBINATORICS_COMBINATORICS_H_ */
1204
1205
1206
1207
ring_theory::homogeneous_polynomial_domain * Poly
Definition: combinatorics.h:43
void compute_polynomial_representation(int *func, int *coeff, int verbose_level)
int rank(int f_vertical, int x0, int y0, int verbose_level)
void unrank_coordinates(int rk, int &x1, int &y1, int &x2, int &y2, int verbose_level)
void unrank(int rk, int &f_vertical, int &x0, int &y0, int verbose_level)
int rank_coordinates(int x1, int y1, int x2, int y2, int verbose_level)
void init(field_theory::finite_field *F, int verbose_level)
description of a classification of objects using class classification_of_objects
options for the report for a classification of combinatorial objects
classification of combinatorial objects using a graph-theoretic approach
void report_all_isomorphism_types(std::ostream &fp, int max_TDO_depth, int f_show_incma, int verbose_level)
void report_object(std::ostream &fp, geometry::object_with_canonical_form *OwCF, int object_idx, int max_TDO_depth, int f_show_incma, int verbose_level)
int process_object(geometry::object_with_canonical_form *OwCF, long int &ago, int &iso_idx_if_found, data_structures::nauty_output *&NO, int verbose_level)
void report_isomorphism_type(std::ostream &fp, int i, int max_TDO_depth, int f_show_incma, int verbose_level)
void process_any_object(geometry::object_with_canonical_form *OwCF, int input_idx, long int &ago, int &f_reject, data_structures::nauty_output *&NO, int verbose_level)
void perform_classification(classification_of_objects_description *Descr, int f_projective_space, geometry::projective_space *P, data_structures::data_input_stream *IS, int verbose_level)
void size_of_conjugacy_class_in_sym_n(ring_theory::longinteger_object &a, int n, int *part)
int philip_hall_test(int *A, int n, int k, int *memo, int verbose_level)
void subset_permute_up_front(int n, int k, int *set, int *k_subset_idx, int *permuted_set)
void q_binomial_with_table(ring_theory::longinteger_object &a, int n, int k, int q, int verbose_level)
void create_incidence_matrix_of_graph(int *Adj, int n, int *&M, int &nb_rows, int &nb_cols, int verbose_level)
void binomial(ring_theory::longinteger_object &a, int n, int k, int verbose_level)
void perm_print_with_print_point_function(std::ostream &ost, int *a, int n, void(*point_label)(std::stringstream &sstr, long int pt, void *data), void *point_label_data)
int unordered_triple_pair_rank(int i, int j, int k, int l, int m, int n)
int compare_lexicographically(int a_len, long int *a, int b_len, long int *b)
void perm_print_offset(std::ostream &ost, int *a, int n, int offset, int f_print_cycles_of_length_one, int f_cycle_length, int f_max_cycle_length, int max_cycle_length, int f_orbit_structure, void(*point_label)(std::stringstream &sstr, long int pt, void *data), void *point_label_data)
void binomial_with_table(ring_theory::longinteger_object &a, int n, int k)
void unrank_subset_recursion(int *set, int &sz, int n, int a0, int &r)
void set_complement_lint(long int *subset, int subset_size, long int *complement, int &size_complement, int universal_set_size)
void make_elementary_symmetric_functions(int n, int k_max, int verbose_level)
void q_binomial_no_table(ring_theory::longinteger_object &a, int n, int k, int q, int verbose_level)
int create_roots_H4(field_theory::finite_field *F, int *roots)
int f_is_subset_of(int v, int t, int k, int rk_t_subset, int rk_k_subset)
void set_complement_safe(int *subset, int subset_size, int *complement, int &size_complement, int universal_set_size)
int next_k_subset_at_level(int *set, int n, int k, int backtrack_level)
void print_tableau(int *Tableau, int l1, int l2, int *row_parts, int *col_parts)
void do_tdo_refinement(tdo_refinement_description *Descr, int verbose_level)
void do_read_poset_file(std::string &fname, int f_grouping, double x_stretch, int verbose_level)
void perm_print_product_action(std::ostream &ost, int *a, int m_plus_n, int m, int offset, int f_cycle_length)
void print_01_matrix_with_stars(std::ostream &ost, int *A, int m, int n)
void unordered_triple_pair_unrank(int rk, int &i, int &j, int &k, int &l, int &m, int &n)
void krawtchouk_with_table(ring_theory::longinteger_object &a, int n, int q, int k, int x)
void perm_cycle_type(int *perm, long int degree, int *cycles, int &nb_cycles)
int philip_hall_test_dual(int *A, int n, int k, int *memo, int verbose_level)
void perm_print_list_offset(std::ostream &ost, int *a, int n, int offset)
void convert_stack_to_tdo(std::string &stack_fname, int verbose_level)
void Dedekind_numbers(int n_min, int n_max, int q_min, int q_max, int verbose_level)
void set_delete_elements(int *elts, int &size, int *elts_to_delete, int nb_elts_to_delete)
void create_random_permutation(int deg, std::string &fname_csv, int verbose_level)
void perm_direct_product(long int n1, long int n2, int *perm1, int *perm2, int *perm3)
void partition_dual(int *part, int *dual_part, int n, int verbose_level)
void krawtchouk(ring_theory::longinteger_object &a, int n, int q, int k, int x)
void compute_blocks(int v, int b, int k, long int *Blocks_coded, int *&Blocks, int verbose_level)
void set_complement(int *subset, int subset_size, int *complement, int &size_complement, int universal_set_size)
int hall_test(int *A, int n, int kmax, int *memo, int verbose_level)
void make_t_k_incidence_matrix(int v, int t, int k, int &m, int &n, int *&M, int verbose_level)
void set_add_elements(int *elts, int &size, int *elts_to_add, int nb_elts_to_add)
void make_all_partitions_of_n(int n, int *&Table, int &nb, int verbose_level)
void refine_the_partition(int v, int k, int b, long int *Blocks_coded, int &b_reduced, int verbose_level)
void rank_subset_recursion(int *set, int sz, int n, int a0, int &r)
void q_binomial(ring_theory::longinteger_object &a, int n, int k, int q, int verbose_level)
void print_int_matrix(std::ostream &ost, int *A, int m, int n)
void k2ij_lint(long int k, long int &i, long int &j, long int n)
void compute_incidence_matrix(int v, int b, int k, long int *Blocks_coded, int *&M, int verbose_level)
encoding of combinatorial object for use with nauty
void latex_TDA(std::ostream &ost, int nb_orbits, int *orbit_first, int *orbit_len, int *orbit, int verbose_level)
void compute_canonical_form(data_structures::bitvector *&Canonical_form, int *canonical_labeling, int verbose_level)
void latex_canonical_form(std::ostream &ost, data_structures::nauty_output *NO, int verbose_level)
void apply_canonical_labeling_and_get_flags(int *&Inc2, int *&Flags, int &nb_flags_counted, data_structures::nauty_output *NO)
void init_canonical_form(encoded_combinatorial_object *Enc, data_structures::nauty_output *NO, int verbose_level)
void compute_canonical_incma(int *canonical_labeling, int *&Incma_out, int verbose_level)
void latex_canonical_form_with_labels(std::ostream &ost, data_structures::nauty_output *NO, std::string *row_labels, std::string *col_labels, int verbose_level)
void latex_TDA_with_labels(std::ostream &ost, int nb_orbits, int *orbit_first, int *orbit_len, int *orbit, int verbose_level)
void canonical_form_given_canonical_labeling(int *canonical_labeling, data_structures::bitvector *&B, int verbose_level)
void incidence_matrix_projective_space_top_left(geometry::projective_space *P, int verbose_level)
void extended_incidence_matrix_projective_space_top_left(geometry::projective_space *P, int verbose_level)
void init_everything(int nb_rows, int nb_cols, int *Incma, int *partition, int verbose_level)
decomposition stack of a linear space or incidence geometry
void write(std::ofstream &aStream, std::string &label)
void write_mode_stack(std::ofstream &aStream, std::string &label)
void cut_off(geo_parameter &GP2, int w, int *&part_relabel, int *&part_length, int verbose_level)
int input_mode_stack(std::ifstream &aStream, int verbose_level)
void print_scheme_tex(std::ostream &ost, tdo_scheme_synthetic &G, int h)
int tdo_scheme_get_row_class_length_fused(tdo_scheme_synthetic &G, int h, int class_first, int class_len)
void append_to_entries(int a1, int a2, int a3, int a4)
int tdo_scheme_get_col_class_length_fused(tdo_scheme_synthetic &G, int h, int class_first, int class_len)
void init_tdo_scheme(tdo_scheme_synthetic &G, int verbose_level)
void write_mode_single(std::ofstream &aStream, std::string &label)
void cut_off_two_lines(geo_parameter &GP2, int *&part_relabel, int *&part_length, int verbose_level)
generate all solutions of the pentomino puzzle
void compute_image_function(data_structures::set_of_sets *S, int elt_idx, int gen_idx, int &idx_of_image, int verbose_level)
void turn_piece(int &h, int &r, int &t, int verbose_level)
void flip_piece(int &h, int &r, int &t, int verbose_level)
a class related to the class tdo_scheme
void solve_second_system_with_help(int verbose_level, int f_use_mckay_solver, int f_once, int *classes_len, int f_scale, int scaling, int *&line_types, int &nb_line_types, int *&distributions, int &nb_distributions, int cnt_second_system, solution_file_data *Sol)
Definition: tdo_data.cpp:373
void solve_second_system(int verbose_level, int f_use_mckay_solver, int f_once, int *classes_len, int f_scale, int scaling, int *&line_types, int &nb_line_types, int *&distributions, int &nb_distributions)
Definition: tdo_data.cpp:483
int solve_first_system(int verbose_level, int *&line_types, int &nb_line_types, int &line_types_allocated)
Definition: tdo_data.cpp:93
void solve_second_system_from_file(int verbose_level, int *classes_len, int f_scale, int scaling, int *&line_types, int &nb_line_types, int *&distributions, int &nb_distributions, std::string &solution_file_name)
Definition: tdo_data.cpp:402
void solve_second_system_omit(int verbose_level, int *classes_len, int *&line_types, int &nb_line_types, int *&distributions, int &nb_distributions, int omit)
Definition: tdo_data.cpp:150
refinement of the parameters of a linear space
void init(tdo_refinement_description *Descr, int verbose_level)
void do_all_column_refinements(std::string &label_in, std::ofstream &g, tdo_scheme_synthetic &G, int *line_types, int nb_line_types, int line_type_len, int *distributions, int nb_distributions, int &nb_tactical, int verbose_level)
void do_all_row_refinements(std::string &label_in, std::ofstream &g, tdo_scheme_synthetic &G, int *point_types, int nb_point_types, int point_type_len, int *distributions, int nb_distributions, int &nb_tactical, int verbose_level)
int do_column_refinement(int t, std::string &label_in, std::ofstream &g, tdo_scheme_synthetic &G, int *line_types, int nb_line_types, int line_type_len, int *distributions, int nb_distributions, int verbose_level)
void do_col_refinement(std::ofstream &g, tdo_scheme_synthetic &G, data_structures::partitionstack &P, int verbose_level)
void do_row_refinement(std::ofstream &g, tdo_scheme_synthetic &G, data_structures::partitionstack &P, int verbose_level)
void do_it(std::ofstream &g, int verbose_level)
int do_row_refinement(int t, std::string &label_in, std::ofstream &g, tdo_scheme_synthetic &G, int *point_types, int nb_point_types, int point_type_len, int *distributions, int nb_distributions, int verbose_level)
tactical decomposition of an incidence structure obtained by refinement
void init(encoded_combinatorial_object *Enc, int max_depth, int verbose_level)
canonical tactical decomposition of an incidence structure
int geometric_test_for_row_scheme(data_structures::partitionstack &P, int *point_types, int nb_point_types, int point_type_len, int *distributions, int nb_distributions, int f_omit1, int omit1, int verbose_level)
int td3_columns_setup_first_system(int verbose_level, int lambda3, int block_size, int lambda2, tdo_data &T, int r, data_structures::partitionstack &P, int &nb_vars, int &nb_eqns, int *&line_types, int &nb_line_types)
int td3_refine_rows(int verbose_level, int f_once, int lambda3, int block_size, int *&point_types, int &nb_point_types, int &point_type_len, int *&distributions, int &nb_distributions)
int tdo_rows_setup_second_system_eqns_joining(int verbose_level, tdo_data &T, data_structures::partitionstack &P, int f_omit, int omit, int f_dual_is_linear_space, int *point_types, int nb_point_types, int eqn_offset)
int td3_rows_counting_flags(int verbose_level, int lambda3, int block_size, int lambda2, int &S, tdo_data &T, int nb_vars, int Nb_vars, int *&point_types, int &nb_point_types, int eqn_offset)
int td3_refine_columns(int verbose_level, int f_once, int lambda3, int block_size, int f_scale, int scaling, int *&line_types, int &nb_line_types, int &line_type_len, int *&distributions, int &nb_distributions)
int td3_columns_counting_flags(int verbose_level, int lambda3, int block_size, int lambda2, int &S, tdo_data &T, int nb_vars, int Nb_vars, int *&line_types, int &nb_line_types, int eqn_offset)
int refine_columns(int verbose_level, int f_once, data_structures::partitionstack &P, int *&line_types, int &nb_line_types, int &line_type_len, int *&distributions, int &nb_distributions, int &cnt_second_system, solution_file_data *Sol, int f_omit1, int omit1, int f_omit, int omit, int f_D1_upper_bound_x0, int D1_upper_bound_x0, int f_use_mckay_solver, int f_use_packing_numbers)
int tdo_columns_setup_second_system_eqns_upper_bound(int verbose_level, tdo_data &T, data_structures::partitionstack &P, int f_omit, int omit, int *line_types, int nb_line_types, int eqn_start, int &nb_eqns_used)
void tdo_columns_setup_second_system_eqns_counting(int verbose_level, tdo_data &T, data_structures::partitionstack &P, int f_omit, int omit, int *line_types, int nb_line_types, int eqn_start)
int refine_cols_hard(data_structures::partitionstack &P, int verbose_level, int f_once, int *&line_types, int &nb_line_types, int &line_type_len, int *&distributions, int &nb_distributions, int &cnt_second_system, solution_file_data *Sol, int f_omit1, int omit1, int f_omit, int omit, int f_D1_upper_bound_x0, int D1_upper_bound_x0, int f_use_mckay_solver, int f_use_packing_numbers)
void row_refinement_L1_L2(data_structures::partitionstack &P, int f_omit, int omit, int &L1, int &L2, int verbose_level)
void get_column_split_partition(int verbose_level, data_structures::partitionstack &P)
int tdo_columns_setup_second_system_eqns_joining(int verbose_level, tdo_data &T, data_structures::partitionstack &P, int f_omit, int omit, int *line_types, int nb_line_types, int eqn_start)
int td3_rows_setup_second_system(int verbose_level, int lambda3, int block_size, int lambda2, tdo_data &T, int nb_vars, int &Nb_vars, int &Nb_eqns, int *&point_types, int &nb_point_types)
void column_refinement_L1_L2(data_structures::partitionstack &P, int f_omit, int omit, int &L1, int &L2, int verbose_level)
void print_scheme_tex_fancy(std::ostream &ost, int h, int f_label, std::string &label)
int td3_columns_setup_second_system(int verbose_level, int lambda3, int block_size, int lambda2, int f_scale, int scaling, tdo_data &T, int nb_vars, int &Nb_vars, int &Nb_eqns, int *&line_types, int &nb_line_types)
void get_row_split_partition(int verbose_level, data_structures::partitionstack &P)
int geometric_test_for_row_scheme_level_s(data_structures::partitionstack &P, int s, int *point_types, int nb_point_types, int point_type_len, int *distribution, int *non_zero_blocks, int nb_non_zero_blocks, int f_omit1, int omit1, int verbose_level)
int td3_rows_setup_first_system(int verbose_level, int lambda3, int block_size, int lambda2, tdo_data &T, int r, data_structures::partitionstack &P, int &nb_vars, int &nb_eqns, int *&point_types, int &nb_point_types)
int refine_rows_hard(data_structures::partitionstack &P, int verbose_level, int f_use_mckay, int f_once, int *&point_types, int &nb_point_types, int &point_type_len, int *&distributions, int &nb_distributions, int &cnt_second_system, int f_omit1, int omit1, int f_omit, int omit, int f_use_packing_numbers, int f_dual_is_linear_space)
void init_TDO(int *Part, int *Entries, int Row_level, int Col_level, int Extra_row_level, int Extra_col_level, int Lambda_level, int verbose_level)
int td3_columns_triples_same_class(int verbose_level, int lambda3, int block_size, tdo_data &T, int nb_vars, int Nb_vars, int *&line_types, int &nb_line_types, int eqn_offset)
int tdo_rows_setup_first_system(int verbose_level, tdo_data &T, int r, data_structures::partitionstack &P, int f_omit, int omit, int *&point_types, int &nb_point_types)
int tdo_rows_setup_second_system(int verbose_level, tdo_data &T, data_structures::partitionstack &P, int f_omit, int omit, int f_use_packing_numbers, int f_dual_is_linear_space, int *&point_types, int &nb_point_types)
int td3_columns_lambda3_joining_triples_2_1(int verbose_level, int lambda3, int block_size, int lambda2, tdo_data &T, int nb_vars, int Nb_vars, int *&line_types, int &nb_line_types, int eqn_offset)
int td3_columns_lambda3_joining_triples_1_1_1(int verbose_level, int lambda3, int block_size, int lambda2, tdo_data &T, int nb_vars, int Nb_vars, int *&line_types, int &nb_line_types, int eqn_offset)
int refine_rows_easy(int verbose_level, int *&point_types, int &nb_point_types, int &point_type_len, int *&distributions, int &nb_distributions, int &cnt_second_system)
void init_part_and_entries_int(int *part, int *entries, int verbose_level)
int tdo_columns_setup_first_system(int verbose_level, tdo_data &T, int r, data_structures::partitionstack &P, int f_omit, int omit, int *&line_types, int &nb_line_types)
int tdo_rows_setup_second_system_eqns_packing(int verbose_level, tdo_data &T, data_structures::partitionstack &P, int f_omit, int omit, int *point_types, int nb_point_types, int eqn_start, int &nb_eqns_used)
int refine_rows(int verbose_level, int f_use_mckay, int f_once, data_structures::partitionstack &P, int *&point_types, int &nb_point_types, int &point_type_len, int *&distributions, int &nb_distributions, int &cnt_second_system, solution_file_data *Sol, int f_omit1, int omit1, int f_omit2, int omit2, int f_use_packing_numbers, int f_dual_is_linear_space, int f_do_the_geometric_test)
int tdo_columns_setup_second_system(int verbose_level, tdo_data &T, data_structures::partitionstack &P, int f_omit, int omit, int f_use_packing_numbers, int *&line_types, int &nb_line_types)
void init_part_and_entries(int *part, int *entries, int verbose_level)
int tdo_rows_setup_second_system_eqns_counting(int verbose_level, tdo_data &T, data_structures::partitionstack &P, int f_omit, int omit, int *point_types, int nb_point_types, int eqn_offset)
void compute_whether_first_inc_must_be_moved(int *f_first_inc_must_be_moved, int verbose_level)
int td3_columns_lambda2_joining_pairs_from_different_classes(int verbose_level, int lambda3, int block_size, int lambda2, tdo_data &T, int nb_vars, int Nb_vars, int *&line_types, int &nb_line_types, int eqn_offset)
int td3_columns_pairs_same_class(int verbose_level, int lambda3, int block_size, int lambda2, tdo_data &T, int nb_vars, int Nb_vars, int *&line_types, int &nb_line_types, int eqn_offset)
compact storage of 0/1-data as bitvectors
classification of 0/1 matrices using canonical forms
input data for classification of geometric objects from the command line
data structure for set partitions following Jeffrey Leon
a statistical analysis of data consisting of single integers
decomposition of an incidence matrix
Definition: geometry.h:400
a combinatorial object for which a canonical form can be computed using Nauty
Definition: geometry.h:1487
projective space PG(n,q) of dimension n over Fq
Definition: geometry.h:1916
homogeneous polynomials of a given degree in a given number of variables over a finite field GF(q)
Definition: ring_theory.h:88
a class to represent arbitrary precision integers
Definition: ring_theory.h:366
diophantine systems of equations (i.e., linear systems over the integers)
Definition: solvers.h:209
#define NUMBER_OF_SCHEMES
#define NB_PIECES
the orbiter library for the classification of combinatorial objects