19namespace layer3_group_actions {
24 int f_full,
int verbose_level)
26 long int i, j, h, go, l;
44 for (i = 0; i < l; i++) {
49 Fst[i] = Fst[i - 1] + orbit_len[i - 1];
53 for (h = 0; h < go; h++) {
59 for (i = 0; i < l; i++) {
61 fp <<
" " << Fst[i] + j;
76 for (h = l - 1; h >= 0; h--) {
77 for (j = 0; j < orbit_len[h]; j++) {
78 if (h < l - 1 && j == 0) {
84 for (i = 0; i <= h; i++) {
86 fp <<
" " << orbit[i][j];
94 cout <<
"Written file " << fname <<
" of size "
104 cout <<
"sims data structure, a group of order ";
108 for (i = 0 ; i <= l; i++) {
109 for (j = 0; j < orbit_len[i]; j++) {
110 cout << orbit[i][j] <<
" ";
112 cout <<
"(length " << orbit_len[i] <<
")" << endl;
114 cout <<
"printing orbit_inv:" << endl;
115 for (j = 0; j <
A->
degree; j++) {
116 cout << orbit_inv[i][j] <<
" ";
128 cout <<
"sims::print_transversals_short: "
129 "my_base_len != A->base_len" << endl;
133 for (i = 0 ; i <= l; i++) {
135 for (j = 0; j < orbit_len[i]; j++) {
137 if (j < orbit_len[i] - 1)
155 for (i = 0 ; i <= l; i++) {
156 cout << i <<
" base point " << orbit[i][0]
157 <<
" length " << orbit_len[i] << endl;
167 cout << orbit_len[i] <<
" ";
176 int f_v = (verbose_level >= 1);
177 int f_vv = (verbose_level >= 2);
178 int f_vvv = (verbose_level >= 3);
182 cout <<
"sims data structure, a group of order ";
185 cout <<
"number of generators = " <<
nb_gen[0] << endl;
186 cout <<
"last moved base point = " << j << endl;
188 cout <<
"depth : base pt : transversal "
189 "length : # generators" << endl;
190 for (i = 0; i <= j; i++) {
191 cout << i <<
" : " <<
A->
base_i(i) <<
" : "
192 << orbit_len[i] <<
" : "
208 int i, j, nbg, nbg1, gen_idx;
210 cout <<
"generators are:" << endl;
213 for (i =
A->
base_len() - 1; i >= 0; i--) {
216 cout <<
"level " << i <<
":" << endl;
219 for (j = nbg1; j < nbg; j++) {
222 cout <<
"generator " << gen_idx <<
":" << endl;
226 cout <<
"orbit_len[" << i <<
"]=" << orbit_len[i] << endl;
233 int i, j, nbg, nbg1, gen_idx, cnt, f_first;
235 ost <<
"basic orbits: ";
238 if (i < A->base_len() - 1) {
242 ost <<
"\\\\" << endl;
243 ost <<
"\\begin{align*}" << endl;
246 for (i =
A->
base_len() - 1; i >= 0; i--) {
251 for (j = nbg1; j < nbg; j++) {
254 if ((cnt % 3) == 0) {
256 ost <<
"\\\\" << endl;
264 ost <<
", \\; " << endl;
268 ost <<
"\\end{align*}" << endl;
276 cout <<
"generators as permutations:" << endl;
278 for (i = 0; i < l; i++) {
291 cout <<
"generators as permutations (override action):" << endl;
293 for (i = 0; i < l; i++) {
306 cout <<
"sims::print_basic_orbits: "
307 "my_base_len != A->base_len" << endl;
319 cout <<
"basic orbit " << i <<
" of length " << orbit_len[i] << endl;
320 cout <<
"j : orbit[i][j] : prev[i][j] : label[i][j]" << endl;
321 for (j = 0; j < orbit_len[i] ; j++) {
324 if (j == orbit_len[i])
325 cout <<
"======================================" << endl;
326 cout << setw(5) << j <<
" : "
327 << setw(5) << orbit[i][j] <<
" : "
328 << setw(5) << prev[i][j] <<
" : "
329 << setw(5) << label[i][j];
339 cout <<
"i : gen_depth[i] : gen_perm[i]" << endl;
340 for (i = 0; i <
gens.
len; i++) {
343 cout <<
"i : base[i] : nb_gen[i]" << endl;
347 if (i < A->base_len()) {
353 cout << i <<
" : " << pt <<
" : " <<
nb_gen[i] << endl;
366 int i, j, f_first =
TRUE;
369 for (i = 0; i <= j; i++) {
376 cout << orbit_len[i];
384 cout <<
"sims::print_generators_at_level_or_below lvl=" << lvl <<
":" << endl;
385 for (i = 0; i <
nb_gen[lvl]; i++) {
387 cout <<
"sims::print_generators_at_level_or_below "
388 "generator " << i <<
":" << endl;
390 cout <<
"as permutation:" << endl;
397 int f_v = (verbose_level >= 1);
409 ofstream fp(fname, ios::binary);
411 for (i = 0; i < go.
as_lint(); i++) {
417 cout <<
"written file " << fname <<
" of size "
427 int f_v = (verbose_level >= 1);
438 for (i = 0; i < go.
as_lint(); i++) {
440 fp <<
"Element " << setw(5) << i <<
" / "
447 cout <<
"written file " << fname <<
" of size "
462 for (i = 0; i < go.
as_lint(); i++) {
464 cout <<
"Element " << setw(5) << i <<
" / "
465 << go.
as_int() <<
":" << endl;
483 for (i = 0; i < go.
as_lint(); i++) {
486 ost <<
"Element " << setw(5) << i <<
" / "
487 << go.
as_int() <<
" of order " << ord <<
":" << endl;
506 for (i = 0; i < go.
as_lint(); i++) {
509 ost <<
"Element " << setw(5) << i <<
" / "
510 << go.
as_int() <<
" of order " << ord <<
":" << endl;
512 ost <<
"\\begin{array}{c}" << endl;
514 ost <<
"\\\\" << endl;
516 ost <<
"\\\\" << endl;
517 ost <<
"\\end{array}" << endl;
535 for (i = 0; i < go.
as_lint(); i++) {
537 cout <<
"Element " << setw(5) << i <<
" / "
538 << go.
as_int() <<
":" << endl;
557 for (i = 0; i < go.
as_lint(); i++) {
559 cout <<
"Element " << setw(5) << i <<
" / "
560 << go.
as_int() <<
":" << endl;
578 for (i =
A->
base_len() - 1; i >= 0; i--) {
580 if (j == 0 && i < A->base_len() - 1) {
590 cout << setw(5) <<
path[ii] <<
" ";
604 int f_v = (verbose_level >= 1);
613 cout <<
"sims::save_list_of_elements(): saving "
614 << goi <<
" elements to file " << fname << endl;
619 ofstream fp(fname, ios::binary);
621 for (i = 0; i < goi; i++) {
633 cout <<
"written file " << fname <<
" of size "
641 int f_v = (verbose_level >= 1);
648 cout <<
"sims::read_list_of_elements(): reading "
649 << goi <<
" elements from file " << fname << endl;
654 init(
A, verbose_level - 2);
658 ifstream fp(fname, ios::binary);
660 for (i = 0; i < goi; i++) {
671 cout <<
"read file " << fname <<
" of size "
680 int f_v = (verbose_level >= 1);
681 long int i, k, n, l, h;
690 cout <<
"sims::write_as_magma_permutation_group" << endl;
696 cout <<
"sims::write_as_magma_permutation_group "
697 "Computing the Table, go=" << go << endl;
703 for (h = 0; h < l; h++) {
705 cout <<
"sims::write_as_magma_permutation_group "
706 "h = " << h <<
" / " << l << endl;
708 for (i = 0; i < n; i++) {
710 cout <<
"sims::write_as_magma_permutation_group "
711 "i = " << i <<
" / " << n << endl;
718 cout <<
"Elt2=" << endl;
723 cout <<
"has rank k=" << k << endl;
725 Table[h * n + i] = k;
729> G := PermutationGroup< 12 | (1,6,7)(2,5,8,3,4,9)(11,12),
730> (1,3)(4,9,12)(5,8,10,6,7,11) >;
734 fname.assign(fname_base);
735 fname.append(
".magma");
739 fp <<
"G := PermutationGroup< " << n <<
" | " << endl;
740 for (i = 0; i < l; i++) {
748 cout <<
"Written file " << fname <<
" of size "
756 cout <<
"sims::write_as_magma_permutation_group done" << endl;
765 int f_v = (verbose_level >= 1);
768 cout <<
"sims::report" << endl;
769 cout <<
"sims::report prefix=" << prefix << endl;
774 ost << endl <<
"\\subsection*{Stabilizer chain}" << endl << endl;
779 ost <<
"\\begin{array}{|c|c|c|c|}" << endl;
780 ost <<
"\\hline" << endl;
781 ost <<
"\\mbox{Level} & \\mbox{Base pt} & \\mbox{Orbit length} & \\mbox{Subgroup order}\\\\" << endl;
782 ost <<
"\\hline" << endl;
783 ost <<
"\\hline" << endl;
793 ost <<
"\\\\" << endl;
794 ost <<
"\\hline" << endl;
796 ost <<
"\\end{array}" << endl;
804 for (orbit_idx = 0; orbit_idx <
my_base_len; orbit_idx++) {
807 cout <<
"sims::report tree " << orbit_idx <<
" / " <<
my_base_len << endl;
809 ost << endl <<
"\\subsection*{Basic Orbit " << orbit_idx <<
"}" << endl << endl;
811 if (orbit_len[orbit_idx] < 1000) {
813 sprintf(str,
"_sims_%d", orbit_idx);
815 fname_base.assign(prefix);
816 fname_base.append(str);
820 cout <<
"sims::report before Sorting.schreier_vector_tree" << endl;
823 orbit_len[orbit_idx], orbit[orbit_idx], prev[orbit_idx],
TRUE , orbit_inv[orbit_idx],
829 cout <<
"sims::report after Sorting.schreier_vector_tree" << endl;
834 ost <<
"\\input " << fname_base <<
".tex" << endl;
837 std::vector<int> Orb;
842 cout <<
"sims::report before get_orbit" << endl;
844 get_orbit(orbit_idx, Orb, verbose_level);
846 cout <<
"sims::report after get_orbit" << endl;
849 ost <<
"Basic orbit " << orbit_idx <<
" has size " << Orb.size() <<
"\\\\" << endl;
851 Orbit_elements =
NEW_int(Orb.size());
852 for (
int i = 0; i < Orb.size(); i++) {
853 Orbit_elements[i] = Orb[i];
856 for (
int i = 0; i < Orb.size(); i++) {
857 ost << Orbit_elements[i];
858 if (i < Orb.size() - 1) {
862 ost <<
"\\\\" << endl;
866 ost <<
"\\bigskip" << endl;
868 cout <<
"sims::report tree " << orbit_idx <<
" / " <<
my_base_len <<
" done" << endl;
874 cout <<
"sims::report done" << endl;
a collection of combinatorial functions
void perm_print_counting_from_one(std::ostream &ost, int *a, int n)
a collection of functions related to sorted vectors
void int_vec_heapsort(int *v, int len)
void schreier_vector_tree(int n, int *pts, int *prev, int f_use_pts_inv, int *pts_inv, std::string &fname_base, graphics::layered_graph_draw_options *LG_Draw_options, graph_theory::layered_graph *&LG, int verbose_level)
a data structure to store layered graphs or Hasse diagrams
options for drawing an object of type layered_graph
a collection of functions related to file io
long int file_size(std::string &fname)
a class to represent arbitrary precision integers
std::ostream & print_not_scientific(std::ostream &ost)
a permutation group in a fixed action.
void element_print_latex(void *elt, std::ostream &ost)
void element_print_quick(void *elt, std::ostream &ost)
void element_print(void *elt, std::ostream &ost)
int coded_elt_size_in_char
void element_mult(void *a, void *b, void *ab, int verbose_level)
int & transversal_length_i(int i)
void element_write_file_fp(int *Elt, std::ofstream &fp, int verbose_level)
void element_read_file_fp(int *Elt, std::ifstream &fp, int verbose_level)
void element_print_as_permutation(void *elt, std::ostream &ost)
int element_order(void *elt)
to hold a vector of group elements
int get_orbit(int i, int j)
void print_all_group_elements_as_permutations_in_special_action(actions::action *A_special)
int last_moved_base_point()
void element_from_path(int *elt, int verbose_level)
void init(actions::action *A, int verbose_level)
void read_list_of_elements(actions::action *A, char *fname, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void print_generators_as_permutations()
void init_trivial_group(int verbose_level)
void print_generator_depth_and_perm()
void print_transversals_short()
void print_all_group_elements_with_permutations_tex(std::ostream &ost)
void report(std::ostream &ost, std::string &prefix, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
void print_generators_at_level_or_below(int lvl)
void print_group_order_factored(std::ostream &ost)
void print_basic_orbit(int i)
void print_transversals()
void print_all_group_elements_to_file(char *fname, int verbose_level)
void print_generators_as_permutations_override_action(actions::action *A)
void print_all_group_elements_tex(std::ostream &ost)
void print(int verbose_level)
void print_generators_tex(std::ostream &ost)
void write_all_group_elements(char *fname, int verbose_level)
void subgroup_order_verbose(ring_theory::longinteger_object &go, int level, int verbose_level)
void write_as_magma_permutation_group(std::string &fname_base, data_structures_groups::vector_ge *gens, int verbose_level)
void print_basic_orbits()
void create_group_tree(const char *fname, int f_full, int verbose_level)
void print_all_group_elements()
data_structures_groups::vector_ge gens
void print_all_transversal_elements()
void element_unrank_lint(long int rk, int *Elt, int verbose_level)
long int element_rank_lint(int *Elt)
void coset_rep(int *Elt, int i, int j, int verbose_level)
void save_list_of_elements(char *fname, int verbose_level)
void print_transversal_lengths()
void print_group_order(std::ostream &ost)
int get_orbit_length(int i)
void print_all_group_elements_as_permutations()
int strip_and_add(int *elt, int *residue, int verbose_level)
#define Int_vec_zero(A, B)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects