19namespace layer4_classification {
20namespace invariant_relations {
57 int max_orbits,
int representation_sz,
60 int f_v = (verbose_level >= 1);
63 cout <<
"classification_step::init "
64 "group order = " <<
go
77 cout <<
"classification_step::init done" << endl;
82 int orbit_index,
int verbose_level)
84 int f_v = (verbose_level >= 1);
90 cout <<
"classification_step::get_set_and_stabilizer" << endl;
101 cout <<
"classification_step::get_set_and_stabilizer "
102 "before Orbit[orbit_index].gens->create_copy" << endl;
108 cout <<
"classification_step::get_set_and_stabilizer "
109 "before SaS->init_everything" << endl;
117 cout <<
"classification_step::get_set_and_stabilizer done" << endl;
126 int f_v = (verbose_level >= 1);
131 cout <<
"classification_step::write_file" << endl;
134 cout <<
"classification_step::write_file nb_orbits=" <<
nb_orbits << endl;
135 cout <<
"classification_step::write_file representation_sz=" <<
representation_sz << endl;
137 fp.write((
char *) &
nb_orbits,
sizeof(int));
142 cout <<
"classification_step::write_file Rep matrix:" << endl;
147 fp.write((
char *) &
Rep[i],
sizeof(
long int));
151 cout <<
"classification_step::write_file writing " <<
nb_orbits <<
" orbits" << endl;
158 cout <<
"classification_step::write_file finished" << endl;
166 int f_v = (verbose_level >= 1);
171 cout <<
"classification_step::read_file" << endl;
176 fp.read((
char *) &
nb_orbits,
sizeof(int));
180 cout <<
"classification_step::read_file nb_orbits=" <<
nb_orbits << endl;
181 cout <<
"classification_step::read_file representation_sz=" <<
representation_sz << endl;
186 fp.read((
char *) &
Rep[i],
sizeof(
long int));
190 cout <<
"classification_step::read_file Rep matrix:" << endl;
197 cout <<
"classification_step::read_file reading " <<
nb_orbits <<
" orbits" << endl;
206 cout <<
"classification_step::read_file finished" << endl;
213 int f_v = (verbose_level >= 1);
219 cout <<
"classification_step::generate_source_code" << endl;
221 fname.assign(fname_base);
222 fname.append(
".cpp");
224 prefix.assign(fname_base);
229 f <<
"static int " << prefix <<
"_nb_reps = "
231 f <<
"static int " << prefix <<
"_size = "
237 cout <<
"classification_step::generate_source_code "
238 "preparing reps" << endl;
245 f <<
"static long int " << prefix <<
"_reps[] = {" << endl;
246 for (orbit_index = 0;
252 cout <<
"classification_step::generate_source_code orbit_index = " << orbit_index << endl;
257 f << Rep_lint_ith(orbit_index)[i];
272 cout <<
"classification_step::generate_source_code preparing stab_order" << endl;
274 f <<
"// the stabilizer orders:" << endl;
275 f <<
"static const char *" << prefix <<
"_stab_order[] = {" << endl;
276 for (orbit_index = 0;
295 f <<
"static int " << prefix <<
"_make_element_size = "
299 int *stab_gens_first;
306 for (orbit_index = 0;
309 stab_gens_first[orbit_index] = fst;
310 stab_gens_len[orbit_index] =
314 fst += stab_gens_len[orbit_index];
319 cout <<
"classification_step::generate_source_code preparing stab_gens_fst" << endl;
321 f <<
"static int " << prefix <<
"_stab_gens_fst[] = { " << endl <<
"\t";
322 for (orbit_index = 0;
325 f << stab_gens_first[orbit_index];
329 if (((orbit_index + 1) % 10) == 0) {
336 cout <<
"classification_step::generate_source_code preparing stab_gens_len" << endl;
338 f <<
"static int " << prefix <<
"_stab_gens_len[] = { " << endl <<
"\t";
339 for (orbit_index = 0;
342 f << stab_gens_len[orbit_index];
346 if (((orbit_index + 1) % 10) == 0) {
354 cout <<
"classification_step::generate_source_code preparing stab_gens" << endl;
356 f <<
"static int " << prefix <<
"_stab_gens[] = {" << endl;
357 for (orbit_index = 0;
362 for (j = 0; j < stab_gens_len[orbit_index]; j++) {
364 cout <<
"classification_step::generate_source_code "
365 "before extract_strong_generators_in_order generator " << j <<
" / "
366 << stab_gens_len[orbit_index] << endl;
370 Orbit[orbit_index].gens->
gens->ith(j), f);
386 cout <<
"written file " << fname <<
" of size "
389 cout <<
"classification_step::generate_source_"
400long int *classification_step::Rep_lint_ith(
int i)
413 cout <<
"i : stab order : orbit length" << endl;
420 cout << i <<
" : " << go1 <<
" : " << ol << endl;
427 int verbose_level = 0;
428 int f_v = (verbose_level >= 1);
432 cout <<
"classification_step::print_summary" << endl;
436 ost <<
"The order of the group is ";
438 ost <<
"\\\\" << endl;
440 ost <<
"\\bigskip" << endl;
442 ost <<
"The group has " <<
nb_orbits <<
" orbits. \\\\" << endl;
448 std::string &title,
int f_print_stabilizer_gens,
449 int f_has_print_function,
450 void (*print_function)(ostream &ost,
int i,
452 void *print_function_data)
454 int verbose_level = 0;
455 int f_v = (verbose_level >= 1);
459 cout <<
"classification_step::print_latex" << endl;
463 ost <<
"\\subsection*{" << title <<
"}" << endl;
469 ost <<
"The order of the group is ";
471 ost <<
"\\\\" << endl;
473 ost <<
"\\bigskip" << endl;
476 ost <<
"The group has " <<
nb_orbits <<
" orbits: \\\\" << endl;
481 Ol.
create(0, __FILE__, __LINE__);
483 ost <<
"The orbits are:" << endl;
484 ost <<
"\\begin{enumerate}[(1)]" << endl;
488 cout <<
"orbit " << i <<
" / " <<
nb_orbits <<
":" << endl;
494 cout <<
"stab order " << go1 << endl;
500 cout <<
"orbit length " << ol << endl;
503 ost <<
"\\item" << endl;
504 ost <<
"$" << i <<
" / " <<
nb_orbits <<
"$ " << endl;
507 if (f_has_print_function) {
508 (*print_function)(ost, i,
this, print_function_data);
520 ost <<
"}$ orbit length $";
522 ost <<
"$\\\\" << endl;
524 if (f_print_stabilizer_gens) {
536 ost <<
"\\end{enumerate}" << endl;
538 ost <<
"The overall number of objects is: " << Ol <<
"\\\\" << endl;
541 cout <<
"classification_step::print_latex done" << endl;
a collection of functions related to file io
long int file_size(std::string &fname)
interface to create latex output files
void lint_set_print_tex_for_inline_text(std::ostream &ost, long int *v, int len)
domain to compute with objects of type longinteger
void integral_division_exact(longinteger_object &a, longinteger_object &b, longinteger_object &a_over_b)
void add_in_place(longinteger_object &a, longinteger_object &b)
a class to represent arbitrary precision integers
void assign_to(longinteger_object &b)
std::ostream & print_not_scientific(std::ostream &ost)
void create(long int i, const char *file, int line)
a permutation group in a fixed action.
void element_print_for_make_element(void *elt, std::ostream &ost)
a set and its known set stabilizer
void init_everything(actions::action *A, actions::action *A2, long int *Set, int set_sz, groups::strong_generators *gens, int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
strong_generators * create_copy()
void print_generators_tex()
data_structures_groups::vector_ge * gens
void group_order(ring_theory::longinteger_object &go)
a single step classification of combinatorial objects
void generate_source_code(std::string &fname_base, int verbose_level)
long int * Rep_ith(int i)
ring_theory::longinteger_object go
void print_group_orders()
void print_latex(std::ostream &ost, std::string &title, int f_print_stabilizer_gens, int f_has_print_function, void(*print_function)(std::ostream &ost, int i, classification_step *Step, void *print_function_data), void *print_function_data)
void print_summary(std::ostream &ost)
void write_file(std::ofstream &fp, int verbose_level)
void init(actions::action *A, actions::action *A2, int max_orbits, int representation_sz, ring_theory::longinteger_object &go, int verbose_level)
void read_file(std::ifstream &fp, actions::action *A, actions::action *A2, ring_theory::longinteger_object &go, int verbose_level)
data_structures_groups::set_and_stabilizer * get_set_and_stabilizer(int orbit_index, int verbose_level)
to encode one group orbit, associated to the class classification_step
void read_file(std::ifstream &fp, int verbose_level)
groups::strong_generators * gens
void write_file(std::ofstream &fp, int verbose_level)
#define Lint_vec_copy(A, B, C)
#define Lint_matrix_print(A, B, C)
#define NEW_OBJECTS(type, n)
the orbiter library for the classification of combinatorial objects