Orbiter 2022
Combinatorial Objects
packing_was_fixpoints.cpp
Go to the documentation of this file.
1/*
2 * packing_was_fixpoints.cpp
3 *
4 * Created on: Jun 30, 2020
5 * Author: betten
6 */
7
8
9#include "orbiter.h"
10
11using namespace std;
12
13namespace orbiter {
14namespace layer5_applications {
15namespace packings {
16
17static void packing_was_fixpoints_early_test_function_fp_cliques(long int *S, int len,
18 long int *candidates, int nb_candidates,
19 long int *good_candidates, int &nb_good_candidates,
20 void *data, int verbose_level);
21
22
23
25{
26 PW = NULL;
27
28 //fname_fixp_graph;
29 //fname_fixp_graph_cliques;
30 fixpoints_idx = 0;
31 A_on_fixpoints = NULL;
32
33 fixpoint_graph = NULL;
37 Cliques = NULL;
38 nb_cliques = 0;
39 //fname_fixp_graph_cliques_orbiter;
40 Fixp_cliques = NULL;
41
42}
43
45{
46}
47
49 int fixpoint_clique_size,
51 int verbose_level)
52{
53 int f_v = (verbose_level >= 1);
54
55 if (f_v) {
56 cout << "packing_was_fixpoints::init fixpoint_clique_size = " << fixpoint_clique_size << endl;
57 }
58
61
62
64
65
67 if (fixpoints_idx >= 0) {
68 if (f_v) {
69 cout << "packing_was_fixpoints::init_spreads "
70 "before create_graph_on_fixpoints" << endl;
71 }
72 create_graph_on_fixpoints(verbose_level);
73 if (f_v) {
74 cout << "packing_was_fixpoints::init_spreads "
75 "after create_graph_on_fixpoints" << endl;
76 }
77 if (f_v) {
78 cout << "packing_was_fixpoints::init_spreads "
79 "before action_on_fixpoints" << endl;
80 }
81 action_on_fixpoints(verbose_level);
82 if (f_v) {
83 cout << "packing_was_fixpoints::init_spreads "
84 "after action_on_fixpoints" << endl;
85 }
86 }
87 else {
88 if (f_v) {
89 cout << "packing_was_fixpoints::init_spreads "
90 "there are no fixed spreads" << endl;
91 }
92 }
93
94
95 //if (fixpoint_clique_size) {
96
97 if (f_v) {
98 cout << "packing_was_fixpoints::init_spreads "
99 "before compute_cliques_on_fixpoint_graph" << endl;
100 }
101
104 Control,
105 verbose_level);
106
107 if (f_v) {
108 cout << "packing_was_fixpoints::init_spreads "
109 "after compute_cliques_on_fixpoint_graph" << endl;
110 }
111 //}
112
113
114 if (f_v) {
115 cout << "packing_was_fixpoints::init done" << endl;
116 }
117}
118
119void packing_was_fixpoints::setup_file_names(int clique_size, int verbose_level)
120{
121 int f_v = (verbose_level >= 1);
122
123 if (f_v) {
124 cout << "packing_was_fixpoints::setup_file_names" << endl;
125 }
126
127
129 fname_fixp_graph.append("_fixp_graph.bin");
130
131
132 if (f_v) {
133 cout << "packing_was_fixpoints::setup_file_names fname_fixp_graph=" << fname_fixp_graph << endl;
134 }
135
136
138 fname_fixp_graph_cliques.append("_fixp_cliques.csv");
139
140
141 if (f_v) {
142 cout << "packing_was_fixpoints::setup_file_names fname_fixp_graph_cliques=" << fname_fixp_graph_cliques << endl;
143 }
144
145
146 char str[1000];
147
148
149
151 sprintf(str, "_fixp_cliques_lvl_%d", clique_size);
153
154
155 if (f_v) {
156 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph_from_scratch "
157 "fname_fixp_graph_cliques_orbiter=" << fname_fixpoint_cliques_orbiter << endl;
158 }
159
160 if (f_v) {
161 cout << "packing_was_fixpoints::setup_file_names done" << endl;
162 }
163
164}
165
167{
168 int f_v = (verbose_level >= 1);
169
170 if (f_v) {
171 cout << "packing_was::create_graph_on_fixpoints" << endl;
172 }
173
175 if (fixpoints_idx == -1) {
176 cout << "packing_was::create_graph_on_fixpoints "
177 "we don't have any orbits of length 1" << endl;
178 exit(1);
179 }
180
183 1 /* orbit_length */,
184 FALSE /* f_has_user_data */, NULL /* int *user_data */,
185 0 /* int user_data_size */,
186 verbose_level);
187
188 if (f_v) {
189 cout << "packing_was::create_graph_on_fixpoints done" << endl;
190 }
191}
192
194{
195 int f_v = (verbose_level >= 1);
196
197 if (f_v) {
198 cout << "packing_was_fixpoints::action_on_fixpoints "
199 "creating action on fixpoints" << endl;
200 }
201
203 if (fixpoints_idx == -1) {
204 cout << "packing_was_fixpoints::action_on_fixpoints "
205 "we don't have any orbits of length 1" << endl;
206 exit(1);
207 }
208 if (f_v) {
209 cout << "fixpoints_idx = " << fixpoints_idx << endl;
210 cout << "Number of fixedpoints = "
212 }
213
214 A_on_fixpoints = PW->restricted_action(1 /* orbit_length */, verbose_level);
215
216 if (f_v) {
217 cout << "packing_was_fixpoints::action_on_fixpoints "
218 "action on fixpoints has been created" << endl;
219 cout << "packing_was_fixpoints::action_on_fixpoints "
220 "this action has degree " << A_on_fixpoints->degree << endl;
221 }
222
223
224
225 if (f_v) {
226 cout << "packing_was_fixpoints::action_on_fixpoints done" << endl;
227 }
228}
229
231 int clique_size,
233 int verbose_level)
234// initializes the orbit transversal Fixp_cliques
235// initializes Cliques[nb_cliques * clique_size]
236// (either by computing it or reading it from file)
237{
238 int f_v = (verbose_level >= 1);
239 string my_prefix;
242
243 if (f_v) {
244 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph "
245 "fixpoint_clique_size=" << clique_size << endl;
246 }
247
248 fixpoint_clique_size = clique_size;
249
250 if (fixpoint_clique_size == 0) {
251 if (f_v) {
252 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph "
253 "fixpoint_clique_size=" << fixpoint_clique_size << " is zero, so we return" << endl;
254 }
255 return;
256 }
257 //PW->Descr->clique_size = clique_size;
258
259
261 fixpoint_graph->load(fname_fixp_graph, verbose_level);
262
263 my_prefix.assign(fname_fixp_graph);
264 ST.chop_off_extension(my_prefix);
265 my_prefix.append("_cliques");
266
267 if (Fio.file_size(fname_fixp_graph_cliques) > 0) {
268 if (f_v) {
269 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph "
270 "The file " << fname_fixp_graph_cliques << " exists" << endl;
271 }
273 Cliques, nb_cliques, clique_size, verbose_level);
274 if (f_v) {
275 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph "
276 "The file " << fname_fixp_graph_cliques << " contains " << nb_cliques << " cliques" << endl;
277 }
278 if (nb_cliques == 0) {
279 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph nb_cliques == 0" << endl;
280 exit(1);
281 }
282 }
283 else {
284 if (f_v) {
285 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph "
286 "The file " << fname_fixp_graph_cliques
287 << " does not exist, we compute it" << endl;
288 }
289
290 if (f_v) {
291 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph "
292 "before compute_cliques_on_fixpoint_graph_from_scratch" << endl;
293 }
294
295 compute_cliques_on_fixpoint_graph_from_scratch(clique_size, Control, verbose_level);
296
297 if (f_v) {
298 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph "
299 "after compute_cliques_on_fixpoint_graph_from_scratch" << endl;
300 }
301 }
302
304
305 if (f_v) {
306 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph "
307 "before Fixp_cliques->read_from_file, "
308 "file=" << fname_fixpoint_cliques_orbiter << endl;
309 }
311 PW->P->T->A, A_on_fixpoints,
312 fname_fixpoint_cliques_orbiter, verbose_level);
313 if (f_v) {
314 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph "
315 "after Fixp_cliques->read_from_file" << endl;
316 }
317
318
320 long int *Ago;
321
322
323 T = Fixp_cliques->get_ago_distribution(Ago, verbose_level);
324
325 my_prefix.assign(fname_fixp_graph);
326 ST.chop_off_extension(my_prefix);
327 my_prefix.append("_cliques_by_ago_");
328
329
331 T->save_classes_individually(my_prefix);
332 }
333
334
335 FREE_lint(Ago);
336 FREE_OBJECT(T);
337
338 if (f_v) {
339 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph "
340 "computing Iso_type_invariant" << endl;
341 }
342 int *Partial_packings;
343 int *Iso_type_invariant;
344 int i, j, a, b;
345
346
347 Partial_packings = NEW_int(nb_cliques * clique_size);
348 for (i = 0; i < nb_cliques; i++) {
349 for (j = 0; j < clique_size; j++) {
350 a = Cliques[i * clique_size + j];
351 b = fixpoint_to_reduced_spread(a, 0 /* verbose_level */);
352 Partial_packings[i * clique_size + j] = b;
353 }
354 }
356 Partial_packings, nb_cliques, clique_size,
357 Iso_type_invariant,
358 verbose_level);
359
361
362
363 C.init(Iso_type_invariant, nb_cliques,
365 verbose_level);
366 C.print();
367
368
369 my_prefix.assign(fname_fixp_graph);
370 ST.chop_off_extension(my_prefix);
371 my_prefix.append("_cliques_by_type_");
372
373
375 C.save_classes_individually(my_prefix, verbose_level);
376 }
377
378 if (f_v) {
379 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph "
380 "done" << endl;
381 }
382}
383
385 int clique_size,
387 int verbose_level)
388// compute cliques on fixpoint graph using A_on_fixpoints
389// orbit representatives will be stored in Cliques[nb_cliques * clique_size]
390{
391 int f_v = (verbose_level >= 1);
393
394 if (f_v) {
395 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph_from_scratch "
396 "clique_size=" << clique_size << endl;
397 }
398
399
400
401 if (f_v) {
402 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph_from_scratch "
403 "before compute_orbits_on_subsets" << endl;
404 }
405
408 PW->P->T->A, A_on_fixpoints,
409 PW->N_gens,
410 verbose_level);
411
412 if (f_v) {
413 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph_from_scratch "
414 "before "
415 "Poset->add_testing_without_group" << endl;
416 }
418 packing_was_fixpoints_early_test_function_fp_cliques,
419 this /* void *data */,
420 verbose_level);
421
423
424
426 clique_size /* int target_depth */,
427 Control,
429 verbose_level);
430
431 if (f_v) {
432 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph_from_scratch "
433 "after compute_orbits_on_subsets" << endl;
434 }
435
436
438 nb_cliques, Cliques, verbose_level);
439
440 if (f_v) {
441 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph_from_scratch "
442 "We found " << nb_cliques << " orbits of cliques of size "
443 << clique_size << " in the fixed point graph:" << endl;
444 if (nb_cliques > 10) {
445 cout << "too big to print" << endl;
446 }
447 else {
448 Lint_matrix_print(Cliques, nb_cliques, clique_size);
449
451 }
452 }
453
455 Cliques, nb_cliques, clique_size);
456
457 if (f_v) {
458 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph_from_scratch "
459 "Written file " << fname_fixp_graph_cliques
460 << " of size " << Fio.file_size(fname_fixp_graph_cliques) << endl;
461 }
462
463 if (f_v) {
464 cout << "packing_was_fixpoints::compute_cliques_on_fixpoint_graph_from_scratch "
465 "done" << endl;
466 }
467}
468
470{
471 int f_v = (verbose_level >= 1);
472
473 if (f_v) {
474 cout << "packing_was_fixpoints::process_long_orbits" << endl;
475 }
476
477
479
481
482 if (f_v) {
483 cout << "packing_was_fixpoints::process_long_orbits before L->init" << endl;
484 }
485
486 L->init(this, PW->Descr->Long_Orbits_Descr, verbose_level - 2);
487
488
489
490
491 if (f_v) {
492 cout << "packing_was_fixpoints::process_long_orbits after L->init" << endl;
493 }
494
495
496 FREE_OBJECT(L);
497
498
499 if (f_v) {
500 cout << "packing_was_fixpoints::process_long_orbits done" << endl;
501 }
502}
503
504
505
507{
508
509 if (Cliques == NULL) {
510 cout << "packing_was_fixpoints::clique_by_index Cliques == NULL" << endl;
511 exit(1);
512 }
513 if (idx >= nb_cliques) {
514 cout << "packing_was_fixpoints::clique_by_index idx >= nb_cliques" << endl;
515 exit(1);
516 }
517 return Cliques + idx * fixpoint_clique_size;
518}
519
521{
522 if (Fixp_cliques == NULL) {
523 cout << "packing_was_fixpoints::get_stabilizer Fixp_cliques == NULL" << endl;
524 exit(1);
525 }
526 if (idx >= nb_cliques) {
527 cout << "packing_was_fixpoints::get_stabilizer idx >= nb_cliques" << endl;
528 exit(1);
529 }
530
531 return Fixp_cliques->Reps[idx].Strong_gens;
532}
533
534void packing_was_fixpoints::print_packing(long int *packing, int sz, int verbose_level)
535{
536 int f_v = (verbose_level >= 1);
537
538 if (f_v) {
539 cout << "packing_was_fixpoints::print_packing" << endl;
540 }
541
542 cout << "packing: ";
543 Lint_vec_print(cout, packing, sz);
544 cout << endl;
545
546 long int a;
547 int b;
548 int i, j;
549 int *Lines;
550 int *Orbit_number;
551
552 Lines = NEW_int(sz * PW->P->spread_size);
553 Orbit_number = NEW_int(sz * PW->P->spread_size);
554
555 for (i = 0; i < sz; i++) {
556 a = packing[i];
557 for (j = 0; j < PW->P->spread_size; j++) {
559 Lines[i * PW->P->spread_size + j] = b;
560 }
561 }
562
563 cout << "Lines in the packing:" << endl;
564 Int_matrix_print(Lines, sz, PW->P->spread_size);
565
566
568
569
570 if (Combi.is_permutation(Lines, sz * PW->P->spread_size)) {
571 cout << "The packing passes the permutation test" << endl;
572 }
573 else {
574 cout << "The packing is wrong." << endl;
575 exit(1);
576 }
577
578 int orbit_idx1, orbit_pos1;
579
580
581 for (i = 0; i < sz; i++) {
582 for (j = 0; j < PW->P->spread_size; j++) {
583 b = Lines[i * PW->P->spread_size + j];
584 PW->Line_orbits_under_H->get_orbit_number_and_position(b, orbit_idx1, orbit_pos1, verbose_level);
585 Orbit_number[i * PW->P->spread_size + j] = orbit_idx1;
586 }
587 }
588
589 cout << "Orbit_number in the packing:" << endl;
590 Int_matrix_print(Orbit_number, sz, PW->P->spread_size);
591
592
593 for (i = 0; i < sz; i++) {
595
596 T.init(Orbit_number + i * PW->P->spread_size, PW->P->spread_size, TRUE, 0);
597 cout << i << " : ";
598 T.print_naked(TRUE /* f_backwards*/);
599 cout << endl;
600 }
601
602 if (f_v) {
603 cout << "packing_was_fixpoints::print_packing done" << endl;
604 }
605}
606
607void packing_was_fixpoints::report(int verbose_level)
608{
610
611 {
612 char fname[1000];
613 char title[1000];
614 char author[1000];
615 //int f_with_stabilizers = TRUE;
616
617 sprintf(title, "Packings in PG(3,%d) ", PW->P->q);
618 sprintf(author, "Orbiter");
619 sprintf(fname, "Packings_was_fixp_q%d.tex", PW->P->q);
620
621 {
622 ofstream fp(fname);
624
625 //latex_head_easy(fp);
626 Li.head(fp,
627 FALSE /* f_book */,
628 TRUE /* f_title */,
629 title, author,
630 FALSE /*f_toc */,
631 FALSE /* f_landscape */,
632 FALSE /* f_12pt */,
633 TRUE /*f_enlarged_page */,
634 TRUE /* f_pagenumbers*/,
635 NULL /* extra_praeamble */);
636
637 fp << "\\section{The field of order " << PW->P->q << "}" << endl;
638 fp << "\\noindent The field ${\\mathbb F}_{"
639 << PW->P->q
640 << "}$ :\\\\" << endl;
641 PW->P->F->cheat_sheet(fp, verbose_level);
642
643#if 0
644 fp << "\\section{The space PG$(3, " << q << ")$}" << endl;
645
646 fp << "The points in the plane PG$(2, " << q << ")$:\\\\" << endl;
647
648 fp << "\\bigskip" << endl;
649
650
651 Gen->P->cheat_sheet_points(fp, 0 /*verbose_level*/);
652
653 fp << endl;
654 fp << "\\section{Poset Classification}" << endl;
655 fp << endl;
656#endif
657 fp << "\\section{The Group $H$}" << endl;
659
660 PW->report2(fp, verbose_level);
661
662 fp << "\\section{Cliques on the fixpoint graph}" << endl;
663
664 if (fixpoints_idx >= 0) {
665 report2(fp, /*L,*/ verbose_level);
666 }
667
668 Li.foot(fp);
669 }
670 cout << "Written file " << fname << " of size "
671 << Fio.file_size(fname) << endl;
672 }
673
674}
675
676void packing_was_fixpoints::report2(ostream &ost, /*packing_long_orbits *L,*/ int verbose_level)
677{
678
679 ost << "\\section{Orbits of cliques on the fixpoint graph under $N$}" << endl;
680 ost << "The Group $N$ has " << nb_cliques << " orbits on "
681 "cliques of size " << fixpoint_clique_size << "\\\\" << endl;
683 ost << endl;
684
685
686#if 0
687 cout << "before PW->report_reduced_spread_orbits" << endl;
688 ost << "Reduced spread orbits under $H$: \\\\" << endl;
689
690
691 int f_original_spread_numbers = TRUE;
692
693
694 PW->report_reduced_spread_orbits(ost, f_original_spread_numbers, verbose_level);
695
696 //PW->report_good_spreads(ost);
697
699#endif
700
701 int idx;
702
703 ost << "The fixed points are the orbits of type " << fixpoints_idx << "\\\\" << endl;
704
705 for (idx = 0; idx < nb_cliques; idx++) {
706
707 long int *Orbit_numbers;
708 groups::strong_generators *Stab_gens;
709
710 Orbit_numbers = clique_by_index(idx);
711
712 Stab_gens = get_stabilizer(idx);
713
714 ost << "Clique " << idx << ":\\\\" << endl;
715
716
717 ost << "Orbit numbers: ";
718 Lint_vec_print(ost, Orbit_numbers, fixpoint_clique_size);
719 ost << "\\\\" << endl;
720
721 ost << "Stabilizer:\\\\" << endl;
722
723 Stab_gens->print_generators_tex(ost);
724
725 }
726
727#if 0
729 if (L) {
730 latex_interface Li;
731
732 ost << "After selecting fixpoint clique $" << L->fixpoints_clique_case_number << " = ";
733 Li.lint_set_print_tex(ost, L->fixpoint_clique, L->fixpoint_clique_size);
734 ost << "$, we find the following filtered orbits:\\\\" << endl;
735 L->report_filtered_orbits(ost);
736#if 0
737 ost << "A graph with " << L->CG->nb_points << " vertices "
738 "has been created and saved in the file \\verb'"
739 << L->fname_graph << "'\\\\" << endl;
740#endif
741 }
742 }
743#endif
744
745
746}
747
749{
750 int f_v = (verbose_level >= 1);
751 long int b, c;
752 int len;
753 long int set[1];
754
755 if (f_v) {
756 cout << "packing_was_fixpoints::fixpoint_to_reduced_spread a=" << a << endl;
757 }
758 //a = fixpoint_clique[i];
760 if (f_v) {
761 cout << "packing_was_fixpoints::fixpoint_to_reduced_spread b=" << b << endl;
762 }
763
765 cout << "packing_was_fixpoints::fixpoint_to_reduced_spread b >= PW->reduced_spread_orbits_under_H->Sch->nb_orbits" << endl;
766 exit(1);
767 }
769 cout << "packing_was_fixpoints::fixpoint_to_reduced_spread PW->reduced_spread_orbits_under_H->Sch->orbit_len[b] != 1" << endl;
770 exit(1);
771 }
772 PW->reduced_spread_orbits_under_H->Sch->get_orbit(b /* orbit_idx */, set, len,
773 0 /*verbose_level */);
774 if (len != 1) {
775 cout << "packing_was_fixpoints::init len != 1, len = " << len << endl;
776 exit(1);
777 }
778 c = set[0];
779 if (f_v) {
780 cout << "packing_was_fixpoints::fixpoint_to_reduced_spread done" << endl;
781 }
782 return c;
783}
784
785
786// #############################################################################
787// global functions:
788// #############################################################################
789
790static void packing_was_fixpoints_early_test_function_fp_cliques(long int *S, int len,
791 long int *candidates, int nb_candidates,
792 long int *good_candidates, int &nb_good_candidates,
793 void *data, int verbose_level)
794{
795 int f_v = (verbose_level >= 1);
798
799 if (f_v) {
800 cout << "packing_was_fixpoints_early_test_function_fp_cliques" << endl;
801 }
802
804 candidates, nb_candidates,
805 good_candidates, nb_good_candidates,
806 verbose_level - 2);
807
808 if (f_v) {
809 cout << "packing_was_fixpoints_early_test_function_fp_cliques done" << endl;
810 }
811}
812
813
814
815
816}}}
817
functions related to strings and character arrays
a statistical analysis of data consisting of vectors of ints
void save_classes_individually(std::string &fname, int verbose_level)
void init(int *data, int data_length, int data_set_sz, int verbose_level)
a statistical analysis of data consisting of single integers
void init(int *data, int data_length, int f_second, int verbose_level)
Definition: tally.cpp:72
void save_classes_individually(std::string &fname)
Definition: tally.cpp:733
void cheat_sheet(std::ostream &f, int verbose_level)
void compute_iso_type_invariant(int *Partial_packings, int nb_pp, int sz, int *&Iso_type_invariant, int verbose_level)
void early_test_func_for_clique_search(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
void load(std::string &fname, int verbose_level)
void lint_matrix_write_csv(std::string &fname, long int *M, int m, int n)
Definition: file_io.cpp:1323
void lint_matrix_read_csv(std::string &fname, long int *&M, int &m, int &n, int verbose_level)
Definition: file_io.cpp:1558
void head(std::ostream &ost, int f_book, int f_title, const char *title, const char *author, int f_toc, int f_landscape, int f_12pt, int f_enlarged_page, int f_pagenumbers, const char *extras_for_preamble)
a set of orbits using a vector of orbit representatives and stabilizers
void read_from_file(actions::action *A, actions::action *A2, std::string &fname, int verbose_level)
data_structures::tally * get_ago_distribution(long int *&ago, int verbose_level)
void get_orbit_number_and_position(long int a, int &orbit_idx, int &orbit_pos, int verbose_level)
data_structures::set_of_sets * Orbits_classified
Definition: groups.h:506
void get_orbit(int orbit_idx, long int *set, int &len, int verbose_level)
Definition: schreier.cpp:2598
a strong generating set for a permutation group with respect to a fixed action
Definition: groups.h:1703
to control the behavior of the poset classification algorithm
void get_orbit_representatives(int level, int &nb_orbits, long int *&Orbit_reps, int verbose_level)
void compute_orbits_on_subsets(int target_depth, poset_classification_control *PC_control, poset_with_group_action *Poset, int verbose_level)
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)
spreads::spread_table_with_selection * Spread_table_with_selection
Definition: packings.h:85
complete a partial packing from a clique on the fixpoint graph using long orbits, utilizing clique se...
Definition: packings.h:284
void init(packing_was_fixpoints *PWF, packing_long_orbits_description *Descr, int verbose_level)
picking fixed points in the construction of packings in PG(3,q) with assumed symmetry
Definition: packings.h:494
poset_classification::poset_with_group_action * Poset_fixpoint_cliques
Definition: packings.h:508
void print_packing(long int *packing, int sz, int verbose_level)
data_structures_groups::orbit_transversal * Fixp_cliques
Definition: packings.h:515
poset_classification::poset_classification * fixpoint_clique_gen
Definition: packings.h:509
void init(packing_was *PW, int fixpoint_clique_size, poset_classification::poset_classification_control *Control, int verbose_level)
void compute_cliques_on_fixpoint_graph_from_scratch(int clique_size, poset_classification::poset_classification_control *Control, int verbose_level)
void compute_cliques_on_fixpoint_graph(int clique_size, poset_classification::poset_classification_control *Control, int verbose_level)
construction of packings in PG(3,q) with assumed symmetry
Definition: packings.h:564
geometry::spread_tables * Spread_tables_reduced
Definition: packings.h:631
void report_reduced_spread_orbits(std::ostream &ost, int f_original_spread_numbers, int verbose_level)
groups::orbits_on_something * reduced_spread_orbits_under_H
Definition: packings.h:645
void create_graph_and_save_to_file(std::string &fname, int orbit_length, int f_has_user_data, long int *user_data, int user_data_size, int verbose_level)
void report2(std::ostream &ost, int verbose_level)
int find_orbits_of_length_in_reduced_spread_table(int orbit_length)
groups::orbits_on_something * Line_orbits_under_H
Definition: packings.h:600
actions::action * restricted_action(int orbit_length, int verbose_level)
#define Lint_matrix_print(A, B, C)
Definition: foundations.h:708
#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 NEW_int(n)
Definition: foundations.h:625
#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
the orbiter library for the classification of combinatorial objects