16namespace layer5_applications {
17namespace apps_combinatorics {
60 int f_projective_space,
66 int f_v = (verbose_level >= 1);
69 cout <<
"object_with_properties::init" << endl;
81 cout <<
"object_with_properties::init before Nau.automorphism_group_as_permutation_group" << endl;
89 cout <<
"object_with_properties::init after Nau.automorphism_group_as_permutation_group" << endl;
93 cout <<
"object_with_properties::init "
103 cout <<
"object_with_properties::init "
104 "before lift_generators_to_matrix_group" << endl;
110 cout <<
"object_with_properties::init "
111 "after lift_generators_to_matrix_group" << endl;
116 cout <<
"object_with_properties::init "
117 "before compute_flag_orbits" << endl;
121 cout <<
"object_with_properties::init "
122 "after compute_flag_orbits" << endl;
126 cout <<
"object_with_properties::init "
127 "before compute_TDO" << endl;
131 cout <<
"object_with_properties::init "
132 "after compute_TDO" << endl;
136 cout <<
"object_with_properties::init done" << endl;
142 int f_v = (verbose_level >= 1);
145 cout <<
"object_with_properties::compute_flag_orbits" << endl;
152 cout <<
"object_with_properties::compute_flag_orbits "
153 "before Flags->init" << endl;
157 cout <<
"object_with_properties::compute_flag_orbits "
158 "after Flags->init" << endl;
162 cout <<
"object_with_properties::compute_flag_orbits "
163 "before Anti_Flags->init" << endl;
167 cout <<
"object_with_properties::compute_flag_orbits "
168 "after Anti_Flags->init" << endl;
172 cout <<
"object_with_properties::compute_flag_orbits done" << endl;
178 int f_v = (verbose_level >= 1);
181 cout <<
"object_with_properties::lift_generators_to_matrix_group" << endl;
189 cout <<
"object_with_properties::lift_generators_to_matrix_group "
190 "before Naug.reverse_engineer_linear_group_from_permutation_group" << endl;
202 cout <<
"object_with_properties::lift_generators_to_matrix_group "
203 "after Naug.reverse_engineer_linear_group_from_permutation_group" << endl;
210 cout <<
"object_with_properties::lift_generators_to_matrix_group done" << endl;
221 int f_v = (verbose_level >= 1);
224 cout <<
"object_with_properties::init_object_in_projective_space" << endl;
238 cout <<
"object_with_properties::init_object_in_projective_space "
239 "before Nau.reverse_engineer_linear_group_from_permutation_group" << endl;
249 cout <<
"object_with_properties::init_object_in_projective_space "
250 "after Nau.reverse_engineer_linear_group_from_permutation_group" << endl;
255 cout <<
"object_with_properties::init_object_in_projective_space done" << endl;
264 int f_v = (verbose_level >= 1);
267 cout <<
"object_with_properties::latex_report" << endl;
270 ost <<
"Generators for the automorphism group: \\\\" << endl;
275 ost <<
"permutation degree is too large to print. \\\\" << endl;
281 ost <<
"Generators for the automorphism group as matrix group: \\\\" << endl;
284 cout <<
"object_with_properties::latex_report before SG->print_generators_in_latex_individually" << endl;
288 cout <<
"object_with_properties::latex_report after SG->print_generators_in_latex_individually" << endl;
296 std::string label_txt;
297 std::string label_tex;
301 fname.append(
"_aut.makefile");
302 label_txt.assign(
label);
303 label_txt.append(
"_aut");
304 label_tex.assign(
label);
305 label_tex.append(
"\\_aut");
308 cout <<
"object_with_properties::latex_report before A_perm->Strong_gens->export_to_orbiter_as_bsgs" << endl;
312 fname,
label, label_tex,
315 cout <<
"object_with_properties::latex_report after A_perm->Strong_gens->export_to_orbiter_as_bsgs" << endl;
326 cout <<
"object_with_properties::latex_report before orbits_on_points_schreier" << endl;
331 cout <<
"object_with_properties::latex_report after orbits_on_points_schreier" << endl;
337 cout <<
"object_with_properties::latex_report before export_INP_with_flag_orbits" << endl;
343 cout <<
"object_with_properties::latex_report after export_INP_with_flag_orbits" << endl;
347 cout <<
"object_with_properties::latex_report before export_TDA_with_flag_orbits" << endl;
353 cout <<
"object_with_properties::latex_report after export_TDA_with_flag_orbits" << endl;
359 ost <<
"Decomposition by combinatorial refinement:\\\\" << endl;
362 cout <<
"object_with_properties::latex_report before Sch->print_TDA" << endl;
366 cout <<
"object_with_properties::latex_report after Sch->print_TDA" << endl;
372 ost <<
"Decomposition by automorphism group:\\\\" << endl;
375 cout <<
"object_with_properties::latex_report before Sch->print_TDA" << endl;
379 cout <<
"object_with_properties::latex_report after Sch->print_TDA" << endl;
383 ost <<
"Canonical labeling:\\\\" << endl;
388 cout <<
"object_with_properties::latex_report before OwCF->encode_incma" << endl;
392 cout <<
"object_with_properties::latex_report after OwCF->encode_incma" << endl;
409 ost <<
"canonical row = " << canonical_row <<
"\\\\" << endl;
410 ost <<
"canonical orbit number = " << canonical_orbit <<
"\\\\" << endl;
421 std::string *point_labels;
422 std::string *block_labels;
425 point_labels =
new string [v];
426 block_labels =
new string [b];
432 for (i = 0; i < v; i++) {
436 sprintf(str,
"*%d", a);
439 sprintf(str,
"%d", a);
441 point_labels[i].assign(str);
443 for (j = 0; j < b; j++) {
445 block_labels[j].assign(str);
453 delete [] point_labels;
454 delete [] block_labels;
459 ost <<
"Flag orbits:\\\\" << endl;
462 ost <<
"Anti-Flag orbits:\\\\" << endl;
469 cout <<
"object_with_properties::latex_report f_lex_least" << endl;
479 cout <<
"object_with_properties::latex_report "
481 <<
" is not of type geometry_builder" << endl;
494 cout <<
"object_with_properties::latex_report before find_object, "
495 "OwCF->v=" <<
OwCF->
v << endl;
506 cout <<
"object_with_properties::latex_report after find_object" << endl;
513 cout <<
"object_with_properties::latex_report "
514 "cannot find object in geometry_builder" << endl;
522 cout <<
"object_with_properties::latex_report before FREE_OBJECT(NO)" << endl;
526 cout <<
"object_with_properties::latex_report after FREE_OBJECT(NO)" << endl;
530 cout <<
"object_with_properties::latex_report after FREE_OBJECT(Canonical_form)" << endl;
533 ost <<
"Is isomorphic to object " << idx <<
" in the list:\\\\" << endl;
534 ost <<
"Lex-least form is:\\\\" << endl;
543 cout <<
"object_with_properties::latex_report done" << endl;
550 int f_v = (verbose_level >= 1);
553 cout <<
"object_with_properties::compute_TDO" << endl;
563 TDO->
init(Enc, max_TDO_depth, verbose_level);
570 cout <<
"object_with_properties::compute_TDO done" << endl;
587 int f_v = (verbose_level >= 1);
590 cout <<
"object_with_properties::export_TDA_with_flag_orbits" << endl;
609 int *Inc_flag_orbits;
610 int nb_orbits_on_flags;
616 for (i = 0; i < Enc->
nb_rows; i++) {
618 for (j = 0; j < Enc->
nb_cols; j++) {
623 Inc_flag_orbits[i * Enc->
nb_cols + j] = orbit_idx + 1;
628 Inc_flag_orbits[i * Enc->
nb_cols + j] = nb_orbits_on_flags + orbit_idx + 1;
634 fname.append(
"_TDA.csv");
637 fname.append(
"_TDA_flag_orbits.csv");
641 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
650 for (i = 0; i < Enc->
nb_rows; i++) {
652 for (j = 0; j < Enc->
nb_cols; j++) {
655 Inc2[i * Enc->
nb_cols + j] = 1;
658 Inc2[i * Enc->
nb_cols + j] = 0;
666 fname.append(
"_INP.csv");
670 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
679 cout <<
"object_with_properties::export_TDA_with_flag_orbits done" << endl;
688 int f_v = (verbose_level >= 1);
691 cout <<
"object_with_properties::export_INP_with_flag_orbits" << endl;
697 cout <<
"object_with_properties::export_INP_with_flag_orbits before OwCF->encode_incma" << endl;
701 cout <<
"object_with_properties::export_INP_with_flag_orbits after OwCF->encode_incma" << endl;
702 cout <<
"object_with_properties::export_INP_with_flag_orbits Enc->nb_rows = " << Enc->
nb_rows << endl;
703 cout <<
"object_with_properties::export_INP_with_flag_orbits Enc->nb_cols = " << Enc->
nb_cols << endl;
718 int *Inc_flag_orbits;
719 int nb_orbits_on_flags;
725 for (i = 0; i < Enc->
nb_rows; i++) {
727 for (j = 0; j < Enc->
nb_cols; j++) {
732 Inc_flag_orbits[i * Enc->
nb_cols + j] = orbit_idx + 1;
737 Inc_flag_orbits[i * Enc->
nb_cols + j] = nb_orbits_on_flags + orbit_idx + 1;
743 fname.append(
"_INP.csv");
746 fname.append(
"_INP_flag_orbits.csv");
750 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
759 for (i = 0; i < Enc->
nb_rows; i++) {
761 for (j = 0; j < Enc->
nb_cols; j++) {
764 Inc2[i * Enc->
nb_cols + j] = 1;
767 Inc2[i * Enc->
nb_cols + j] = 0;
775 fname.append(
"_INP.csv");
779 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
788 cout <<
"object_with_properties::export_INP_with_flag_orbits done" << endl;
options for the report for a classification of combinatorial objects
int f_show_incidence_matrices
std::string lex_least_geometry_builder
encoding of combinatorial object for use with nauty
int get_incidence_ij(int i, int j)
void init_canonical_form(encoded_combinatorial_object *Enc, data_structures::nauty_output *NO, int verbose_level)
void latex_canonical_form_with_labels(std::ostream &ost, data_structures::nauty_output *NO, std::string *row_labels, std::string *col_labels, int verbose_level)
void latex_set_system_by_rows(std::ostream &ost, int verbose_level)
tactical decomposition of an incidence structure obtained by refinement
void init(encoded_combinatorial_object *Enc, int max_depth, int verbose_level)
void print_schemes(std::ostream &ost)
compact storage of 0/1-data as bitvectors
output data created by a run of nauty
classification of geometries
iso_type ** iso_type_at_line
data_structures::classify_using_canonical_forms * Canonical_forms
a collection of functions related to file io
void int_matrix_write_csv(std::string &fname, int *M, int m, int n)
long int file_size(std::string &fname)
symbol_table_object_type get_object_type(int idx)
int find_symbol(std::string &label)
a permutation group in a fixed action.
groups::strong_generators * Strong_gens
Interface to the graph canonization software Nauty.
void automorphism_group_as_permutation_group(data_structures::nauty_output *NO, actions::action *&A_perm, int verbose_level)
void reverse_engineer_linear_group_from_permutation_group(actions::action *A_linear, geometry::projective_space *P, groups::strong_generators *&SG, actions::action *&A_perm, data_structures::nauty_output *NO, int verbose_level)
Schreier trees for orbits of groups on points.
void print_TDA(std::ostream &ost, geometry::object_with_canonical_form *OwCF, combinatorics::classification_of_objects_report_options *Report_options, int verbose_level)
void print_generators_in_source_code()
schreier * orbits_on_points_schreier(actions::action *A_given, int verbose_level)
void export_to_orbiter_as_bsgs(actions::action *A2, std::string &fname, std::string &label, std::string &label_tex, int verbose_level)
void print_generators_in_latex_individually(std::ostream &ost)
classification of flag orbits of an incidence structure
int find_flag(int i, int j)
void init(object_with_properties *OwP, int f_anti_flags, actions::action *A_perm, groups::strong_generators *SG, int verbose_level)
void report(std::ostream &ost, int verbose_level)
groups::orbits_on_something * Orb
int f_flag_orbits_have_been_computed
void compute_flag_orbits(int verbose_level)
groups::strong_generators * SG
combinatorics::tdo_scheme_compute * TDO
void lift_generators_to_matrix_group(int verbose_level)
data_structures::nauty_output * NO
geometry::object_with_canonical_form * OwCF
void print_TDO(std::ostream &ost, combinatorics::classification_of_objects_report_options *Report_options)
void init_object_in_projective_space(geometry::object_with_canonical_form *OwCF, data_structures::nauty_output *NO, projective_geometry::projective_space_with_action *PA, std::string &label, int verbose_level)
flag_orbits_incidence_structure * Anti_Flags
void export_TDA_with_flag_orbits(std::ostream &ost, groups::schreier *Sch, int verbose_level)
~object_with_properties()
void export_INP_with_flag_orbits(std::ostream &ost, groups::schreier *Sch, int verbose_level)
void init(geometry::object_with_canonical_form *OwCF, data_structures::nauty_output *NO, int f_projective_space, projective_geometry::projective_space_with_action *PA, int max_TDO_depth, std::string &label, int verbose_level)
flag_orbits_incidence_structure * Flags
projective_geometry::projective_space_with_action * PA
void compute_TDO(int max_TDO_depth, int verbose_level)
void latex_report(std::ostream &ost, combinatorics::classification_of_objects_report_options *Report_options, int verbose_level)
projective space PG(n,q) with automorphism group PGGL(n+1,q)
geometry::projective_space * P
#define Int_vec_zero(A, B)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects