Orbiter 2022
Combinatorial Objects
packings.h
Go to the documentation of this file.
1/*
2 * spreads_and_packings.h
3 *
4 * Created on: Jul 27, 2020
5 * Author: betten
6 */
7
8#ifndef SRC_LIB_TOP_LEVEL_PACKINGS_PACKINGS_H_
9#define SRC_LIB_TOP_LEVEL_PACKINGS_PACKINGS_H_
10
11
12namespace orbiter {
13namespace layer5_applications {
14namespace packings {
15
16
17// #############################################################################
18// invariants_packing.cpp
19// #############################################################################
20
22
24public:
27 isomorph *Iso; // the classification of packings
28
29
31 ring_theory::longinteger_object *Ago, *Ago_induced;
32 int *Ago_int;
33
35 // [Iso->Reps->count * P->nb_iso_types_of_spreads]
36
37
38 data_structures::tally_vector_data *Classify;
39
40
42 // [Iso->Reps->count]
44 // [Iso->Reps->count]
45
48 void null();
49 void freeself();
50 void init(isomorph *Iso, packing_classify *P, int verbose_level);
52 isomorph *Iso, int verbose_level);
53 void make_table(isomorph *Iso, std::ostream &ost,
54 int f_only_self_dual,
55 int f_only_not_self_dual,
56 int verbose_level);
57};
58
59
60// #############################################################################
61// packing_classify.cpp
62// #############################################################################
63
65
67public:
68
70
72
74 field_theory::finite_field *F;
77
78
80 int q;
82 // the number of spreads in a packing,
83 // which is q^2 + q + 1
84
86
87 geometry::projective_space *P3;
88 geometry::projective_space *P5;
89 long int *the_packing; // [size_of_packing]
90 long int *spread_iso_type; // [size_of_packing]
91 long int *dual_packing; // [size_of_packing]
92 long int *list_of_lines; // [size_of_packing * spread_size]
93 long int *list_of_lines_klein_image; // [size_of_packing * spread_size]
94 geometry::grassmann *Gr; // the Grassmannian Gr_{6,3}
95
96
97
98 int *degree;
99
100 poset_classification::poset_classification_control *Control;
101 poset_classification::poset_with_group_action *Poset;
102 poset_classification::poset_classification *gen;
103
105
106
109 void null();
110 void freeself();
113 int dimension_of_spread_elements,
114 int f_select_spread, std::string &select_spread_text,
115 std::string &path_to_spread_tables,
116 int verbose_level);
117 void init(
120 int f_lexorder_test,
121 int verbose_level);
122 void init2(poset_classification::poset_classification_control *Control, int verbose_level);
123 void init_P3_and_P5_and_Gr(int verbose_level);
124 void compute_adjacency_matrix(int verbose_level);
126 poset_classification::poset_classification_control *Control,
127 int verbose_level);
128 void compute(int search_depth, int verbose_level);
130 exact_cover *E, int starter_case,
131 long int *candidates, int nb_candidates,
132 groups::strong_generators *Strong_gens,
133 solvers::diophant *&Dio, long int *&col_labels,
134 int &f_ruled_out,
135 int verbose_level);
137 int *Elt, char *fname_latex,
138 int verbose_level);
140 groups::schreier *Orbits, int orbit_idx,
141 long int *orbit1, int verbose_level);
143 groups::schreier *Orbits, int a, int b,
144 long int *orbit1, long int *orbit2, int verbose_level);
145 // tests if every spread from orbit a
146 // is line-disjoint from every spread from orbit b
147 int find_spread(long int *set, int verbose_level);
148
149 // packing2.cpp
151 isomorph *Iso, int f_split, int split_r, int split_m,
152 int verbose_level);
153 void compute_dual_spreads(isomorph *Iso, int verbose_level);
154 void klein_invariants_fname(std::string &fname, std::string &prefix, int iso_cnt);
155 void compute_and_save_klein_invariants(std::string &prefix,
156 int iso_cnt,
157 long int *data, int data_size, int verbose_level);
158 void report(isomorph *Iso, int verbose_level);
159 void report_whole(isomorph *Iso, std::ostream &ost, int verbose_level);
160 void report_title_page(isomorph *Iso, std::ostream &ost, int verbose_level);
161 void report_packings_by_ago(isomorph *Iso, std::ostream &ost,
163 data_structures::tally &C_ago, int verbose_level);
164 void report_isomorphism_type(isomorph *Iso, std::ostream &ost,
165 int orbit, invariants_packing *inv, int verbose_level);
166 void report_packing_as_table(isomorph *Iso, std::ostream &ost,
167 int orbit, invariants_packing *inv, long int *list_of_lines,
168 int verbose_level);
169 void report_klein_invariants(isomorph *Iso, std::ostream &ost,
170 int orbit, invariants_packing *inv, int verbose_level);
171 void report_stabilizer(isomorph &Iso, std::ostream &ost, int orbit,
172 int verbose_level);
173 void report_stabilizer_in_action(isomorph &Iso,
174 std::ostream &ost, int orbit, int verbose_level);
175 void report_stabilizer_in_action_gap(isomorph &Iso,
176 int orbit, int verbose_level);
177 void report_extra_stuff(isomorph *Iso, std::ostream &ost,
178 int verbose_level);
179};
180
181
182
183// #############################################################################
184// packing_invariants.cpp
185// #############################################################################
186
188
190public:
192
193 std::string prefix;
194 std::string prefix_tex;
196
197 long int *the_packing;
198 // [P->size_of_packing]
199
200 long int *list_of_lines;
201 // [P->size_of_packing * P->spread_size]
202
204 ring_theory::longinteger_object *R;
208
209 data_structures::tally *C;
211 int *block_to_plane; // [nb_blocks]
212 int *plane_to_block; // [nb_planes]
216 // nb_blocks + nb_fake_blocks
218 // P->size_of_packing * P->spread_size + nb_fake_points
219 int *Inc;
220 // [total_nb_points * total_nb_blocks]
221
222 geometry::incidence_structure *I;
223 data_structures::partitionstack *Stack;
225 std::string fname_row_scheme;
226 std::string fname_col_scheme;
227
230 void null();
231 void freeself();
232 void init(packing_classify *P,
233 std::string &prefix, std::string &prefix_tex, int iso_cnt,
234 long int *the_packing, int verbose_level);
235 void init_klein_invariants(Vector &v, int verbose_level);
236 void compute_decomposition(int verbose_level);
237};
238
239// #############################################################################
240// packing_long_orbits_description.cpp
241// #############################################################################
242
244
246public:
250
253
256
259
261 std::string solution_path;
262
264
266
268
269
272 int read_arguments(int argc, std::string *argv,
273 int verbose_level);
274 void print();
275
276};
277
278// #############################################################################
279// packing_long_orbits.cpp
280// #############################################################################
281
283
285public:
288
291
295
297 long int *set; // [Descr->orbit_length]
298
299
300
301
304 groups::strong_generators *fixpoint_clique_stabilizer_gens;
306 data_structures::set_of_sets *Filtered_orbits;
307
308 std::string fname_graph;
309 std::string fname_solutions;
310
311
316 int verbose_level);
317 void list_of_cases_from_file(int verbose_level);
318 void save_packings_by_case(std::string &fname_packings,
319 std::vector<std::vector<std::vector<int> > > &Packings_by_case, int verbose_level);
321 std::vector<std::vector<int> > &Packings_classified,
322 std::vector<std::vector<int> > &Packings,
323 int verbose_level);
324 void init_fixpoint_clique_from_orbit_numbers(int verbose_level);
325 void filter_orbits(int verbose_level);
327 std::vector<std::vector<int> > &Packings_classified,
328 std::vector<std::vector<int> > &Packings,
329 int verbose_level);
332 graph_theory::colored_graph *&CG,
333 std::string &fname,
334 int f_has_user_data, long int *user_data, int user_data_size,
335 int verbose_level);
337 graph_theory::colored_graph *&CG,
338 long int *user_data, int user_data_sz,
339 int verbose_level);
340 void report_filtered_orbits(std::ostream &ost);
341
342};
343
344
345
346// #############################################################################
347// packing_was_activity_description.cpp
348// #############################################################################
349
351
353public:
354
356
359
362
363
366 int read_arguments(
367 int argc, std::string *argv,
368 int verbose_level);
369 void print();
370
371};
372
373
374// #############################################################################
375// packing_was_activity.cpp
376// #############################################################################
377
379
381public:
382
385
390 int verbose_level);
391 void perform_activity(int verbose_level);
392};
393
394
395
396// #############################################################################
397// packing_was_description.cpp
398// #############################################################################
399
401
403public:
404
407
409
412
414 exact_cover_arguments *ECA;
415
417 isomorph_arguments *IA;
418
419 int f_H;
420 std::string H_label;
421 groups::linear_group_description *H_Descr;
422
423 int f_N;
424 std::string N_label;
425 groups::linear_group_description *N_Descr;
426
428
430
433 int read_arguments(int argc, std::string *argv,
434 int verbose_level);
435 void print();
436
437};
438
439// #############################################################################
440// packing_was_fixpoints_activity_description.cpp
441// #############################################################################
442
444
446public:
448
451
455
458 int read_arguments(
459 int argc, std::string *argv,
460 int verbose_level);
461 void print();
462
463};
464
465// #############################################################################
466// packing_was_fixpoints_activity.cpp
467// #############################################################################
468
470
472public:
473
476
481 int verbose_level);
482 void perform_activity(int verbose_level);
483
484};
485
486
487
488// #############################################################################
489// packing_was_fixpoints.cpp
490// #############################################################################
491
493
495public:
497
498 std::string fname_fixp_graph;
501 // index of orbits of length 1 in reduced_spread_orbits_under_H
502 actions::action *A_on_fixpoints;
503 // A_on_reduced_spread_orbits->create_induced_action_by_restriction(
504 // reduced_spread_orbits_under_H->Orbits_classified->Set_size[fixpoints_idx],
505 // reduced_spread_orbits_under_H->Orbits_classified->Sets[fixpoints_idx])
506
507 graph_theory::colored_graph *fixpoint_graph;
508 poset_classification::poset_with_group_action *Poset_fixpoint_cliques;
509 poset_classification::poset_classification *fixpoint_clique_gen;
510
512 long int *Cliques; // [nb_cliques * fixpoint_clique_size]
515 data_structures_groups::orbit_transversal *Fixp_cliques;
516
517
518
519
522 void init(packing_was *PW,
523 int fixpoint_clique_size, poset_classification::poset_classification_control *Control,
524 int verbose_level);
525 void setup_file_names(int clique_size, int verbose_level);
526 void create_graph_on_fixpoints(int verbose_level);
527 void action_on_fixpoints(int verbose_level);
529 int clique_size,
530 poset_classification::poset_classification_control *Control,
531 int verbose_level);
532 // initializes the orbit transversal Fixp_cliques
533 // initializes Cliques[nb_cliques * clique_size]
534 // (either by computing it or reading it from file)
536 int clique_size,
537 poset_classification::poset_classification_control *Control,
538 int verbose_level);
539 // compute cliques on fixpoint graph using A_on_fixpoints
540 // orbit representatives will be stored in Cliques[nb_cliques * clique_size]
541 void process_long_orbits(int verbose_level);
542 long int *clique_by_index(int idx);
543 groups::strong_generators *get_stabilizer(int idx);
544 void print_packing(long int *packing, int sz, int verbose_level);
546 int clique_index,
547 int f_solution_path,
548 std::string &solution_path,
549 std::vector<std::vector<int> > &Packings,
550 int verbose_level);
551 void report(int verbose_level);
552 void report2(std::ostream &ost, /*packing_long_orbits *L,*/ int verbose_level);
553 long int fixpoint_to_reduced_spread(int a, int verbose_level);
554
555};
556
557
558// #############################################################################
559// packing_was.cpp
560// #############################################################################
561
563
565public:
567
568 groups::linear_group *H_LG;
569
570 groups::linear_group *N_LG;
571
573
574 groups::strong_generators *H_gens;
575 ring_theory::longinteger_object H_go;
576 long int H_goi;
577 groups::sims *H_sims;
578
579 actions::action *A;
581 groups::matrix_group *M;
582 int dim;
583
584 groups::strong_generators *N_gens;
585 ring_theory::longinteger_object N_go;
586 long int N_goi;
587
588
590 groups::orbits_on_something *Point_orbits_under_H;
591 // using H_gens in action P->T->A
592
593
595 groups::orbits_on_something *Point_orbits_under_N;
596 // using N_gens in action P->T->A
597
598
600 groups::orbits_on_something *Line_orbits_under_H;
601 // using H_gens in action P->T->A2
602
604 groups::orbits_on_something *Line_orbits_under_N;
605 // using H_gens in action P->T->A2
606
608 data_structures_groups::orbit_type_repository *Spread_type;
609
611 groups::orbits_on_something *Spread_orbits_under_H;
612 // using H_gens in action
613 // P->Spread_table_with_selection->A_on_spreads
614
615
616 actions::action *A_on_spread_orbits;
617 // derived from P->Spread_table_with_selection->A_on_spreads
618 // restricted action on Spread_orbits_under_H:
619 // = induced_action_on_orbits(P->A_on_spreads, Spread_orbits_under_H)
620
621 std::string fname_good_orbits;
623 long int *Good_orbit_idx;
624 long int *Good_orbit_len;
625 long int *orb;
626
629 // the union of all good orbits on spreads
630
631 geometry::spread_tables *Spread_tables_reduced;
632 // The spreads in the good orbits, listed one-by-one
633 // This table is *not* sorted.
634 // The induced action on reduced spreads (A_on_reduced_spreads)
635 // maintains a sorted table.
636
637
639 data_structures_groups::orbit_type_repository *Spread_type_reduced;
640
641 actions::action *A_on_reduced_spreads;
642 // induced action on Spread_tables_reduced
643
645 groups::orbits_on_something *reduced_spread_orbits_under_H;
646 // = reduced_spread_orbits_under_H->init(A_on_reduced_spreads, H_gens)
647
649 // induced_action_on_orbits(A_on_reduced_spreads,
650 // reduced_spread_orbits_under_H)
651
652 data_structures::set_of_sets *Orbit_invariant;
653 // the values of Spread_type_reduced->type[spread_idx]
654 // for the spreads in one orbit.
655 // Since it is an orbit invariant,
656 // the value is constant for all elements of the orbit,
657 // so it need to be stored only once for each orbit.
658 // more precisely, Orbit_invariant->Sets[i][j] is
659 // the type of the spreads belonging to the orbit
660 // reduced_spread_orbits_under_H->Orbits_classified->Sets[i][j]
661
664
666 // correspondence between regular spreads and external lines
667 // to the Klein quadric
668
669
670 packing_was();
671 ~packing_was();
672 void null();
673 void freeself();
675 packing_classify *P, int verbose_level);
676 void compute_H_orbits_and_reduce(int verbose_level);
677 void init_regular_packing(int verbose_level);
678 void init_N(int verbose_level);
679 void init_H(int verbose_level);
680 void compute_H_orbits_on_points(int verbose_level);
681 // computes the orbits of H on points
682 // and writes to file prefix_point_orbits
683 void compute_N_orbits_on_points(int verbose_level);
684 // computes the orbits of N on points
685 // and writes to file prefix_point_orbits
686 void compute_H_orbits_on_lines(int verbose_level);
687 // computes the orbits of H on lines (NOT on spreads!)
688 // and writes to file prefix_line_orbits
689 void compute_N_orbits_on_lines(int verbose_level);
690 // computes the orbits of N on lines (NOT on spreads!)
691 // and writes to file prefix_line_orbits
692 void compute_spread_types_wrt_H(int verbose_level);
693 void compute_H_orbits_on_spreads(int verbose_level);
694 // computes the orbits of H on spreads (NOT on lines!)
695 // and writes to file fname_orbits
696 void test_orbits_on_spreads(int verbose_level);
697 void reduce_spreads(int verbose_level);
698 void compute_reduced_spread_types_wrt_H(int verbose_level);
699 // Spread_types[P->nb_spreads * (group_order + 1)]
700 void compute_H_orbits_on_reduced_spreads(int verbose_level);
701 actions::action *restricted_action(int orbit_length, int verbose_level);
703 long int *orbit1, int len1, long int *orbit2, int len2,
704 int verbose_level);
705 // tests if every spread from set1
706 // is line-disjoint from every spread from set2
707 // using Spread_tables_reduced
709 std::string &fname,
710 int orbit_length,
711 int f_has_user_data, long int *user_data, int user_data_size,
712 int verbose_level);
714 std::string &orbit_lengths_text,
715 int f_has_user_data, long int *user_data, int user_data_size,
716 int verbose_level);
718 void compute_orbit_invariant_on_classified_orbits(int verbose_level);
719 int evaluate_orbit_invariant_function(int a, int i, int j, int verbose_level);
720 void classify_orbit_invariant(int verbose_level);
721 void report_orbit_invariant(std::ostream &ost);
722 void report2(std::ostream &ost, int verbose_level);
723 void report(int verbose_level);
724 void report_line_orbits_under_H(std::ostream &ost, int verbose_level);
726 int &nb_orbits, int &orbit_length,
727 long int *&orbit_idx,
728 long int *&spreads_in_reduced_orbits_by_type,
729 int f_original_spread_numbers,
730 int verbose_level);
731 void export_reduced_spread_orbits_csv(std::string &fname_base,
732 int f_original_spread_numbers, int verbose_level);
733 void report_reduced_spread_orbits(std::ostream &ost,
734 int f_original_spread_numbers, int verbose_level);
735 void report_good_spreads(std::ostream &ost);
736
737};
738
739
740
741// #############################################################################
742// packings_global.cpp
743// #############################################################################
744
746
748public:
749
752 void merge_packings(
753 std::string *fnames, int nb_files,
754 std::string &file_of_spreads,
755 data_structures::classify_bitvectors *&CB,
756 int verbose_level);
757 void select_packings(
758 std::string &fname,
759 std::string &file_of_spreads_original,
760 geometry::spread_tables *Spread_tables,
761 int f_self_polar,
762 int f_ago, int select_ago,
763 data_structures::classify_bitvectors *&CB,
764 int verbose_level);
766 std::string &fname,
767 std::string &file_of_spreads_original,
768 int f_split, int split_r, int split_m,
769 geometry::spread_tables *Spread_tables,
770 data_structures::classify_bitvectors *&CB,
771 int verbose_level);
772
773};
774
775
776
777// #############################################################################
778// regular_packing.cpp
779// #############################################################################
780
782
783
785public:
787
788 std::vector<long int> External_lines;
789
790 long int *spread_to_external_line_idx; // [T->nb_spreads]
791 // spread_to_external_line_idx[i] is index into External_lines
792 // corresponding to regular spread i
793 long int *external_line_to_spread; // [nb_lines_orthogonal]
794 // external_line_to_spread[i] is the index of the
795 // regular spread of PG(3,q) in table T associated with
796 // External_lines[i]
797
798
801 void init(packing_was *PW, int verbose_level);
802
803};
804
805
806
807
808}}}
809
810
811
812
813#endif /* SRC_LIB_TOP_LEVEL_PACKINGS_PACKINGS_H_ */
collection of invariants of a set of packings in PG(3,q)
Definition: packings.h:23
ring_theory::longinteger_object * Ago_induced
Definition: packings.h:31
void make_table(isomorph *Iso, std::ostream &ost, int f_only_self_dual, int f_only_not_self_dual, int verbose_level)
data_structures::tally_vector_data * Classify
Definition: packings.h:38
void init(isomorph *Iso, packing_classify *P, int verbose_level)
void compute_dual_packings(isomorph *Iso, int verbose_level)
classification of packings in PG(3,q)
Definition: packings.h:66
void report_fixed_objects(int *Elt, char *fname_latex, int verbose_level)
void report_packings_by_ago(isomorph *Iso, std::ostream &ost, invariants_packing *inv, data_structures::tally &C_ago, int verbose_level)
void report_isomorphism_type(isomorph *Iso, std::ostream &ost, int orbit, invariants_packing *inv, int verbose_level)
poset_classification::poset_classification_control * Control
Definition: packings.h:100
void compute(int search_depth, int verbose_level)
void report_stabilizer_in_action(isomorph &Iso, std::ostream &ost, int orbit, int verbose_level)
void compute_klein_invariants(isomorph *Iso, int f_split, int split_r, int split_m, int verbose_level)
void report_stabilizer_in_action_gap(isomorph &Iso, int orbit, int verbose_level)
int test_if_pair_of_orbits_are_adjacent(groups::schreier *Orbits, int a, int b, long int *orbit1, long int *orbit2, int verbose_level)
void compute_dual_spreads(isomorph *Iso, int verbose_level)
poset_classification::poset_with_group_action * Poset
Definition: packings.h:101
void report_extra_stuff(isomorph *Iso, std::ostream &ost, int verbose_level)
void init2(poset_classification::poset_classification_control *Control, int verbose_level)
void spread_table_init(projective_geometry::projective_space_with_action *PA, int dimension_of_spread_elements, int f_select_spread, std::string &select_spread_text, std::string &path_to_spread_tables, int verbose_level)
void report_title_page(isomorph *Iso, std::ostream &ost, int verbose_level)
projective_geometry::projective_space_with_action * PA
Definition: packings.h:69
void prepare_generator(poset_classification::poset_classification_control *Control, int verbose_level)
void report_packing_as_table(isomorph *Iso, std::ostream &ost, int orbit, invariants_packing *inv, long int *list_of_lines, int verbose_level)
void report_whole(isomorph *Iso, std::ostream &ost, int verbose_level)
void klein_invariants_fname(std::string &fname, std::string &prefix, int iso_cnt)
void init(projective_geometry::projective_space_with_action *PA, spreads::spread_table_with_selection *Spread_table_with_selection, int f_lexorder_test, int verbose_level)
spreads::spread_table_with_selection * Spread_table_with_selection
Definition: packings.h:85
poset_classification::poset_classification * gen
Definition: packings.h:102
void compute_and_save_klein_invariants(std::string &prefix, int iso_cnt, long int *data, int data_size, int verbose_level)
void lifting_prepare_function_new(exact_cover *E, int starter_case, long int *candidates, int nb_candidates, groups::strong_generators *Strong_gens, solvers::diophant *&Dio, long int *&col_labels, int &f_ruled_out, int verbose_level)
int test_if_orbit_is_partial_packing(groups::schreier *Orbits, int orbit_idx, long int *orbit1, int verbose_level)
void report_stabilizer(isomorph &Iso, std::ostream &ost, int orbit, int verbose_level)
void report_klein_invariants(isomorph *Iso, std::ostream &ost, int orbit, invariants_packing *inv, int verbose_level)
geometric invariants of a packing in PG(3,q)
Definition: packings.h:189
void init(packing_classify *P, std::string &prefix, std::string &prefix_tex, int iso_cnt, long int *the_packing, int verbose_level)
command line description of picking long orbits of packings with assumed symmetry
Definition: packings.h:245
complete a partial packing from a clique on the fixpoint graph using long orbits, utilizing clique se...
Definition: packings.h:284
void create_graph_and_save_to_file(graph_theory::colored_graph *&CG, std::string &fname, int f_has_user_data, long int *user_data, int user_data_size, int verbose_level)
void process_single_case(std::vector< std::vector< int > > &Packings_classified, std::vector< std::vector< int > > &Packings, int verbose_level)
void save_packings_by_case(std::string &fname_packings, std::vector< std::vector< std::vector< int > > > &Packings_by_case, int verbose_level)
void create_graph_on_remaining_long_orbits(std::vector< std::vector< int > > &Packings_classified, std::vector< std::vector< int > > &Packings, int verbose_level)
void init(packing_was_fixpoints *PWF, packing_long_orbits_description *Descr, int verbose_level)
groups::strong_generators * fixpoint_clique_stabilizer_gens
Definition: packings.h:304
void create_graph_on_long_orbits(graph_theory::colored_graph *&CG, long int *user_data, int user_data_sz, int verbose_level)
description of an activity involving a packing_was
Definition: packings.h:352
void init(packing_was_activity_description *Descr, packing_was *PW, int verbose_level)
command line description of tasks for packings with assumed symmetry
Definition: packings.h:402
int read_arguments(int argc, std::string *argv, int verbose_level)
description of an activity after the fixed points have been selected in the construction of packings ...
Definition: packings.h:445
an activity after the fixed points have been selected in the construction of packings in PG(3,...
Definition: packings.h:471
void init(packing_was_fixpoints_activity_description *Descr, packing_was_fixpoints *PWF, int verbose_level)
packing_was_fixpoints_activity_description * Descr
Definition: packings.h:474
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)
void process_long_orbits(int clique_index, int f_solution_path, std::string &solution_path, std::vector< std::vector< int > > &Packings, 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)
void report_line_orbits_under_H(std::ostream &ost, int verbose_level)
groups::orbits_on_something * Point_orbits_under_H
Definition: packings.h:590
data_structures::set_of_sets * Orbit_invariant
Definition: packings.h:652
groups::orbits_on_something * reduced_spread_orbits_under_H
Definition: packings.h:645
groups::orbits_on_something * Spread_orbits_under_H
Definition: packings.h:611
groups::orbits_on_something * Point_orbits_under_N
Definition: packings.h:595
int evaluate_orbit_invariant_function(int a, int i, int j, int verbose_level)
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)
ring_theory::longinteger_object N_go
Definition: packings.h:585
data_structures_groups::orbit_type_repository * Spread_type_reduced
Definition: packings.h:639
void compute_orbit_invariant_on_classified_orbits(int verbose_level)
void get_spreads_in_reduced_orbits_by_type(int type_idx, int &nb_orbits, int &orbit_length, long int *&orbit_idx, long int *&spreads_in_reduced_orbits_by_type, int f_original_spread_numbers, int verbose_level)
void create_graph_on_mixed_orbits_and_save_to_file(std::string &orbit_lengths_text, int f_has_user_data, long int *user_data, int user_data_size, int verbose_level)
int test_if_pair_of_sets_of_reduced_spreads_are_adjacent(long int *orbit1, int len1, long int *orbit2, int len2, int verbose_level)
void init(packing_was_description *Descr, packing_classify *P, int verbose_level)
ring_theory::longinteger_object H_go
Definition: packings.h:575
void report2(std::ostream &ost, int verbose_level)
data_structures_groups::orbit_type_repository * Spread_type
Definition: packings.h:608
int find_orbits_of_length_in_reduced_spread_table(int orbit_length)
data_structures::tally * Classify_spread_invariant_by_orbit_length
Definition: packings.h:663
groups::orbits_on_something * Line_orbits_under_N
Definition: packings.h:604
groups::orbits_on_something * Line_orbits_under_H
Definition: packings.h:600
void export_reduced_spread_orbits_csv(std::string &fname_base, int f_original_spread_numbers, int verbose_level)
actions::action * restricted_action(int orbit_length, int verbose_level)
classification and investigation of packings in PG(3,q)
Definition: packings.h:747
void merge_packings(std::string *fnames, int nb_files, std::string &file_of_spreads, data_structures::classify_bitvectors *&CB, int verbose_level)
void select_packings(std::string &fname, std::string &file_of_spreads_original, geometry::spread_tables *Spread_tables, int f_self_polar, int f_ago, int select_ago, data_structures::classify_bitvectors *&CB, int verbose_level)
void select_packings_self_dual(std::string &fname, std::string &file_of_spreads_original, int f_split, int split_r, int split_m, geometry::spread_tables *Spread_tables, data_structures::classify_bitvectors *&CB, int verbose_level)
a regular packing as a partition of the Klein quadric into elliptic quadrics
Definition: packings.h:784
void init(packing_was *PW, int verbose_level)
projective space PG(n,q) with automorphism group PGGL(n+1,q)
to classify spreads of PG(k-1,q) in PG(n-1,q) where k divides n
Definition: spreads.h:106
spreads tables with a selection of isomorphism types
Definition: spreads.h:480
the orbiter library for the classification of combinatorial objects