16namespace layer5_applications {
21 isomorph *Iso,
int f_split,
int split_r,
int split_m,
24 int f_v = (verbose_level >= 1);
25 int f_vv = (verbose_level >= 2);
26 int f_v3 = (verbose_level >= 3);
31 cout <<
"packing_classify::compute_klein_invariants" << endl;
34 for (orbit = 0; orbit < Iso->
Reps->
count; orbit++) {
36 if (f_split && (orbit % split_m) != split_r) {
41 cout <<
"packing_classify::compute_klein_invariants orbit "
42 << orbit <<
" / " << Iso->
Reps->
count << endl;
48 cout <<
"file size of " << fname <<
" is " << Fio.
file_size(fname) << endl;
51 cout <<
"file " << fname <<
" exists, skipping" << endl;
59 cout <<
"read representative of orbit " << orbit
60 <<
" (id=" <<
id <<
")" << endl;
67 cout <<
"read representative of orbit " << orbit
68 <<
" (id=" <<
id <<
") list of lines:" << endl;
75 cout <<
"packing_classify::compute_klein_invariants orbit "
77 <<
" before compute_and_save_klein_invariants" << endl;
85 cout <<
"packing_classify::compute_klein_invariants orbit "
87 <<
" after compute_and_save_klein_invariants" << endl;
94 cout <<
"packing_classify::compute_klein_invariants done" << endl;
99 std::string &fname, std::string &prefix,
int iso_cnt)
101 fname.assign(prefix);
103 sprintf(str,
"%d_klein_invariant.bin", iso_cnt);
109 long int *data,
int data_size,
int verbose_level)
111 int f_v = (verbose_level >= 1);
113 long int **Pts_on_plane;
114 int *nb_pts_on_plane;
119 cout <<
"packing_classify::compute_and_save_klein_invariants" << endl;
123 cout <<
"packing_classify::compute_and_save_klein_invariants "
124 "data_size != size_of_packing * spread_size" << endl;
129 cout <<
"packing_classify::compute_and_save_klein_invariants "
130 "before P3->klein_correspondence" << endl;
139 cout <<
"packing_classify::compute_and_save_klein_invariants "
140 "after P3->klein_correspondence" << endl;
143 cout <<
"packing_classify::compute_and_save_klein_invariants "
144 "before plane_intersection_type_fast" << endl;
147 R, Pts_on_plane, nb_pts_on_plane, nb_planes,
151 cout <<
"packing_classify::compute_and_save_klein_invariants: "
152 "We found " << nb_planes <<
" planes." << endl;
154 for (i = 0; i < nb_planes; i++) {
155 cout << setw(3) << i <<
" : " << R[i]
156 <<
" : " << setw(5) << nb_pts_on_plane[i] <<
" : ";
166 v.
m_ii(0, nb_planes);
172 for (i = 0; i < nb_planes; i++) {
178 for (j = 0; j < nb_pts_on_plane[i]; j++) {
189 for (i = 0; i < nb_planes; i++) {
196 cout <<
"packing_classify::compute_and_save_klein_invariants done" << endl;
203 int f_v = (verbose_level >= 1);
209 cout <<
"packing_classify::report" << endl;
212 sprintf(fname,
"packing_report_q%d.tex", (
int)
q);
217 cout <<
"Writing file " << fname <<
" with "
218 << Iso->
Reps->
count <<
" spreads:" << endl;
224 cout <<
"packing_classify::report written file " << fname
225 <<
" of size " << Fio.
file_size(fname) << endl;
231 cout <<
"packing_classify::report done" << endl;
236 ostream &ost,
int verbose_level)
238 int f_v = (verbose_level >= 1);
242 ost <<
"\\chapter{Summary}" << endl << endl;
244 <<
" packings of PG$(3," <<
q <<
")$." << endl << endl;
257 cout <<
"packing::report loading and "
258 "computing invariants" << endl;
261 inv->
init(Iso,
this, verbose_level);
265 cout <<
"packing::report loading and "
266 "computing invariants done" << endl;
274 ost <<
"Classification by Ago: ";
276 ost <<
"\\\\" << endl;
278 ost <<
"\\chapter{Invariants: Types of Packing}" << endl << endl;
284 ost <<
"\\clearpage" << endl << endl;
288 ost <<
"\\clearpage" << endl << endl;
292 ost <<
"\\clearpage" << endl << endl;
310 isomorph *Iso, ostream &ost,
int verbose_level)
315 const char *author =
"Orbiter";
317 int f_landscape =
FALSE;
319 int f_enlarged_page =
TRUE;
320 int f_pagenumbers =
TRUE;
323 sprintf(title,
"The Packings of PG$(%d,%d)$", (
int)3, (
int)
q);
324 L.
head(ost, f_book, f_title,
326 f_toc, f_landscape, f_12pt,
327 f_enlarged_page, f_pagenumbers,
339 int f_v = (verbose_level >= 1);
343 cout <<
"packing_classify::report_packings_by_ago" << endl;
346 ost <<
"\\chapter{The Packings of PG$(3," <<
q <<
")$}"
349 ost <<
"\\clearpage" << endl << endl;
352 int u, v, a, cnt, fst, length, t, vv;
356 for (u = C_ago.
nb_types - 1; u >= 0; u--) {
362 ost <<
"\\section{Packings with a Group of Order "
363 "$" << t <<
"$}" << endl;
365 ost <<
"There are " << length <<
" packings with an "
366 "automorphism group of order $" << t <<
"$.\\\\" << endl;
369 ost <<
"\\bigskip" << endl;
373 ost <<
"Too many packings to list.\\\\" << endl;
379 for (v = 0; v < length; v++) {
387 for (v = 0; v < length; v++, cnt++) {
396 orbit, inv, verbose_level);
406 cout <<
"packing_classify::report_packings_by_ago done" << endl;
415 int f_v = (verbose_level >= 1);
416 int i, id, rep, first;
420 cout <<
"packing_classify::report_isomorphism_type" << endl;
431 for (i = 0; i < Iso->
size; i++) {
440 ost <<
"\\subsection*{Isomorphism Type " << orbit <<
"}" << endl;
441 ost <<
"\\bigskip" << endl;
443 for (i = 0; i < Iso->
size; i++) {
447 ost <<
"spread : isotype : dualspread \\\\" << endl;
448 for (i = 0; i < Iso->
size; i++) {
454 ost <<
"\\\\" << endl;
457 ost <<
"\\bigskip" << endl;
462 ost <<
"Classification by isomorphism type of spreads: ";
464 ost <<
"\\\\" << endl;
469 int f_implicit_fusion =
TRUE;
475 ost <<
"The dual packing belongs to isomorphism type "
476 << dual_idx <<
"\\\\" << endl;
477 ost <<
"\\bigskip" << endl;
480 ost <<
"Stabilizer has order $";
482 ost <<
"$. The group that is induced has order $";
484 ost <<
"$\\\\" << endl;
489 ost <<
"Plane type of Klein-image is $($ ";
491 ost <<
" $)$" << endl << endl;
492 ost <<
"\\bigskip" << endl << endl;
500 ost <<
"Stabilizer has order $";
502 ost <<
"$\\\\" << endl;
507 cout <<
"packing_classify::report computing induced "
508 "action on the set (in data)" << endl;
516 cout <<
"action " << Iso->
AA->
label <<
" computed, "
517 "group order is " << go << endl;
530 Stab->
gens, verbose_level - 2);
543 ost <<
"\\bigskip" << endl;
546 <<
"$ orbits on the set.\\\\" << endl;
547 ost <<
"The orbit type is $[$ ";
549 ost <<
" $]$\\\\" << endl;
550 ost <<
"\\bigskip" << endl;
553 ost, orbit, inv, verbose_level);
562 cout <<
"packing_classify::report_isomorphism_type done" << endl;
580 cout <<
"nb_points=" << nb_points << endl;
583 ost <<
"The lines of the packing are "
584 "(each row corresponds to a spread):" << endl;
586 ost <<
"\\left[" << endl;
588 ost <<
"\\right]" << endl;
594 ost <<
"\\left[" << endl;
595 ost <<
"\\begin{array}{*{" <<
spread_size <<
"}{c}}" << endl;
605 ost <<
"\\\\" << endl;
609 ost <<
"\\end{array}" << endl;
610 ost <<
"\\right]" << endl;
616 f <<
"Spread $" << u <<
"$ is spread number $"
617 << packing[u] <<
"$.\\\\" << endl;
618 f <<
"Lines of the spread are:" << endl;
621 if (v && (v % 5) == 0) {
626 T->
Grass->unrank_int(a, 0);
627 f <<
"L_{" << a <<
"}=";
628 f <<
"\\left[" << endl;
629 f <<
"\\begin{array}{c}" << endl;
630 for (i = 0; i <
T->
k; i++) {
631 for (j = 0; j <
T->
n; j++) {
636 f <<
"\\end{array}" << endl;
637 f <<
"\\right]" << endl;
642 T->
Grass->unrank_int(a, 0);
644 the_spread + v * nb_points,
647 f <<
"The partition of the point set is:\\\\" << endl;
649 f <<
"\\left[" << endl;
650 int_matrix_print_tex(f,
652 f <<
"\\right]" << endl;
667 int f_vv = (verbose_level >= 2);
679 cout <<
"packing::report loading "
680 "file " << fname_klein << endl;
684 V, verbose_level - 1);
689 ost <<
"\\bigskip" << endl << endl;
691 ost <<
"\\[" << endl;
692 cout <<
"copying file "
699 ost <<
"\\]" << endl;
700 ost <<
"\\[" << endl;
705 ost <<
"\\]" << endl;
708 ost <<
"The TDO decomposition is "
709 "too large to print\\\\" << endl;
716 ostream &ost,
int orbit,
int verbose_level)
725 ost <<
"The stabilizer of order $" << go
726 <<
"$ is generated by:\\\\" << endl;
728 for (i = 0; i < Stab->
gens.
len; i++) {
749 isomorph &Iso, ostream &ost,
int orbit,
759 ost <<
"The stabilizer generators in their action "
760 "on the spreads of the packing are:\\\\" << endl;
762 for (i = 0; i < Stab->
gens.
len; i++) {
765 int f_do_it_anyway_even_for_big_degree =
TRUE;
766 int f_print_cycles_of_length_one =
FALSE;
780 offset, f_do_it_anyway_even_for_big_degree,
781 f_print_cycles_of_length_one, 0 );
782 ost <<
"$\\\\" << endl;
799 sprintf(fname,
"group_%d.g", orbit);
810 for (i = 0; i < Stab->
gens.
len; i++) {
813 int f_do_it_anyway_even_for_big_degree =
TRUE;
814 int f_print_cycles_of_length_one =
FALSE;
825 fp <<
"g" << i + 1 <<
" := ";
828 offset, f_do_it_anyway_even_for_big_degree,
829 f_print_cycles_of_length_one, 0 );
834 fp <<
"G := Group([";
835 for (i = 0; i < Stab->
gens.
len; i++) {
837 if (i < Stab->gens.len - 1) {
850 ost <<
"\\chapter{The Field GF$(" <<
q <<
")$}" << endl << endl;
855 ost <<
"\\chapter{The Points and Lines of "
856 "PG$(3," <<
q <<
")$}" << endl << endl;
870 ost <<
"PG$(3," <<
q <<
")$ has " << nb_points
871 <<
" points:\\\\" << endl;
872 for (i = 0; i < nb_points; i++) {
874 ost <<
"$P_{" << i <<
"}=";
876 ost <<
"$\\\\" << endl;
879 ost <<
"\\bigskip" << endl;
881 ost <<
"PG$(3," <<
q <<
")$ has " <<
nb_lines
882 <<
" lines:\\\\" << endl;
885 ost <<
"$L_{" << u <<
"}=";
886 ost <<
"\\left[" << endl;
887 ost <<
"\\begin{array}{c}" << endl;
888 for (i = 0; i <
T->
k; i++) {
889 for (j = 0; j <
T->
n; j++) {
892 ost <<
"\\\\" << endl;
894 ost <<
"\\end{array}" << endl;
895 ost <<
"\\right]" << endl;
896 ost <<
" = \\{" << endl;
897 for (i = 0; i <
P3->
k; i++) {
903 ost <<
"\\}" << endl;
904 ost <<
"$\\\\" << endl;
908 ost <<
"\\chapter{The Spreads of PG$(3," <<
q <<
")$}"
912 <<
" labeled spreads\\\\" << endl;
915 ost <<
"Spread " << u <<
" is $";
918 ost <<
"$ isomorphism type "
a collection of combinatorial functions
long int generalized_binomial(int n, int k, int q)
a collection of functions related to sorted vectors
void int_vec_heapsort(int *v, int len)
a statistical analysis of data consisting of single integers
void init(int *data, int data_length, int f_second, int verbose_level)
void init_lint(long int *data, int data_length, int f_second, int verbose_level)
void print_naked_tex(std::ostream &ost, int f_backwards)
void cheat_sheet(std::ostream &f, int verbose_level)
void unrank_lint(long int rk, int verbose_level)
int nb_points_covered(int verbose_level)
void points_covered(long int *the_points, int verbose_level)
void klein_correspondence(projective_space *P5, long int *set_in, int set_size, long int *set_out, int verbose_level)
projective_space_implementation * Implementation
void plane_intersection_type_slow(grassmann *G, long int *set, int set_size, ring_theory::longinteger_object *&R, long int **&Pts_on_plane, int *&nb_pts_on_plane, int &len, int verbose_level)
void unrank_point(int *v, long int rk)
void compute_list_of_lines_from_packing(long int *list_of_lines, long int *packing, int sz_of_packing, int verbose_level)
long int * dual_spread_idx
a collection of functions related to file io
void copy_file_to_ostream(std::ostream &ost, const char *fname)
long int file_size(std::string &fname)
interface to create latex output files
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)
void lint_matrix_print_tex(std::ostream &ost, long int *p, int m, int n)
void foot(std::ostream &ost)
a class to represent arbitrary precision integers
std::ostream & print_not_scientific(std::ostream &ost)
DISCRETA vector class for vectors of DISCRETA objects.
discreta_base & s_i(int i)
void save_file(const char *fname)
void load_file(const char *fname)
Vector & change_to_vector()
void element_print_latex(void *elt, std::ostream &ost)
void element_print_as_permutation_with_offset(void *elt, std::ostream &ost, int offset, int f_do_it_anyway_even_for_big_degree, int f_print_cycles_of_length_one, int verbose_level)
void compute_all_point_orbits(groups::schreier &S, data_structures_groups::vector_ge &gens, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
field_theory::finite_field * GFq
Schreier trees for orbits of groups on points.
a permutation group represented via a stabilizer chain
void group_order(ring_theory::longinteger_object &go)
data_structures_groups::vector_ge gens
classification of combinatorial objects using subobjects
void load_solution(int id, long int *data)
void induced_action_on_set_basic(groups::sims *S, long int *set, int verbose_level)
std::string prefix_invariants
int identify_database_is_open(long int *set, int f_implicit_fusion, int verbose_level)
std::string * line_orbit_label_tex
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)
ring_theory::longinteger_object * Ago
void init(isomorph *Iso, packing_classify *P, 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)
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)
geometry::projective_space * P3
void report_extra_stuff(isomorph *Iso, std::ostream &ost, int verbose_level)
void report_title_page(isomorph *Iso, std::ostream &ost, 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)
geometry::projective_space * P5
void klein_invariants_fname(std::string &fname, std::string &prefix, int iso_cnt)
spreads::spread_table_with_selection * Spread_table_with_selection
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 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)
void compute_decomposition(int verbose_level)
std::string fname_col_scheme
data_structures::tally * C
void init_klein_invariants(Vector &v, int verbose_level)
std::string fname_row_scheme
groups::matrix_group * Mtx
geometry::grassmann * Grass
apps_geometry::singer_cycle * Sing
geometry::spread_tables * Spread_tables
#define Lint_matrix_print(A, B, C)
#define Int_vec_print_fully(A, B, C)
#define Lint_vec_print(A, B, C)
#define Lint_vec_print_fully(A, B, C)
the orbiter library for the classification of combinatorial objects