16namespace layer5_applications {
17namespace apps_combinatorics {
43 int f_v = (verbose_level >= 1);
46 cout <<
"combinatorial_object_activity::init" << endl;
54 cout <<
"combinatorial_object_activity::init done" << endl;
65 int f_v = (verbose_level >= 1);
68 cout <<
"combinatorial_object_activity::init_input_stream" << endl;
77 cout <<
"combinatorial_object_activity::init_input_stream done" << endl;
83 int f_v = (verbose_level >= 1);
86 cout <<
"combinatorial_object_activity::perform_activity" << endl;
95 cout <<
"combinatorial_object_activity::perform_activity done" << endl;
102 int f_v = (verbose_level >= 1);
105 cout <<
"combinatorial_object_activity::perform_activity_GOC" << endl;
111 cout <<
"combinatorial_object_activity::perform_activity_GOC f_line_type" << endl;
133 cout <<
"combinatorial_object_activity::perform_activity_GOC line type:" << endl;
144 cout <<
"combinatorial_object_activity::perform_activity_GOC f_conic_type" << endl;
151 long int **Pts_on_conic;
153 int *nb_pts_on_conic;
160 Pts_on_conic, Conic_eqn, nb_pts_on_conic, len,
164 cout <<
"We found " << len <<
" conics" << endl;
165 for (i = 0; i < len; i++) {
166 cout << i <<
" : " << nb_pts_on_conic << endl;
175 cout <<
"combinatorial_object_activity::perform_activity_GOC f_conic_type" << endl;
189 cout <<
"We found " << Rk.size() <<
" non-conical 6 subsets" << endl;
197 cout <<
"combinatorial_object_activity::perform_activity_GOC f_ideal" << endl;
208 cout <<
"combinatorial_object_activity::perform_activity_GOC before HPD->init" << endl;
215 cout <<
"combinatorial_object_activity::perform_activity_GOC after HPD->init" << endl;
228 cout <<
"combinatorial_object_activity::perform_activity_GOC the input set is:" << endl;
234 cout <<
"combinatorial_object_activity::perform_activity_GOC before HPD->vanishing_ideal" << endl;
237 r, Kernel, verbose_level - 1);
239 cout <<
"combinatorial_object_activity::perform_activity_GOC after HPD->vanishing_ideal" << endl;
248 cout <<
"looping over all generators of the ideal:" << endl;
249 for (h = 0; h < ns; h++) {
250 cout <<
"generator " << h <<
" / " << ns <<
" is ";
252 cout <<
" : " << endl;
254 vector<long int> Points;
258 Points, verbose_level);
259 nb_pts = Points.size();
262 for (i = 0; i < nb_pts; i++) {
267 cout <<
"We found " << nb_pts <<
" points on the generator of the ideal" << endl;
268 cout <<
"They are : ";
279 for (u = 0; u < size_out; u++) {
298 fname.append(
".txt");
301 cout <<
"We will write to the file " << fname << endl;
305 cout <<
"Written file " << fname <<
" of size "
311 cout <<
"combinatorial_object_activity::perform_activity_GOC done" << endl;
318 int f_v = (verbose_level >= 1);
321 cout <<
"combinatorial_object_activity::perform_activity_IS" << endl;
327 cout <<
"combinatorial_object_activity::perform_activity_IS f_canonical_form_PG" << endl;
345 cout <<
"combinatorial_object_activity::perform_activity_IS "
359 cout <<
"combinatorial_object_activity::perform_activity_IS before CO->perform_classification" << endl;
367 cout <<
"combinatorial_object_activity::perform_activity_IS after CO->perform_classification" << endl;
375 cout <<
"combinatorial_object_activity::perform_activity_IS before post_process_classification" << endl;
384 cout <<
"combinatorial_object_activity::perform_activity_IS after post_process_classification" << endl;
389 cout <<
"combinatorial_object_activity::perform_activity_IS before classification_report" << endl;
395 cout <<
"combinatorial_object_activity::perform_activity_IS after classification_report" << endl;
408 cout <<
"combinatorial_object_activity::perform_activity_IS f_canonical_form" << endl;
418 cout <<
"combinatorial_object_activity::perform_activity_IS before CO->perform_classification" << endl;
426 cout <<
"combinatorial_object_activity::perform_activity_IS after CO->perform_classification" << endl;
433 cout <<
"combinatorial_object_activity::perform_activity_IS before post_process_classification" << endl;
442 cout <<
"combinatorial_object_activity::perform_activity_IS after post_process_classification" << endl;
447 cout <<
"combinatorial_object_activity::perform_activity_IS before classification_report" << endl;
453 cout <<
"combinatorial_object_activity::perform_activity_IS after classification_report" << endl;
465 cout <<
"combinatorial_object_activity::perform_activity_IS f_draw_incidence_matrices" << endl;
476 cout <<
"combinatorial_object_activity::perform_activity_IS f_test_distinguishing_property" << endl;
487 cout <<
"combinatorial_object_activity::perform_activity_IS "
500 cout <<
"combinatorial_object_activity::perform_activity_IS !Gr->f_has_CG" << endl;
505 int *F_distinguishing;
510 for (input_idx = 0; input_idx <
IS->
Objects.size(); input_idx++) {
522 cout <<
"classification : ";
526 cout <<
"distinguishing sets are:";
527 for (input_idx = 0; input_idx <
IS->
Objects.size(); input_idx++) {
528 if (F_distinguishing[input_idx]) {
529 cout << input_idx <<
", ";
534 cout <<
"distinguishing sets are:";
535 for (input_idx = 0; input_idx <
IS->
Objects.size(); input_idx++) {
536 if (!F_distinguishing[input_idx]) {
556 cout <<
"combinatorial_object_activity::perform_activity_IS "
569 cout <<
"combinatorial_object_activity::perform_activity_IS "
572 long int *extract_idx_set;
576 extract_idx_set, extract_size, 0 );
578 TRUE , extract_idx_set, extract_size,
586 cout <<
"combinatorial_object_activity::perform_activity_IS "
587 "unpack_from_restricted_action "
603 cout <<
"combinatorial_object_activity::perform_activity_IS "
604 "line_covering_type "
626 int f_extract,
long int *extract_idx_set,
int extract_size,
629 int f_v = (verbose_level >= 1);
632 cout <<
"combinatorial_object_activity::do_save" << endl;
647 for (input_idx = 0; input_idx < N; input_idx++) {
650 cout <<
"combinatorial_object_activity::perform_activity_IS "
651 "input_idx = " << input_idx <<
" / " <<
IS->
Objects.size() << endl;
659 if (OwCF->
sz != sz) {
660 cout <<
"the objects have different sizes, cannot save" << endl;
671 for (input_idx = 0; input_idx < N; input_idx++) {
679 cout <<
"The combined number of objects is " << N << endl;
684 cout <<
"extracting subset of size " << extract_size << endl;
689 Sets2 =
NEW_lint(extract_size * sz);
690 for (h = 0; h < extract_size; h++) {
691 i = extract_idx_set[h];
697 cout <<
"number of sets is reduced from " << N <<
" to " << extract_size << endl;
708 fname_out.assign(save_as_fname);
712 cout <<
"Written file " << fname_out <<
" of size " << Fio.
file_size(fname_out) << endl;
715 cout <<
"combinatorial_object_activity::do_save done" << endl;
722 int f_projective_space,
727 int f_v = (verbose_level >= 1);
730 cout <<
"combinatorial_object_activity::post_process_classification" << endl;
739 for (iso_type = 0; iso_type < CO->
nb_orbits; iso_type++) {
741 cout <<
"iso_type = " << iso_type <<
" / " << CO->
nb_orbits << endl;
742 cout <<
"NO=" << endl;
748 sprintf(str,
"_object%d", iso_type);
749 label.assign(prefix);
755 f_projective_space, PA,
764 cout <<
"combinatorial_object_activity::post_process_classification done" << endl;
773 int f_v = (verbose_level >= 1);
776 cout <<
"combinatorial_object_activity::classification_report" << endl;
782 cout <<
"please use option -classification_prefix <prefix> to set the "
783 "prefix for the output file" << endl;
790 cout <<
"combinatorial_object_activity::classification_report before latex_report" << endl;
798 cout <<
"combinatorial_object_activity::classification_report after latex_report" << endl;
809 int f_v = (verbose_level >= 1);
814 cout <<
"combinatorial_object_activity::latex_report" << endl;
821 fname.assign(Report_options->
prefix);
822 fname.append(
"_classification.tex");
825 cout <<
"combinatorial_object_activity::classification_report before latex_report" << endl;
831 cout <<
"combinatorial_object_activity::latex_report, CB->nb_types=" << CO->
CB->
nb_types << endl;
845 fp <<
"\\\\" << endl;
848 cout <<
"combinatorial_object_activity::latex_report before loop" << endl;
859 cout <<
"Written file " << fname <<
" of size "
865 cout <<
"combinatorial_object_activity::latex_report done" << endl;
876 int f_v = (verbose_level >= 1);
879 cout <<
"combinatorial_object_activity::report_all_isomorphism_types" << endl;
887 fp <<
"\\section*{Isomorphism type " << i <<
" / " << CO->
CB->
nb_types <<
"}" << endl;
888 fp <<
"Isomorphism type " << i <<
" / " << CO->
CB->
nb_types
890 <<
" is original object "
897 int nb_input_objects;
899 nb_input_objects, i, 0 );
902 fp <<
"This isomorphism type appears " << nb_input_objects
903 <<
" times, namely for the following "
904 << nb_input_objects <<
" input objects: " << endl;
905 if (nb_input_objects < 10) {
908 fp <<
"$\\\\" << endl;
911 fp <<
"Too big to print. \\\\" << endl;
915 nb_input_objects, 10 ,
TRUE );
924 cout <<
"combinatorial_object_activity::report_all_isomorphism_types before report_isomorphism_type" << endl;
928 cout <<
"combinatorial_object_activity::report_all_isomorphism_types after report_isomorphism_type" << endl;
934 cout <<
"combinatorial_object_activity::report_all_isomorphism_types done" << endl;
945 int i,
int verbose_level)
947 int f_v = (verbose_level >= 1);
950 cout <<
"combinatorial_object_activity::report_isomorphism_type i=" << i << endl;
959 cout <<
"###################################################"
960 "#############################" << endl;
961 cout <<
"Orbit " << i <<
" / " << CO->
CB->
nb_types
962 <<
" is canonical form no " << j
963 <<
", original object no " << CO->
CB->
Type_rep[i]
970 int nb_input_objects;
972 nb_input_objects, j, 0 );
974 cout <<
"This isomorphism type appears " << nb_input_objects
975 <<
" times, namely for the following "
976 "input objects:" << endl;
977 if (nb_input_objects < 10) {
979 nb_input_objects, 10 ,
983 cout <<
"too many to print" << endl;
992 cout <<
"combinatorial_object_activity::report_isomorphism_type i=" << i <<
" before report_object" << endl;
1001 cout <<
"combinatorial_object_activity::report_isomorphism_type i=" << i <<
" after report_object" << endl;
1008 cout <<
"combinatorial_object_activity::report_isomorphism_type i=" << i <<
" done" << endl;
1019 int f_v = (verbose_level >= 1);
1022 cout <<
"combinatorial_object_activity::report_object" << endl;
1033 object_in_projective_space_with_action *OiPA;
1035 OiPA = (object_in_projective_space_with_action *)
1036 CB->Type_extra_data[object_idx];
1038 OiPA->report(fp, PA, max_TDO_depth, verbose_level);
1043 OwP[object_idx].
latex_report(fp, Report_options, verbose_level);
1051 std::string &prefix,
1055 int f_v = (verbose_level >= 1);
1060 cout <<
"combinatorial_object_activity::draw_incidence_matrices" << endl;
1067 fname.assign(prefix);
1068 fname.append(
"_incma.tex");
1071 cout <<
"combinatorial_object_activity::draw_incidence_matrices before latex_report" << endl;
1076 ofstream ost(fname);
1089 cout <<
"combinatorial_object_activity::draw_incidence_matrices before loop" << endl;
1094 ost <<
"\\noindent" << endl;
1096 for (i = 0; i < N; i++) {
1111 Enc->latex_incma(ost, verbose_level);
1124 cout <<
"Written file " << fname <<
" of size "
1128 cout <<
"combinatorial_object_activity::draw_incidence_matrices done" << endl;
1133 std::string &prefix,
1134 std::string &group_label,
1138 int f_v = (verbose_level >= 1);
1143 cout <<
"combinatorial_object_activity::unpack_from_restricted_action" << endl;
1156 cout <<
"combinatorial_object_activity::unpack_from_restricted_action must be a linear group" << endl;
1161 cout <<
"combinatorial_object_activity::unpack_from_restricted_action must be a restricted action" << endl;
1170 fname.assign(prefix);
1171 fname.append(
"_unpacked.txt");
1174 cout <<
"combinatorial_object_activity::unpack_from_restricted_action before latex_report" << endl;
1180 ofstream ost(fname);
1189 cout <<
"combinatorial_object_activity::unpack_from_restricted_action before loop" << endl;
1196 for (i = 0; i < N; i++) {
1207 for (h = 0; h < OwCF->
sz; h++) {
1219 for (h = 0; h < OwCF->
sz; h++) {
1220 ost <<
" " << OwCF->
set[h];
1232 cout <<
"Written file " << fname <<
" of size "
1236 cout <<
"combinatorial_object_activity::unpack_from_restricted_action done" << endl;
1242 std::string &prefix,
1243 std::string &projective_space_label,
1248 int f_v = (verbose_level >= 1);
1253 cout <<
"combinatorial_object_activity::line_covering_type" << endl;
1264 long int *the_lines;
1271 fname.assign(prefix);
1272 fname.append(
"_line_covering_type.txt");
1275 cout <<
"combinatorial_object_activity::line_covering_type before latex_report" << endl;
1281 ofstream ost(fname);
1290 cout <<
"combinatorial_object_activity::line_covering_type before loop" << endl;
1300 for (i = 0; i < N; i++) {
1308 the_lines, nb_lines,
1309 OwCF->
set, OwCF->
sz, type, 0 );
1312 for (h = 0; h < nb_lines; h++) {
1313 ost <<
" " << type[h];
1325 cout <<
"Written file " << fname <<
" of size "
1329 cout <<
"combinatorial_object_activity::line_covering_type done" << endl;
int f_classification_prefix
options for the report for a classification of combinatorial objects
int f_show_incidence_matrices
classification of combinatorial objects using a graph-theoretic approach
classification_of_objects_description * Descr
data_structures::classify_bitvectors * CB
geometry::object_with_canonical_form ** OWCF_transversal
data_structures::nauty_output ** NO_transversal
void perform_classification(classification_of_objects_description *Descr, int f_projective_space, geometry::projective_space *P, data_structures::data_input_stream *IS, int verbose_level)
data_structures::tally * T_Ago
void report_summary_of_orbits(std::ostream &fp, int verbose_level)
encoding of combinatorial object for use with nauty
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 print_file_tex(std::ostream &ost, int f_backwards)
void init(int *data, int data_length, int f_second, int verbose_level)
void print(int f_backwards)
void print_first(int f_backwards)
void get_class_by_value(int *&Pts, int &nb_pts, int value, int verbose_level)
to create a geometric object from a description using class geometric_object_description
geometric_object_description * Descr
projective space PG(n,q) of dimension n over Fq
void print_set_numerical(std::ostream &ost, long int *set, int set_size)
void conic_type(long int *set, int set_size, int threshold, long int **&Pts_on_conic, int **&Conic_eqn, int *&nb_pts_on_conic, int &nb_conics, int verbose_level)
void determine_nonconical_six_subsets(long int *set, int set_size, std::vector< int > &Rk, int verbose_level)
field_theory::finite_field * F
void line_intersection_type(long int *set, int set_size, int *type, int verbose_level)
void line_intersection_type_basic_given_a_set_of_lines(long int *lines_by_rank, int nb_lines, long int *set, int set_size, int *type, int verbose_level)
a graph with a vertex coloring
int test_distinguishing_property(long int *set, int sz, int verbose_level)
a collection of functions related to file io
void lint_matrix_write_csv(std::string &fname, long int *M, int m, int n)
long int file_size(std::string &fname)
void write_set_to_file(std::string &fname, long int *the_set, int set_size, int verbose_level)
interface to create latex output files
void head_easy(std::ostream &ost)
void int_set_print_tex(std::ostream &ost, int *v, int len)
void foot(std::ostream &ost)
void int_vec_print_as_matrix(std::ostream &ost, int *v, int len, int width, int f_tex)
symbol_table_object_type get_object_type(int idx)
void get_lint_vector_from_label(std::string &label, long int *&v, int &sz, int verbose_level)
int find_symbol(std::string &label)
homogeneous polynomials of a given degree in a given number of variables over a finite field GF(q)
void init(field_theory::finite_field *F, int nb_vars, int degree, int f_init_incidence_structure, monomial_ordering_type Monomial_ordering_type, int verbose_level)
void enumerate_points(int *coeff, std::vector< long int > &Pts, int verbose_level)
geometry::projective_space * get_P()
void vanishing_ideal(long int *Pts, int nb_pts, int &r, int *Kernel, int verbose_level)
symmetry_group_type type_G
creates a linear group from command line arguments using linear_group_description
restricted action on an invariant subset
long int original_point(long int pt)
a wrapper for linear_group and permutation_group_create
groups::linear_group * LG
description of an activity for a combinatorial object
std::string draw_incidence_matrices_prefix
std::string line_covering_type_projective_space
std::string canonical_form_PG_PG_label
std::string extract_subset_set
std::string line_covering_type_prefix
int f_unpack_from_restricted_action
int f_test_distinguishing_property
std::string unpack_from_restricted_action_group_label
std::string save_as_fname
std::string extract_subset_fname
std::string line_covering_type_lines
combinatorics::classification_of_objects_description * Canonical_form_Descr
int f_canonical_form_PG_has_PA
std::string unpack_from_restricted_action_prefix
combinatorics::classification_of_objects_report_options * Classification_of_objects_report_options
combinatorics::classification_of_objects_description * Canonical_form_PG_Descr
int f_draw_incidence_matrices
projective_geometry::projective_space_with_action * Canonical_form_PG_PA
std::string test_distinguishing_property_graph
void draw_incidence_matrices(std::string &prefix, data_structures::data_input_stream *IS, int verbose_level)
void report_isomorphism_type(std::ostream &fp, combinatorics::classification_of_objects_report_options *Report_options, combinatorics::classification_of_objects *CO, object_with_properties *OwP, int i, int verbose_level)
void perform_activity_IS(int verbose_level)
void classification_report(combinatorics::classification_of_objects *CO, object_with_properties *OwP, int verbose_level)
void line_covering_type(std::string &prefix, std::string &projective_space_label, std::string &lines, data_structures::data_input_stream *IS, int verbose_level)
data_structures::data_input_stream * IS
void init_input_stream(combinatorial_object_activity_description *Descr, data_structures::data_input_stream *IS, int verbose_level)
void perform_activity_GOC(int verbose_level)
void do_save(std::string &save_as_fname, int f_extract, long int *extract_idx_set, int extract_size, int verbose_level)
~combinatorial_object_activity()
void init(combinatorial_object_activity_description *Descr, geometry::geometric_object_create *GOC, int verbose_level)
geometry::geometric_object_create * GOC
void report_object(std::ostream &fp, combinatorics::classification_of_objects_report_options *Report_options, combinatorics::classification_of_objects *CO, object_with_properties *OwP, int object_idx, int verbose_level)
combinatorial_object_activity_description * Descr
void report_all_isomorphism_types(std::ostream &fp, combinatorics::classification_of_objects_report_options *Report_options, combinatorics::classification_of_objects *CO, object_with_properties *OwP, int verbose_level)
void perform_activity(int verbose_level)
void latex_report(combinatorics::classification_of_objects_report_options *Report_options, combinatorics::classification_of_objects *CO, object_with_properties *OwP, int verbose_level)
combinatorial_object_activity()
void unpack_from_restricted_action(std::string &prefix, std::string &group_label, data_structures::data_input_stream *IS, int verbose_level)
void post_process_classification(combinatorics::classification_of_objects *CO, object_with_properties *&OwP, int f_projective_space, projective_geometry::projective_space_with_action *PA, std::string &prefix, int verbose_level)
object properties which are derived from nauty canonical form
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)
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
projective_geometry::projective_space_with_action * get_object_of_type_projective_space(std::string &label)
apps_algebra::any_group * get_object_of_type_any_group(std::string &label)
#define Lint_vec_copy(A, B, C)
#define Lint_vec_print(A, B, C)
#define NEW_OBJECTS(type, n)
#define Int_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
@ action_by_restriction_t
user_interface::orbiter_top_level_session * The_Orbiter_top_level_session
the orbiter library for the classification of combinatorial objects
induced_actions::action_by_restriction * ABR