8#ifndef SRC_LIB_TOP_LEVEL_PACKINGS_PACKINGS_H_
9#define SRC_LIB_TOP_LEVEL_PACKINGS_PACKINGS_H_
13namespace layer5_applications {
52 isomorph *
Iso,
int verbose_level);
55 int f_only_not_self_dual,
74 field_theory::finite_field *
F;
87 geometry::projective_space *
P3;
88 geometry::projective_space *
P5;
94 geometry::grassmann *
Gr;
100 poset_classification::poset_classification_control *
Control;
101 poset_classification::poset_with_group_action *
Poset;
102 poset_classification::poset_classification *
gen;
113 int dimension_of_spread_elements,
114 int f_select_spread, std::string &select_spread_text,
122 void init2(poset_classification::poset_classification_control *
Control,
int verbose_level);
126 poset_classification::poset_classification_control *
Control,
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,
137 int *Elt,
char *fname_latex,
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);
151 isomorph *Iso,
int f_split,
int split_r,
int split_m,
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);
163 data_structures::tally &C_ago,
int verbose_level);
174 std::ostream &ost,
int orbit,
int verbose_level);
176 int orbit,
int verbose_level);
204 ring_theory::longinteger_object *
R;
209 data_structures::tally *
C;
222 geometry::incidence_structure *
I;
223 data_structures::partitionstack *
Stack;
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,
327 std::vector<std::vector<int> > &Packings_classified,
328 std::vector<std::vector<int> > &Packings,
332 graph_theory::colored_graph *&CG,
334 int f_has_user_data,
long int *user_data,
int user_data_size,
337 graph_theory::colored_graph *&CG,
338 long int *user_data,
int user_data_sz,
367 int argc, std::string *argv,
414 exact_cover_arguments *
ECA;
417 isomorph_arguments *
IA;
459 int argc, std::string *argv,
530 poset_classification::poset_classification_control *Control,
537 poset_classification::poset_classification_control *Control,
544 void print_packing(
long int *packing,
int sz,
int verbose_level);
548 std::string &solution_path,
549 std::vector<std::vector<int> > &Packings,
551 void report(
int verbose_level);
552 void report2(std::ostream &ost,
int verbose_level);
575 ring_theory::longinteger_object
H_go;
581 groups::matrix_group *
M;
585 ring_theory::longinteger_object
N_go;
678 void init_N(
int verbose_level);
679 void init_H(
int verbose_level);
703 long int *orbit1,
int len1,
long int *orbit2,
int len2,
711 int f_has_user_data,
long int *user_data,
int user_data_size,
714 std::string &orbit_lengths_text,
715 int f_has_user_data,
long int *user_data,
int user_data_size,
722 void report2(std::ostream &ost,
int verbose_level);
723 void report(
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,
732 int f_original_spread_numbers,
int verbose_level);
734 int f_original_spread_numbers,
int verbose_level);
753 std::string *fnames,
int nb_files,
754 std::string &file_of_spreads,
755 data_structures::classify_bitvectors *&CB,
759 std::string &file_of_spreads_original,
760 geometry::spread_tables *Spread_tables,
762 int f_ago,
int select_ago,
763 data_structures::classify_bitvectors *&CB,
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,
collection of invariants of a set of packings in PG(3,q)
ring_theory::longinteger_object * Ago_induced
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
int * Spread_type_of_packing
ring_theory::longinteger_object * Ago
void init(isomorph *Iso, packing_classify *P, int verbose_level)
void compute_dual_packings(isomorph *Iso, int verbose_level)
spreads::spread_classify * T
classification of packings in PG(3,q)
field_theory::finite_field * F
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)
long int * spread_iso_type
long int * list_of_lines_klein_image
void report(isomorph *Iso, int verbose_level)
poset_classification::poset_classification_control * Control
void compute(int search_depth, int verbose_level)
void report_stabilizer_in_action(isomorph &Iso, std::ostream &ost, int orbit, int verbose_level)
void init_P3_and_P5_and_Gr(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
geometry::projective_space * P3
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
void prepare_generator(poset_classification::poset_classification_control *Control, int verbose_level)
std::string path_to_spread_tables
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)
geometry::projective_space * P5
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
poset_classification::poset_classification * gen
spreads::spread_classify * T
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 find_spread(long int *set, 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 compute_adjacency_matrix(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)
void compute_decomposition(int verbose_level)
ring_theory::longinteger_object * R
std::string fname_col_scheme
data_structures::tally * C
void init_klein_invariants(Vector &v, int verbose_level)
std::string fname_row_scheme
void init(packing_classify *P, std::string &prefix, std::string &prefix_tex, int iso_cnt, long int *the_packing, int verbose_level)
geometry::incidence_structure * I
data_structures::partitionstack * Stack
std::string fname_incidence_pic
command line description of picking long orbits of packings with assumed symmetry
packing_long_orbits_description()
int read_arguments(int argc, std::string *argv, int verbose_level)
std::string mixed_orbits_length_text
~packing_long_orbits_description()
std::string list_of_cases_from_file_fname
int f_list_of_cases_from_file
std::string solution_path
complete a partial packing from a clique on the fixpoint graph using long orbits, utilizing clique se...
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)
long int * fixpoint_clique
void filter_orbits(int verbose_level)
void create_fname_graph_on_remaining_long_orbits()
std::string fname_solutions
packing_long_orbits_description * Descr
data_structures::set_of_sets * Filtered_orbits
void create_graph_on_remaining_long_orbits(std::vector< std::vector< int > > &Packings_classified, std::vector< std::vector< int > > &Packings, int verbose_level)
int fixpoints_clique_case_number
void init(packing_was_fixpoints *PWF, packing_long_orbits_description *Descr, int verbose_level)
packing_was_fixpoints * PWF
groups::strong_generators * fixpoint_clique_stabilizer_gens
void create_graph_on_long_orbits(graph_theory::colored_graph *&CG, long int *user_data, int user_data_sz, int verbose_level)
void list_of_cases_from_file(int verbose_level)
long int * fixpoint_clique_orbit_numbers
void report_filtered_orbits(std::ostream &ost)
void init_fixpoint_clique_from_orbit_numbers(int verbose_level)
description of an activity involving a packing_was
packing_was_activity_description()
std::string create_graph_on_mixed_orbits_orbit_lengths
int read_arguments(int argc, std::string *argv, int verbose_level)
int f_export_reduced_spread_orbits
int f_create_graph_on_mixed_orbits
~packing_was_activity_description()
std::string export_reduced_spread_orbits_fname_base
an activity involving a packing_was
packing_was_activity_description * Descr
void perform_activity(int verbose_level)
void init(packing_was_activity_description *Descr, packing_was *PW, int verbose_level)
command line description of tasks for packings with assumed symmetry
~packing_was_description()
packing_was_description()
exact_cover_arguments * ECA
int f_spread_tables_prefix
std::string spread_tables_prefix
int read_arguments(int argc, std::string *argv, int verbose_level)
groups::linear_group_description * N_Descr
groups::linear_group_description * H_Descr
packing_long_orbits_description * Long_Orbits_Descr
int f_fixp_clique_types_save_individually
int f_process_long_orbits
description of an activity after the fixed points have been selected in the construction of packings ...
int read_arguments(int argc, std::string *argv, int verbose_level)
~packing_was_fixpoints_activity_description()
packing_was_fixpoints_activity_description()
std::string compare_files_of_packings_fname2
int f_compare_files_of_packings
std::string print_packing_text
std::string compare_files_of_packings_fname1
an activity after the fixed points have been selected in the construction of packings in PG(3,...
packing_was_fixpoints_activity()
void init(packing_was_fixpoints_activity_description *Descr, packing_was_fixpoints *PWF, int verbose_level)
packing_was_fixpoints_activity_description * Descr
packing_was_fixpoints * PWF
~packing_was_fixpoints_activity()
void perform_activity(int verbose_level)
picking fixed points in the construction of packings in PG(3,q) with assumed symmetry
poset_classification::poset_with_group_action * Poset_fixpoint_cliques
groups::strong_generators * get_stabilizer(int idx)
void print_packing(long int *packing, int sz, int verbose_level)
data_structures_groups::orbit_transversal * Fixp_cliques
graph_theory::colored_graph * fixpoint_graph
void setup_file_names(int clique_size, int verbose_level)
void create_graph_on_fixpoints(int verbose_level)
poset_classification::poset_classification * fixpoint_clique_gen
actions::action * A_on_fixpoints
void report(int verbose_level)
void report2(std::ostream &ost, int verbose_level)
std::string fname_fixp_graph
void action_on_fixpoints(int verbose_level)
void process_long_orbits(int verbose_level)
std::string fname_fixp_graph_cliques
void init(packing_was *PW, int fixpoint_clique_size, poset_classification::poset_classification_control *Control, int verbose_level)
std::string fname_fixpoint_cliques_orbiter
void compute_cliques_on_fixpoint_graph_from_scratch(int clique_size, poset_classification::poset_classification_control *Control, int verbose_level)
long int fixpoint_to_reduced_spread(int a, 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)
long int * clique_by_index(int idx)
construction of packings in PG(3,q) with assumed symmetry
actions::action * A_on_spread_orbits
void classify_orbit_invariant(int verbose_level)
groups::strong_generators * N_gens
std::string fname_good_orbits
geometry::spread_tables * Spread_tables_reduced
void report_reduced_spread_orbits(std::ostream &ost, int f_original_spread_numbers, int verbose_level)
void report(int verbose_level)
void report_line_orbits_under_H(std::ostream &ost, int verbose_level)
void report_good_spreads(std::ostream &ost)
groups::linear_group * H_LG
void reduce_spreads(int verbose_level)
void compute_N_orbits_on_lines(int verbose_level)
std::string prefix_point_orbits_under_H
groups::orbits_on_something * Point_orbits_under_H
actions::action * A_on_reduced_spread_orbits
data_structures::set_of_sets * Orbit_invariant
groups::linear_group * N_LG
void compute_H_orbits_on_spreads(int verbose_level)
void compute_H_orbits_on_lines(int verbose_level)
void init_N(int verbose_level)
groups::orbits_on_something * reduced_spread_orbits_under_H
void compute_spread_types_wrt_H(int verbose_level)
groups::orbits_on_something * Spread_orbits_under_H
void init_H(int verbose_level)
groups::strong_generators * H_gens
regular_packing * Regular_packing
groups::orbits_on_something * Point_orbits_under_N
void compute_H_orbits_on_points(int verbose_level)
void compute_N_orbits_on_points(int verbose_level)
int evaluate_orbit_invariant_function(int a, int i, int j, int verbose_level)
std::string prefix_line_orbits_under_H
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)
std::string prefix_spread_types_reduced
actions::action * A_on_reduced_spreads
ring_theory::longinteger_object N_go
std::string prefix_point_orbits_under_N
data_structures_groups::orbit_type_repository * Spread_type_reduced
void compute_orbit_invariant_on_classified_orbits(int verbose_level)
std::string prefix_line_orbits_under_N
void test_orbits_on_spreads(int verbose_level)
void compute_H_orbits_and_reduce(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)
std::string prefix_reduced_spread_orbits
std::string prefix_spread_types
std::string prefix_spread_orbits
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
void report_orbit_invariant(std::ostream &ost)
long int * Good_orbit_len
void report2(std::ostream &ost, int verbose_level)
data_structures_groups::orbit_type_repository * Spread_type
int find_orbits_of_length_in_reduced_spread_table(int orbit_length)
data_structures::tally * Classify_spread_invariant_by_orbit_length
void compute_H_orbits_on_reduced_spreads(int verbose_level)
groups::orbits_on_something * Line_orbits_under_N
void init_regular_packing(int verbose_level)
groups::orbits_on_something * Line_orbits_under_H
void export_reduced_spread_orbits_csv(std::string &fname_base, int f_original_spread_numbers, int verbose_level)
void compute_reduced_spread_types_wrt_H(int verbose_level)
packing_was_description * Descr
long int * Good_orbit_idx
actions::action * restricted_action(int orbit_length, int verbose_level)
classification and investigation of packings in PG(3,q)
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
std::vector< long int > External_lines
void init(packing_was *PW, int verbose_level)
long int * spread_to_external_line_idx
long int * external_line_to_spread
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
spreads tables with a selection of isomorphism types
the orbiter library for the classification of combinatorial objects