Orbiter 2022
Combinatorial Objects
large_set_was.cpp
Go to the documentation of this file.
1/*
2 * large_set_was.cpp
3 *
4 * Created on: May 26, 2021
5 * Author: betten
6 */
7
8
9
10
11
12#include "orbiter.h"
13
14using namespace std;
15
16namespace orbiter {
17namespace layer5_applications {
18namespace apps_combinatorics {
19
20
21
22
24{
25 Descr = NULL;
26
27 LS = NULL;
28
29 H_gens = NULL;
30
31 H_orbits = NULL;
32
33 N_gens = NULL;
34
35 N_orbits = NULL;
36
37 orbit_length = 0;
39 type_idx = 0;
40 Orbit1 = NULL;
41 Orbit2 = NULL;
42
43 A_on_orbits = NULL;
45
46
47 // used in do_normalizer_on_orbits_of_a_given_length_multiple_orbits::
48 PC = NULL;
49 Control = NULL;
50 Poset = NULL;
51
52 orbit_length2 = 0;
53 type_idx2 = 0;
54
56}
57
58
59
60
61
63{
64}
65
68 int verbose_level)
69{
70 int f_v = (verbose_level >= 1);
71
72 if (f_v) {
73 cout << "large_set_was::init" << endl;
74 }
75
76
79
80
81
83
84 if (f_v) {
85 cout << "design_activity::do_load_table before H_gens->init_from_data_with_go" << endl;
86 }
89 Descr->H_go,
90 verbose_level);
91 if (f_v) {
92 cout << "design_activity::do_load_table after H_gens->init_from_data_with_go" << endl;
93 }
94
95
96 if (f_v) {
97 cout << "large_set_was::init "
98 "computing orbits on reduced set of designs:" << endl;
99 }
100
101 if (!Descr->f_prefix) {
102 cout << "please use -prefix" << endl;
103 exit(1);
104 }
106 cout << "please use -selected_orbit_length" << endl;
107 exit(1);
108 }
109
110
111
113
115 H_gens,
116 FALSE /* f_load_save */,
117 Descr->prefix,
118 verbose_level);
119
120 // computes all orbits and classifies the orbits by their length
121
122
123
124 if (f_v) {
125 cout << "large_set_was::init "
126 "orbits of H on the set of designs are:" << endl;
128 }
129
130 //int prev_nb;
131
132 if (f_v) {
133 cout << "large_set_was::init after OoS->test_orbits_of_a_certain_length "
134 "the number of orbits before filtering is " << endl;
135 int type_idx;
136
138 cout << type_idx << " : " << H_orbits->Orbits_classified->Set_size[type_idx] << endl;
139 }
140 }
141
142 if (f_v) {
143 cout << "large_set_was::init before OoS->test_all_orbits_by_length" << endl;
144 }
147 this /* *test_function_data*/,
148 verbose_level);
149 if (f_v) {
150 cout << "large_set_was::init after OoS->test_all_orbits_by_length" << endl;
151 }
152
153
154 if (f_v) {
155 cout << "large_set_was::init after OoS->test_orbits_of_a_certain_length "
156 "the number of orbits after filtering is " << endl;
157 int type_idx;
158
160 cout << type_idx << " : " << H_orbits->Orbits_classified->Set_size[type_idx] << endl;
161 }
162
163 //int type_idx;
164
167 }
168
169 }
170
171
172 if (f_v) {
173 cout << "large_set_was::init done" << endl;
174 }
175}
176
177
178
179
181 int orbit_length,
182 int nb_of_orbits_to_choose,
184 int verbose_level)
185{
186 int f_v = (verbose_level >= 1);
187
188 if (f_v) {
189 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length, "
190 "orbit_length=" << orbit_length << " nb_of_orbits_to_choose=" << nb_of_orbits_to_choose << endl;
191 }
192 if (f_v) {
193 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length control=" << endl;
194 Control->print();
195 }
196
200
203
204 if (f_v) {
205 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length computing orbits "
206 "of normalizer on orbits of length " << orbit_length
207 << ", type_idx=" << type_idx
208 << ", number of orbits = " << H_orbits->Orbits_classified->Set_size[type_idx] << endl;
209 }
210
211
213
214 if (f_v) {
215 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length before H_gens->init_from_data_with_go" << endl;
216 }
219 Descr->N_go,
220 verbose_level);
221 if (f_v) {
222 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length after H_gens->init_from_data_with_go" << endl;
223 }
224
225
226 if (f_v) {
227 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length normalizer has order ";
229 cout << endl;
230 }
231
232
233
234
235 //action *A_on_orbits;
236 //action *A_on_orbits_restricted;
237
240 H_orbits->Sch /* H_orbits_on_spreads*/,
241 TRUE /*f_play_it_safe*/,
242 verbose_level - 1);
243
247 verbose_level);
248
249
250
251 if (nb_of_orbits_to_choose == 1) {
252
255 verbose_level);
256
257 }
258 else {
259
263 Control,
264 verbose_level);
265 }
266
267#if 0
270
272 A_on_orbits = NULL;
273
275 Orbit1 = NULL;
276
278 Orbit2 = NULL;
279#endif
280
281 if (f_v) {
282 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length "
283 "computing orbits of normalizer done" << endl;
284 }
285
286
287 if (f_v) {
288 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length done" << endl;
289 }
290
291}
292
294 int orbit_length,
295 int verbose_level)
296{
297 int f_v = (verbose_level >= 1);
298
299 if (f_v) {
300 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length_single_orbit, "
301 "orbit_length=" << orbit_length << endl;
302 }
303
304 groups::schreier *Sch;
305
306 if (f_v) {
307 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length before "
308 "compute_orbits_on_points for the restricted action "
309 "on the good orbits" << endl;
310 }
311
313 Sch, N_gens->gens, verbose_level - 1);
314
315 if (f_v) {
316 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length "
317 "the number of orbits of the normalizer on the "
318 "good orbits is " << Sch->nb_orbits << endl;
319 Sch->print_and_list_orbits_tex(cout);
320
321#if 0
322 cout << "printing orbits through Design_table_reduced_idx:" << endl;
324 cout, Design_table_reduced_idx);
325#endif
326 }
327
328 {
329 long int *Orbits_under_N;
331 string fname_out;
332 int i, a, l;
333
334
335 Orbits_under_N = NEW_lint(Sch->nb_orbits * 2);
336
337 fname_out.assign(Descr->prefix);
338 fname_out.append("_N_orbit_reps.csv");
339
340 for (i = 0; i < Sch->nb_orbits; i++) {
341 l = Sch->orbit_len[i];
342 a = Sch->orbit[Sch->orbit_first[i]];
343 Orbits_under_N[2 * i + 0] = a;
344 Orbits_under_N[2 * i + 1] = l;
345 }
346 Fio.lint_matrix_write_csv(fname_out, Orbits_under_N, Sch->nb_orbits, 2);
347
348 FREE_lint(Orbits_under_N);
349 }
350
351 FREE_OBJECT(Sch);
352
353 if (f_v) {
354 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length_single_orbit done" << endl;
355 }
356}
357
358
360 int orbit_length,
361 int nb_of_orbits_to_choose,
363 int verbose_level)
364{
365 int f_v = (verbose_level >= 1);
366
367 if (f_v) {
368 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits, "
369 "orbit_length=" << orbit_length << " nb_of_orbits_to_choose=" << nb_of_orbits_to_choose << endl;
370 }
371
372
373 if (f_v) {
374 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits before "
375 "compute_orbits_on_points for the restricted action "
376 "on the good orbits" << endl;
377 }
378
379
381
382#if 0
383 Control = NEW_OBJECT(poset_classification_control);
386#endif
387
388#if 0
389 if (Descr->f_poset_classification_control) {
390 Control = Descr->Control;
391 }
392 else {
393 cout << "please use option -poset_classification_control" << endl;
394 exit(1);
395 }
396#endif
397 if (f_v) {
398 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits control=" << endl;
399 Control->print();
400 }
401
402
404 LS->DC->A,
406 N_gens,
407 verbose_level);
408
409 if (f_v) {
410 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits before "
411 "Poset->add_testing_without_group" << endl;
412 }
415 this /* void *data */,
416 verbose_level);
417
418
419
420 if (f_v) {
421 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits "
422 "before Poset->orbits_on_k_sets_compute, nb_of_orbits_to_choose=" << nb_of_orbits_to_choose << endl;
423 }
425 Control,
427 verbose_level);
428 if (f_v) {
429 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits "
430 "after Poset->orbits_on_k_sets_compute" << endl;
431 }
432
433 //FREE_OBJECT(Control);
434
435 if (f_v) {
436 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits done" << endl;
437 }
438
439
440 if (f_v) {
441 cout << "large_set_was::do_normalizer_on_orbits_of_a_given_length_multiple_orbits done" << endl;
442 }
443}
444
445
446
447
449 std::string &fname, int orbit_length,
450 int verbose_level)
451{
452 int f_v = (verbose_level >= 1);
453
454 if (f_v) {
455 cout << "large_set_was::create_graph_on_orbits_of_length" << endl;
456 }
457
459
461 CG,
462 fname,
465 FALSE /*f_has_user_data*/, NULL /* int *user_data */, 0 /* user_data_size */,
466 TRUE /* f_has_colors */, LS->nb_colors, LS->design_color_table,
468 this /* *test_function_data */,
469 verbose_level);
470
471 if (f_v) {
472 cout << "large_set_classify::process_starter_case "
473 "after OoS->create_graph_on_orbits_of_a_certain_length" << endl;
474 }
475 if (f_v) {
476 cout << "large_set_classify::process_starter_case "
477 "before CG->save" << endl;
478 }
479
480 CG->save(fname, verbose_level);
481
482 FREE_OBJECT(CG);
483
484 if (f_v) {
485 cout << "large_set_was::create_graph_on_orbits_of_length done" << endl;
486 }
487}
488
490 std::string &fname_mask, int orbit_length2,
491 int verbose_level)
492{
493 int f_v = (verbose_level >= 1);
494
495 if (f_v) {
496 cout << "large_set_was::create_graph_on_orbits_of_length_based_on_N_orbits, "
497 "orbit_length2=" << orbit_length2 << endl;
498 }
499
502
503 int nb_N_orbits;
504 int idx_N;
505
506 long int *Orbit1_idx;
507 long int *extracted_set;
508 int extracted_set_size;
509
510 Orbit1_idx = NEW_lint(nb_of_orbits_to_choose);
511
512 extracted_set_size = nb_of_orbits_to_choose * orbit_length;
513 extracted_set = NEW_lint(extracted_set_size);
514
516
517 if (f_v) {
518 cout << "large_set_was::create_graph_on_orbits_of_length_based_on_N_orbits, "
519 "nb_N_orbits = " << nb_N_orbits << endl;
520 }
521
522 for (idx_N = nb_N_orbits - 1; idx_N >= 0; idx_N--) {
523
524 if (idx_N != 3239) {
525 continue;
526 }
527
528
529 if (f_v) {
530 cout << "large_set_was::create_graph_on_orbits_of_length_based_on_N_orbits, "
531 "idx_N = " << idx_N << " / " << nb_N_orbits << endl;
532 }
533
534 PC->get_set_by_level(nb_of_orbits_to_choose, idx_N, Orbit1_idx);
535
536
540 Orbit1_idx,
541 extracted_set,
542 verbose_level);
543
544
545 char str[1000];
546
547 sprintf(str, fname_mask.c_str(), idx_N);
548 std::string fname;
549
550 fname.assign(str);
551 if (f_v) {
552 cout << "large_set_was::create_graph_on_orbits_of_length_based_on_N_orbits, "
553 "fname = " << fname << endl;
554 cout << "large_set_was::create_graph_on_orbits_of_length_based_on_N_orbits, "
555 "extracted set = ";
556 Lint_vec_print(cout, extracted_set, extracted_set_size);
557 cout << endl;
558 }
559
561
562
564 CG,
565 fname,
566 extracted_set /*filter_by_set*/,
567 extracted_set_size /*filter_by_set_size*/,
569 type_idx2,
570 TRUE /*f_has_user_data*/, extracted_set /* long int *user_data */, extracted_set_size /* user_data_size */,
571 TRUE /* f_has_colors */, LS->nb_colors, LS->design_color_table,
573 this /* *test_function_data */,
574 verbose_level);
575
576
577 if (f_v) {
578 cout << "large_set_classify::create_graph_on_orbits_of_length_based_on_N_orbits "
579 "after OoS->create_graph_on_orbits_of_a_certain_length" << endl;
580 }
581 if (f_v) {
582 cout << "large_set_classify::create_graph_on_orbits_of_length_based_on_N_orbits "
583 "before CG->save" << endl;
584 }
585
586 CG->save(fname, verbose_level);
587
588 FREE_OBJECT(CG);
589 }
590
591 if (f_v) {
592 cout << "large_set_was::create_graph_on_orbits_of_length_based_on_N_orbits done" << endl;
593 }
594}
595
597 std::string &solution_file_name,
598 long int *starter_set,
599 int starter_set_sz,
600 int orbit_length,
601 int verbose_level)
602{
603 int f_v = (verbose_level >= 1);
604
605 if (f_v) {
606 cout << "large_set_was::read_solution_file" << endl;
607 }
608
609 long int *Large_sets;
610 int nb_large_sets;
611 long int *Packings_explicit;
612 int Sz;
613
614
615 if (f_v) {
616 cout << "large_set_was::read_solution_file "
617 "trying to read solution file " << solution_file_name << endl;
618 }
619 int i, j, a, b, l, h;
620
622 int nb_solutions;
623 int *Solutions;
624 int solution_size;
625
627 nb_solutions, Solutions, solution_size,
628 verbose_level);
629 cout << "Read the following solutions from file:" << endl;
630 if (nb_solutions < 100) {
631 Int_matrix_print(Solutions, nb_solutions, solution_size);
632 }
633 else {
634 cout << "too large to print" << endl;
635 }
636 cout << "Number of solutions = " << nb_solutions << endl;
637 cout << "solution_size = " << solution_size << endl;
638
639 int sz = starter_set_sz + solution_size * orbit_length;
640
641 if (sz != LS->size_of_large_set) {
642 cout << "large_set_was::read_solution_file sz != LS->size_of_large_set" << endl;
643 exit(1);
644 }
645
646
647
648 nb_large_sets = nb_solutions;
649 Large_sets = NEW_lint(nb_solutions * sz);
650 for (i = 0; i < nb_solutions; i++) {
651 Lint_vec_copy(starter_set, Large_sets + i * sz, starter_set_sz);
652 for (j = 0; j < solution_size; j++) {
653#if 0
654 a = Solutions[i * solution_size + j];
656#else
657 b = Solutions[i * solution_size + j];
658 // the labels in the graph are set according to
659 // H_orbits->Orbits_classified->Sets[selected_type_idx][]
660 //b = H_orbits->Orbits_classified->Sets[selected_type_idx][a];
661#endif
663 Large_sets + i * sz + starter_set_sz + j * orbit_length,
664 l, 0 /* verbose_level*/);
665 if (l != orbit_length) {
666 cout << "large_set_was::read_solution_file l != orbit_length" << endl;
667 exit(1);
668 }
669 }
670 for (j = 0; j < solution_size * orbit_length; j++) {
671 a = Large_sets[i * sz + starter_set_sz + j];
672 //b = Design_table_reduced_idx[a];
673 b = a;
674 Large_sets[i * sz + starter_set_sz + j] = b;
675 }
676 }
677 {
679 string fname_out;
681
682 fname_out.assign(solution_file_name);
683 ST.replace_extension_with(fname_out, "_packings_design_indices.csv");
684
685
686 Fio.lint_matrix_write_csv(fname_out, Large_sets, nb_solutions, sz);
687 }
688 Sz = sz * LS->design_size;
689
691
692 Packings_explicit = NEW_lint(nb_solutions * Sz);
693 for (i = 0; i < nb_solutions; i++) {
694 for (j = 0; j < sz; j++) {
695 a = Large_sets[i * sz + j];
696 for (h = 0; h < LS->design_size; h++) {
697 b = LS->Design_table->the_table[a * LS->design_size + h];
698 Packings_explicit[i * Sz + j * LS->design_size + h] = b;
699 }
700 }
701 if (!Combi.is_permutation_lint(Packings_explicit + i * Sz, Sz)) {
702 cout << "error: the packing does not pass the permutation test" << endl;
703 exit(1);
704 }
705 }
706
707 if (f_v) {
708 cout << "all packings pass the permutation test" << endl;
709 }
710
711 {
713 string fname_out;
715
716 fname_out.assign(solution_file_name);
717 ST.replace_extension_with(fname_out, "_packings_explicit.csv");
718
719 Fio.lint_matrix_write_csv(fname_out, Packings_explicit, nb_solutions, Sz);
720 }
721 FREE_lint(Large_sets);
722 FREE_lint(Packings_explicit);
723
724
725 if (f_v) {
726 cout << "large_set_was::read_solution_file done" << endl;
727 }
728
729}
730
732 long int *candidates, int nb_candidates,
733 long int *good_candidates, int &nb_good_candidates,
734 int verbose_level)
735{
736 int f_v = (verbose_level >= 1);
737 int f_vv = (verbose_level >= 2);
738 int j;
739 int f_OK;
740
741 if (f_v) {
742 cout << "large_set_was::normalizer_orbits_early_test_func checking set ";
743 Lint_vec_print(cout, S, len);
744 cout << endl;
745 cout << "candidate set of size "
746 << nb_candidates << ":" << endl;
747 Lint_vec_print(cout, candidates, nb_candidates);
748 cout << endl;
749 }
750
751
752 if (len == 0) {
753 Lint_vec_copy(candidates, good_candidates, nb_candidates);
754 nb_good_candidates = nb_candidates;
755 }
756 else {
757 nb_good_candidates = 0;
758
759 if (f_vv) {
760 cout << "large_set_was::normalizer_orbits_early_test_func before testing" << endl;
761 }
762 for (j = 0; j < nb_candidates; j++) {
763
764 S[len] = candidates[j];
765
766 f_OK = normalizer_orbits_check_conditions(S, len + 1, verbose_level);
767 if (f_vv) {
768 cout << "large_set_was::normalizer_orbits_early_test_func "
769 "testing " << j << " / "
770 << nb_candidates << endl;
771 }
772
773 if (f_OK) {
774 good_candidates[nb_good_candidates++] = candidates[j];
775 }
776 } // next j
777 } // else
778}
779
780int large_set_was::normalizer_orbits_check_conditions(long int *S, int len, int verbose_level)
781{
782 int f_v = (verbose_level >= 1);
783 int idx, i;
784 long int a, b;
786
787 if (f_v) {
788 cout << "large_set_was::normalizer_orbits_check_conditions "
789 "checking set ";
790 Lint_vec_print(cout, S, len);
791 cout << endl;
792 //cout << "offset=" << offset << endl;
793 }
794
795 b = S[len - 1];
796 if (Sorting.lint_vec_search_linear(S, len - 1, b, idx)) {
797 if (f_v) {
798 cout << "large_set_was::normalizer_orbits_check_conditions "
799 "not OK, "
800 "repeat entry" << endl;
801 }
802 return FALSE;
803 }
804
805 for (i = 0; i < len - 1; i++) {
806 a = S[i];
807
810 type_idx,
811 a, b,
812 Orbit1,
813 Orbit2,
815 this /* test_function_data */,
816 verbose_level)) {
817 return FALSE;
818 }
819 }
820 return TRUE;
821}
822
823
824
825// #############################################################################
826// global functions:
827// #############################################################################
828
829
831 long int *candidates, int nb_candidates,
832 long int *good_candidates, int &nb_good_candidates,
833 void *data, int verbose_level)
834{
835 large_set_was *LSW = (large_set_was *) data;
836 int f_v = (verbose_level >= 1);
837
838 if (f_v) {
839 cout << "large_set_was_normalizer_orbits_early_test_func_callback for set ";
840 Lint_vec_print(cout, S, len);
841 cout << endl;
842 }
844 candidates, nb_candidates,
845 good_candidates, nb_good_candidates,
846 verbose_level - 2);
847 if (f_v) {
848 cout << "large_set_was_normalizer_orbits_early_test_func_callback done" << endl;
849 }
850}
851
852
853
854
855
856// globals:
857
858int large_set_was_design_test_orbit(long int *orbit, int orbit_length,
859 void *extra_data)
860{
861 large_set_was *LSW = (large_set_was *) extra_data;
862 int ret = FALSE;
863
864 ret = LSW->LS->Design_table->test_set_within_itself(orbit, orbit_length);
865
866 return ret;
867}
868
869int large_set_was_classify_test_pair_of_orbits(long int *orbit1, int orbit_length1,
870 long int *orbit2, int orbit_length2, void *extra_data)
871{
872 large_set_was *LSW = (large_set_was *) extra_data;
873 int ret = FALSE;
874
875 ret = LSW->LS->Design_table->test_between_two_sets(orbit1, orbit_length1,
876 orbit2, orbit_length2);
877
878 return ret;
879}
880
881
882
883
884
885
886
887}}}
a collection of functions related to sorted vectors
int lint_vec_search_linear(long int *v, int len, long int a, int &idx)
Definition: sorting.cpp:699
functions related to strings and character arrays
void replace_extension_with(char *p, const char *new_ext)
void save(std::string &fname, int verbose_level)
void read_solutions_from_file_and_get_solution_size(std::string &fname, int &nb_solutions, int *&Solutions, int &solution_size, int verbose_level)
Definition: file_io.cpp:831
void lint_matrix_write_csv(std::string &fname, long int *M, int m, int n)
Definition: file_io.cpp:1323
a permutation group in a fixed action.
Definition: actions.h:99
action * restricted_action(long int *points, int nb_points, int verbose_level)
void induced_action_on_orbits(action *old_action, groups::schreier *Sch, int f_play_it_safe, int verbose_level)
void compute_orbits_on_points(groups::schreier *&Sch, data_structures_groups::vector_ge *gens, int verbose_level)
Definition: action.cpp:2519
compute orbits of a group in a given action; allows file io
Definition: groups.h:492
void extract_orbits_using_classification(int orbit_length, int nb_orbits, long int *orbits_idx, long int *extracted_set, int verbose_level)
void create_graph_on_orbits_of_a_certain_length(graph_theory::colored_graph *&CG, std::string &fname, int orbit_length, int &type_idx, int f_has_user_data, long int *user_data, int user_data_size, int f_has_colors, int number_colors, int *color_table, int(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, int verbose_level)
void init(actions::action *A, strong_generators *SG, int f_load_save, std::string &prefix, int verbose_level)
void test_all_orbits_by_length(int(*test_function)(long int *orbit, int orbit_length, void *data), void *test_function_data, int verbose_level)
void create_graph_on_orbits_of_a_certain_length_after_filtering(graph_theory::colored_graph *&CG, std::string &fname, long int *filter_by_set, int filter_by_set_size, int orbit_length, int &type_idx, int f_has_user_data, long int *user_data, int user_data_size, int f_has_colors, int number_colors, int *color_table, int(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, int verbose_level)
int test_pair_of_orbits_of_a_equal_length(int orbit_length, int type_idx, int idx1, int idx2, long int *Orbit1, long int *Orbit2, int(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, int verbose_level)
data_structures::set_of_sets * Orbits_classified
Definition: groups.h:506
Schreier trees for orbits of groups on points.
Definition: groups.h:839
void get_orbit(int orbit_idx, long int *set, int &len, int verbose_level)
Definition: schreier.cpp:2598
void print_and_list_orbits_using_labels(std::ostream &ost, long int *labels)
a strong generating set for a permutation group with respect to a fixed action
Definition: groups.h:1703
void init_from_data_with_go(actions::action *A, std::string &generators_data, std::string &go_text, int verbose_level)
data_structures_groups::vector_ge * gens
Definition: groups.h:1708
to control the behavior of the poset classification algorithm
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)
poset_classification * orbits_on_k_sets_compute(poset_classification_control *Control, int k, int verbose_level)
int test_between_two_sets(long int *set_of_designs_by_index1, int set_size1, long int *set_of_designs_by_index2, int set_size2)
int test_set_within_itself(long int *set_of_designs_by_index, int set_size)
command line description of tasks for large sets with assumed symmetry
classification of large sets of designs with assumed symmetry
poset_classification::poset_with_group_action * Poset
void do_normalizer_on_orbits_of_a_given_length_single_orbit(int orbit_length, int verbose_level)
void init(large_set_was_description *Descr, large_set_classify *LS, int verbose_level)
void create_graph_on_orbits_of_length(std::string &fname, int orbit_length, int verbose_level)
poset_classification::poset_classification_control * Control
int normalizer_orbits_check_conditions(long int *S, int len, int verbose_level)
void read_solution_file(std::string &solution_file_name, long int *starter_set, int starter_set_sz, int orbit_length, int verbose_level)
void create_graph_on_orbits_of_length_based_on_N_orbits(std::string &fname_mask, int orbit_length2, int verbose_level)
void do_normalizer_on_orbits_of_a_given_length_multiple_orbits(int orbit_length, int nb_of_orbits_to_choose, poset_classification::poset_classification_control *Control, int verbose_level)
void do_normalizer_on_orbits_of_a_given_length(int orbit_length, int nb_of_orbits_to_choose, poset_classification::poset_classification_control *Control, int verbose_level)
void normalizer_orbits_early_test_func(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
#define Lint_vec_copy(A, B, C)
Definition: foundations.h:694
#define NEW_OBJECT(type)
Definition: foundations.h:638
#define Lint_vec_print(A, B, C)
Definition: foundations.h:686
#define FREE_OBJECT(p)
Definition: foundations.h:651
#define Int_matrix_print(A, B, C)
Definition: foundations.h:707
#define TRUE
Definition: foundations.h:231
#define FALSE
Definition: foundations.h:234
#define FREE_lint(p)
Definition: foundations.h:642
#define NEW_lint(n)
Definition: foundations.h:628
void large_set_was_normalizer_orbits_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)
int large_set_was_design_test_orbit(long int *orbit, int orbit_length, void *extra_data)
int large_set_was_classify_test_pair_of_orbits(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *extra_data)
the orbiter library for the classification of combinatorial objects