Orbiter 2022
Combinatorial Objects
sims_io.cpp
Go to the documentation of this file.
1/*
2 * sims_io.cpp
3 *
4 * Created on: Aug 24, 2019
5 * Author: betten
6 */
7
8
9
10
12#include "group_actions.h"
13
14
15using namespace std;
16
17
18namespace orbiter {
19namespace layer3_group_actions {
20namespace groups {
21
22
23void sims::create_group_tree(const char *fname,
24 int f_full, int verbose_level)
25{
26 long int i, j, h, go, l;
28 int *Elt;
29 int *Elt2;
30 int *Fst;
32
34 Elt2 = NEW_int(A->elt_size_in_int);
35 group_order(Go);
36 go = Go.as_lint();
37 //cout << "Group of order " << go << endl;
38
39 {
40 ofstream fp(fname);
41
42 l = last_moved_base_point() + 1;
43 Fst = NEW_int(l);
44 for (i = 0; i < l; i++) {
45 if (i == 0) {
46 Fst[i] = 0;
47 }
48 else {
49 Fst[i] = Fst[i - 1] + orbit_len[i - 1];
50 }
51 }
52 if (f_full) {
53 for (h = 0; h < go; h++) {
54 element_unrank_lint(h, Elt);
55 //cout << "Element " << h << " / " << go << " : path=";
56 //int_vec_print(cout, S->path, S->A->base_len);
57 //cout << endl;
58 fp << l;
59 for (i = 0; i < l; i++) {
60 j = path[i];
61 fp << " " << Fst[i] + j;
62 coset_rep(Elt2, i, j, 0 /* verbose_level*/);
63 if (i) {
64 //cout << "*" << endl;
65 }
66 //A->element_print_quick(Elt2, cout);
67 }
68 fp << endl;
69 //cout << "=" << endl;
70 //A->element_print_quick(Elt, cout);
71 //A->element_print_as_permutation(Elt, cout);
72 //cout << endl;
73 }
74 }
75 else {
76 for (h = l - 1; h >= 0; h--) {
77 for (j = 0; j < orbit_len[h]; j++) {
78 if (h < l - 1 && j == 0) {
79 continue;
80 }
82 path[h] = j;
83 fp << h + 1;
84 for (i = 0; i <= h; i++) {
85 j = path[i];
86 fp << " " << orbit[i][j];
87 }
88 fp << endl;
89 }
90 }
91 }
92 fp << "-1" << endl;
93 }
94 cout << "Written file " << fname << " of size "
95 << Fio.file_size(fname) << endl;
96 FREE_int(Elt);
97 FREE_int(Elt2);
98 FREE_int(Fst);
99}
100
102{
103 int i, j, l;
104 cout << "sims data structure, a group of order ";
105 print_group_order(cout);
106 cout << endl;
108 for (i = 0 ; i <= l; i++) {
109 for (j = 0; j < orbit_len[i]; j++) {
110 cout << orbit[i][j] << " ";
111 }
112 cout << "(length " << orbit_len[i] << ")" << endl;
113#if 0
114 cout << "printing orbit_inv:" << endl;
115 for (j = 0; j < A->degree; j++) {
116 cout << orbit_inv[i][j] << " ";
117 }
118#endif
119 cout << endl;
120 }
121}
122
124{
125 int i, j, l;
126
127 if (my_base_len != A->base_len()) {
128 cout << "sims::print_transversals_short: "
129 "my_base_len != A->base_len" << endl;
130 exit(1);
131 }
133 for (i = 0 ; i <= l; i++) {
134 cout << "(";
135 for (j = 0; j < orbit_len[i]; j++) {
136 cout << orbit[i][j];
137 if (j < orbit_len[i] - 1)
138 cout << ",";
139 }
140 cout << ")";
141 if (i < l)
142 cout << ", ";
143 }
144 cout << endl;
145}
146
148{
149 Int_vec_print(cout, orbit_len, A->base_len());
150 cout << endl;
151#if 0
152 int i, l;
153
155 for (i = 0 ; i <= l; i++) {
156 cout << i << " base point " << orbit[i][0]
157 << " length " << orbit_len[i] << endl;
158 }
159#endif
160}
161
163{
164 int i;
165
166 for (i = 0; i < A->base_len(); i++) {
167 cout << orbit_len[i] << " ";
168 }
169 cout << endl;
170}
171
172
173
174void sims::print(int verbose_level)
175{
176 int f_v = (verbose_level >= 1);
177 int f_vv = (verbose_level >= 2);
178 int f_vvv = (verbose_level >= 3);
179 int i, j;
180
182 cout << "sims data structure, a group of order ";
183 print_group_order(cout);
184 cout << endl;
185 cout << "number of generators = " << nb_gen[0] << endl;
186 cout << "last moved base point = " << j << endl;
187 if (f_v) {
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] << " : "
193 << nb_gen[i] - nb_gen[i + 1] << endl;
194 }
195 cout << endl;
196 }
197 if (f_vv) {
199 }
200 if (f_vvv) {
203 }
204}
205
207{
208 int i, j, nbg, nbg1, gen_idx;
209
210 cout << "generators are:" << endl;
211 //gens.print(cout);
212
213 for (i = A->base_len() - 1; i >= 0; i--) {
214 nbg = nb_gen[i];
215 nbg1 = nb_gen[i + 1];
216 cout << "level " << i << ":" << endl;
217 //cout << "i=" << i << " nbg1=" << nbg1
218 //<< " nbg=" << nbg << endl;
219 for (j = nbg1; j < nbg; j++) {
220 gen_idx = gen_perm[j];
221
222 cout << "generator " << gen_idx << ":" << endl;
223 A->element_print(gens.ith(gen_idx), cout);
224 cout << endl;
225 }
226 cout << "orbit_len[" << i << "]=" << orbit_len[i] << endl;
227 }
228 cout << endl;
229}
230
232{
233 int i, j, nbg, nbg1, gen_idx, cnt, f_first;
234
235 ost << "basic orbits: ";
236 for (i = 0; i < A->base_len(); i++) {
237 ost << orbit_len[i];
238 if (i < A->base_len() - 1) {
239 ost << ", ";
240 }
241 }
242 ost << "\\\\" << endl;
243 ost << "\\begin{align*}" << endl;
244 cnt = 0;
245 f_first = TRUE;
246 for (i = A->base_len() - 1; i >= 0; i--) {
247 nbg = nb_gen[i];
248 nbg1 = nb_gen[i + 1];
249 //cout << "i=" << i << " nbg1=" << nbg1
250 //<< " nbg=" << nbg << endl;
251 for (j = nbg1; j < nbg; j++) {
252 gen_idx = gen_perm[j];
253
254 if ((cnt % 3) == 0) {
255 if (!f_first) {
256 ost << "\\\\" << endl;
257 }
258 ost << "&" << endl;
259 }
260 A->element_print_latex(gens.ith(gen_idx), ost);
261 cnt++;
262 f_first = FALSE;
263 if (j < nbg - 1) {
264 ost << ", \\; " << endl;
265 }
266 }
267 }
268 ost << "\\end{align*}" << endl;
269}
270
271
273{
274 int i, l;
275
276 cout << "generators as permutations:" << endl;
277 l = gens.len;
278 for (i = 0; i < l; i++) {
279 cout << i << " : ";
281 cout << endl;
282 }
283 cout << endl;
284}
285
288{
289 int i, l;
290
291 cout << "generators as permutations (override action):" << endl;
292 l = gens.len;
293 for (i = 0; i < l; i++) {
294 cout << i << " : ";
296 cout << endl;
297 }
298 cout << endl;
299}
300
302{
303 int i;
304
305 if (my_base_len != A->base_len()) {
306 cout << "sims::print_basic_orbits: "
307 "my_base_len != A->base_len" << endl;
308 exit(1);
309 }
310 for (i = 0 ; i < A->base_len() /* <= j */; i++) {
312 }
313}
314
316{
317 int j;
318
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] /* A->degree */; j++) {
322 //coset_rep[i][j];
323 //coset_rep_inv(i);
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];
330 cout << endl;
331 }
332 cout << endl;
333}
334
336{
337 int i;
338
339 cout << "i : gen_depth[i] : gen_perm[i]" << endl;
340 for (i = 0; i < gens.len; i++) {
341 cout << i << " : " << gen_depth[i] << " : " << gen_perm[i] << endl;
342 }
343 cout << "i : base[i] : nb_gen[i]" << endl;
344 for (i = 0; i <= A->base_len(); i++) {
345 int pt;
346
347 if (i < A->base_len()) {
348 pt = get_orbit(i, 0);
349 }
350 else {
351 pt = -1;
352 }
353 cout << i << " : " << pt << " : " << nb_gen[i] << endl;
354 }
355}
356
357void sims::print_group_order(ostream &ost)
358{
360 group_order(go);
361 cout << go;
362}
363
365{
366 int i, j, f_first = TRUE;
367
369 for (i = 0; i <= j; i++) {
370 if (f_first) {
371 f_first = FALSE;
372 }
373 else {
374 cout << " * ";
375 }
376 cout << orbit_len[i];
377 }
378}
379
381{
382 int i, gen_idx;
383
384 cout << "sims::print_generators_at_level_or_below lvl=" << lvl << ":" << endl;
385 for (i = 0; i < nb_gen[lvl]; i++) {
386 gen_idx = gen_perm[i];
387 cout << "sims::print_generators_at_level_or_below "
388 "generator " << i << ":" << endl;
389 A->element_print_quick(gens.ith(gen_idx), cout);
390 cout << "as permutation:" << endl;
391 A->element_print_as_permutation(gens.ith(gen_idx), cout);
392 }
393}
394
395void sims::write_all_group_elements(char *fname, int verbose_level)
396{
397 int f_v = (verbose_level >= 1);
398 int *Elt;
399 //char *elt;
401 long int i;
403
404 Elt = NEW_int(A->elt_size_in_int);
405 //elt = NEW_char(A->coded_elt_size_in_char);
406 group_order(go);
407
408 {
409 ofstream fp(fname, ios::binary);
410
411 for (i = 0; i < go.as_lint(); i++) {
412 element_unrank_lint(i, Elt);
413 A->element_write_file_fp(Elt, fp, 0/* verbose_level*/);
414 }
415 }
416 if (f_v) {
417 cout << "written file " << fname << " of size "
418 << Fio.file_size(fname) << endl;
419 }
420 FREE_int(Elt);
421 //FREE_char(elt);
422}
423
425 int verbose_level)
426{
427 int f_v = (verbose_level >= 1);
428 int *Elt;
430 long int i;
432
433 Elt = NEW_int(A->elt_size_in_int);
434 group_order(go);
435
436 {
437 ofstream fp(fname);
438 for (i = 0; i < go.as_lint(); i++) {
439 element_unrank_lint(i, Elt);
440 fp << "Element " << setw(5) << i << " / "
441 << go.as_int() << endl;
442 A->element_print(Elt, fp);
443 fp << endl;
444 }
445 }
446 if (f_v) {
447 cout << "written file " << fname << " of size "
448 << Fio.file_size(fname) << endl;
449 }
450 FREE_int(Elt);
451}
452
454{
455 int *Elt;
457 long int i;
458
459 Elt = NEW_int(A->elt_size_in_int);
460 group_order(go);
461
462 for (i = 0; i < go.as_lint(); i++) {
463 element_unrank_lint(i, Elt);
464 cout << "Element " << setw(5) << i << " / "
465 << go.as_int() << ":" << endl;
466 A->element_print(Elt, cout);
467 cout << endl;
469 cout << endl;
470 }
471 FREE_int(Elt);
472}
473
475{
476 int *Elt;
478 long int i, ord;
479
480 Elt = NEW_int(A->elt_size_in_int);
481 group_order(go);
482
483 for (i = 0; i < go.as_lint(); i++) {
484 element_unrank_lint(i, Elt);
485 ord = A->element_order(Elt);
486 ost << "Element " << setw(5) << i << " / "
487 << go.as_int() << " of order " << ord << ":" << endl;
488 ost << "$$" << endl;
489 A->element_print_latex(Elt, ost);
490 ost << "$$" << endl;
491 //A->element_print_as_permutation(Elt, cout);
492 //cout << endl;
493 }
494 FREE_int(Elt);
495}
496
498{
499 int *Elt;
501 long int i, ord;
502
503 Elt = NEW_int(A->elt_size_in_int);
504 group_order(go);
505
506 for (i = 0; i < go.as_lint(); i++) {
507 element_unrank_lint(i, Elt);
508 ord = A->element_order(Elt);
509 ost << "Element " << setw(5) << i << " / "
510 << go.as_int() << " of order " << ord << ":" << endl;
511 ost << "$$" << endl;
512 ost << "\\begin{array}{c}" << endl;
513 A->element_print_latex(Elt, ost);
514 ost << "\\\\" << endl;
516 ost << "\\\\" << endl;
517 ost << "\\end{array}" << endl;
518 ost << "$$" << endl;
519 //cout << endl;
520 }
521 FREE_int(Elt);
522}
523
524
525
527{
528 int *Elt;
530 long int i;
531
532 Elt = NEW_int(A->elt_size_in_int);
533 group_order(go);
534
535 for (i = 0; i < go.as_lint(); i++) {
536 element_unrank_lint(i, Elt);
537 cout << "Element " << setw(5) << i << " / "
538 << go.as_int() << ":" << endl;
539 //A->element_print(Elt, cout);
540 //cout << endl;
542 cout << endl;
543 }
544 FREE_int(Elt);
545}
546
548 actions::action *A_special)
549{
550 int *Elt;
552 long int i;
553
554 Elt = NEW_int(A->elt_size_in_int);
555 group_order(go);
556
557 for (i = 0; i < go.as_lint(); i++) {
558 element_unrank_lint(i, Elt);
559 cout << "Element " << setw(5) << i << " / "
560 << go.as_int() << ":" << endl;
561 A->element_print(Elt, cout);
562 cout << endl;
563 A_special->element_print_as_permutation(Elt, cout);
564 cout << endl;
565 }
566 FREE_int(Elt);
567}
568
570{
571 int *Elt;
573 int i, j, ii;
574
575 Elt = NEW_int(A->elt_size_in_int);
576 group_order(go);
577
578 for (i = A->base_len() - 1; i >= 0; i--) {
579 for (j = 0; j < A->transversal_length_i(i); j++) {
580 if (j == 0 && i < A->base_len() - 1) {
581 // skip the identity in the upper transversals
582 continue;
583 }
584 for (ii = 0; ii < A->base_len(); ii++) {
585 path[ii] = 0;
586 }
587 path[i] = j;
588 element_from_path(Elt, 0 /* verbose_level */);
589 for (ii = 0; ii < A->base_len(); ii++) {
590 cout << setw(5) << path[ii] << " ";
591 }
592 cout << endl;
593 A->element_print(Elt, cout);
594 cout << endl;
596 cout << endl;
597 }
598 }
599 FREE_int(Elt);
600}
601
602void sims::save_list_of_elements(char *fname, int verbose_level)
603{
604 int f_v = (verbose_level >= 1);
605 int *Elt1;
606 long int goi, i;
609
610 group_order(go);
611 goi = go.as_lint();
612 if (f_v) {
613 cout << "sims::save_list_of_elements(): saving "
614 << goi << " elements to file " << fname << endl;
615 }
616 Elt1 = NEW_int(A->elt_size_in_int);
617
618 {
619 ofstream fp(fname, ios::binary);
620
621 for (i = 0; i < goi; i++) {
622 element_unrank_lint(i, Elt1);
623 //cout << "element " << i << ":" << endl;
624 //A->element_print(Elt1, cout);
625 A->element_write_file_fp(Elt1, fp, 0/* verbose_level*/);
626 //A->element_print_as_permutation(Elt1, cout);
627 //AA.print_as_permutation(cout, Elt1);
628 //cout << endl;
629 }
630 }
631 FREE_int(Elt1);
632 if (f_v) {
633 cout << "written file " << fname << " of size "
634 << Fio.file_size(fname) << endl;
635 }
636}
637
639 int verbose_level)
640{
641 int f_v = (verbose_level >= 1);
642 int *Elt1, *Elt2;
643 int goi, i;
645
646 goi = Fio.file_size(fname) / A->coded_elt_size_in_char;
647 if (f_v) {
648 cout << "sims::read_list_of_elements(): reading "
649 << goi << " elements from file " << fname << endl;
650 }
651 Elt1 = NEW_int(A->elt_size_in_int);
652 Elt2 = NEW_int(A->elt_size_in_int);
653
654 init(A, verbose_level - 2);
655 init_trivial_group(verbose_level - 1);
656
657 {
658 ifstream fp(fname, ios::binary);
659
660 for (i = 0; i < goi; i++) {
661 A->element_read_file_fp(Elt1, fp, 0/* verbose_level*/);
662 //cout << "element " << i << ":" << endl;
663 //A->element_print(Elt1, cout);
664 strip_and_add(Elt1, Elt2, verbose_level - 1);
665 }
666 }
667
668 FREE_int(Elt1);
669 FREE_int(Elt2);
670 if (f_v) {
671 cout << "read file " << fname << " of size "
672 << Fio.file_size(fname) << endl;
673 }
674}
675
676
677void sims::write_as_magma_permutation_group(std::string &fname_base,
678 data_structures_groups::vector_ge *gens, int verbose_level)
679{
680 int f_v = (verbose_level >= 1);
681 long int i, k, n, l, h;
683 int *Elt1;
684 int *Elt2;
685 int *Table;
688
689 if (f_v) {
690 cout << "sims::write_as_magma_permutation_group" << endl;
691 }
692 group_order(go);
693 n = go.as_int();
694 l = gens->len;
695 if (f_v) {
696 cout << "sims::write_as_magma_permutation_group "
697 "Computing the Table, go=" << go << endl;
698 }
699 Elt1 = NEW_int(A->elt_size_in_int);
700 Elt2 = NEW_int(A->elt_size_in_int);
701 Table = NEW_int(l * n);
702 Int_vec_zero(Table, l * n);
703 for (h = 0; h < l; h++) {
704 if (f_v) {
705 cout << "sims::write_as_magma_permutation_group "
706 "h = " << h << " / " << l << endl;
707 }
708 for (i = 0; i < n; i++) {
709 if (f_v) {
710 cout << "sims::write_as_magma_permutation_group "
711 "i = " << i << " / " << n << endl;
712 }
713 element_unrank_lint(i, Elt1);
714
715 A->element_mult(Elt1, gens->ith(h), Elt2, 0);
716
717 if (f_v) {
718 cout << "Elt2=" << endl;
719 A->element_print(Elt2, cout);
720 }
721 k = element_rank_lint(Elt2);
722 if (f_v) {
723 cout << "has rank k=" << k << endl;
724 }
725 Table[h * n + i] = k;
726 }
727 }
728#if 0
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) >;
731#endif
732 string fname;
733
734 fname.assign(fname_base);
735 fname.append(".magma");
736 {
737 ofstream fp(fname);
738
739 fp << "G := PermutationGroup< " << n << " | " << endl;
740 for (i = 0; i < l; i++) {
741 Combi.perm_print_counting_from_one(fp, Table + i * n, n);
742 if (i < l - 1) {
743 fp << ", " << endl;
744 }
745 }
746 fp << " >;" << endl;
747 }
748 cout << "Written file " << fname << " of size "
749 << Fio.file_size(fname) << endl;
750
751 FREE_int(Elt1);
752 FREE_int(Elt2);
753 FREE_int(Table);
754
755 if (f_v) {
756 cout << "sims::write_as_magma_permutation_group done" << endl;
757 }
758}
759
760void sims::report(std::ostream &ost,
761 std::string &prefix,
763 int verbose_level)
764{
765 int f_v = (verbose_level >= 1);
766
767 if (f_v) {
768 cout << "sims::report" << endl;
769 cout << "sims::report prefix=" << prefix << endl;
770 }
771 //int i;
773
774 ost << endl << "\\subsection*{Stabilizer chain}" << endl << endl;
775 ost << endl;
776
777
778 ost << "$$" << 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;
784 for (int i = 0; i < my_base_len; i++) {
785
786
787
789
790 subgroup_order_verbose(go, i, FALSE /*verbose_level*/);
791 ost << i << " & " << get_orbit(i, 0) << " & " << get_orbit_length(i) << " & ";
792 go.print_not_scientific(ost);
793 ost << "\\\\" << endl;
794 ost << "\\hline" << endl;
795 }
796 ost << "\\end{array}" << endl;
797 ost << "$$" << endl;
798
799 string fname_base;
800 char str[1000];
801
802 int orbit_idx;
803
804 for (orbit_idx = 0; orbit_idx < my_base_len; orbit_idx++) {
805
806 if (f_v) {
807 cout << "sims::report tree " << orbit_idx << " / " << my_base_len << endl;
808 }
809 ost << endl << "\\subsection*{Basic Orbit " << orbit_idx << "}" << endl << endl;
810
811 if (orbit_len[orbit_idx] < 1000) {
812
813 sprintf(str, "_sims_%d", orbit_idx);
814
815 fname_base.assign(prefix);
816 fname_base.append(str);
817
819 if (f_v) {
820 cout << "sims::report before Sorting.schreier_vector_tree" << endl;
821 }
822 Sorting.schreier_vector_tree(
823 orbit_len[orbit_idx], orbit[orbit_idx], prev[orbit_idx], TRUE /* f_use_pts_inv */, orbit_inv[orbit_idx],
824 fname_base,
825 LG_Draw_options,
826 LG,
827 verbose_level - 3);
828 if (f_v) {
829 cout << "sims::report after Sorting.schreier_vector_tree" << endl;
830 }
831
832 FREE_OBJECT(LG);
833
834 ost << "\\input " << fname_base << ".tex" << endl;
835 ost << endl;
836
837 std::vector<int> Orb;
838 int *Orbit_elements;
840
841 if (f_v) {
842 cout << "sims::report before get_orbit" << endl;
843 }
844 get_orbit(orbit_idx, Orb, verbose_level);
845 if (f_v) {
846 cout << "sims::report after get_orbit" << endl;
847 }
848
849 ost << "Basic orbit " << orbit_idx << " has size " << Orb.size() << "\\\\" << endl;
850
851 Orbit_elements = NEW_int(Orb.size());
852 for (int i = 0; i < Orb.size(); i++) {
853 Orbit_elements[i] = Orb[i];
854 }
855 Sorting.int_vec_heapsort(Orbit_elements, Orb.size());
856 for (int i = 0; i < Orb.size(); i++) {
857 ost << Orbit_elements[i];
858 if (i < Orb.size() - 1) {
859 ost << ", ";
860 }
861 }
862 ost << "\\\\" << endl;
863 FREE_int(Orbit_elements);
864
865 }
866 ost << "\\bigskip" << endl;
867 if (f_v) {
868 cout << "sims::report tree " << orbit_idx << " / " << my_base_len << " done" << endl;
869 }
870
871 }
872
873 if (f_v) {
874 cout << "sims::report done" << endl;
875 }
876}
877
878
879
880
881}}}
882
a collection of functions related to sorted vectors
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)
Definition: sorting.cpp:2428
a data structure to store layered graphs or Hasse diagrams
Definition: graph_theory.h:654
options for drawing an object of type layered_graph
Definition: graphics.h:457
a class to represent arbitrary precision integers
Definition: ring_theory.h:366
a permutation group in a fixed action.
Definition: actions.h:99
void element_print_latex(void *elt, std::ostream &ost)
Definition: action_cb.cpp:364
void element_print_quick(void *elt, std::ostream &ost)
Definition: action_cb.cpp:353
void element_print(void *elt, std::ostream &ost)
Definition: action_cb.cpp:347
void element_mult(void *a, void *b, void *ab, int verbose_level)
Definition: action_cb.cpp:315
void element_write_file_fp(int *Elt, std::ofstream &fp, int verbose_level)
Definition: action_cb.cpp:587
void element_read_file_fp(int *Elt, std::ifstream &fp, int verbose_level)
Definition: action_cb.cpp:604
void element_print_as_permutation(void *elt, std::ostream &ost)
Definition: action_cb.cpp:421
void print_all_group_elements_as_permutations_in_special_action(actions::action *A_special)
Definition: sims_io.cpp:547
void element_from_path(int *elt, int verbose_level)
Definition: sims.cpp:1108
void init(actions::action *A, int verbose_level)
Definition: sims.cpp:289
void read_list_of_elements(actions::action *A, char *fname, int verbose_level)
Definition: sims_io.cpp:638
void group_order(ring_theory::longinteger_object &go)
Definition: sims.cpp:951
void init_trivial_group(int verbose_level)
Definition: sims.cpp:584
void print_all_group_elements_with_permutations_tex(std::ostream &ost)
Definition: sims_io.cpp:497
void report(std::ostream &ost, std::string &prefix, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
Definition: sims_io.cpp:760
void print_group_order_factored(std::ostream &ost)
Definition: sims_io.cpp:364
void print_all_group_elements_to_file(char *fname, int verbose_level)
Definition: sims_io.cpp:424
void print_generators_as_permutations_override_action(actions::action *A)
Definition: sims_io.cpp:286
void print_all_group_elements_tex(std::ostream &ost)
Definition: sims_io.cpp:474
void print_generators_tex(std::ostream &ost)
Definition: sims_io.cpp:231
void write_all_group_elements(char *fname, int verbose_level)
Definition: sims_io.cpp:395
void subgroup_order_verbose(ring_theory::longinteger_object &go, int level, int verbose_level)
Definition: sims.cpp:984
void write_as_magma_permutation_group(std::string &fname_base, data_structures_groups::vector_ge *gens, int verbose_level)
Definition: sims_io.cpp:677
void create_group_tree(const char *fname, int f_full, int verbose_level)
Definition: sims_io.cpp:23
data_structures_groups::vector_ge gens
Definition: groups.h:1280
void element_unrank_lint(long int rk, int *Elt, int verbose_level)
Definition: sims.cpp:1326
void coset_rep(int *Elt, int i, int j, int verbose_level)
Definition: sims.cpp:1414
void save_list_of_elements(char *fname, int verbose_level)
Definition: sims_io.cpp:602
void print_group_order(std::ostream &ost)
Definition: sims_io.cpp:357
int strip_and_add(int *elt, int *residue, int verbose_level)
Definition: sims_main.cpp:379
#define FREE_int(p)
Definition: foundations.h:640
#define Int_vec_zero(A, B)
Definition: foundations.h:713
#define FREE_OBJECT(p)
Definition: foundations.h:651
#define NEW_int(n)
Definition: foundations.h:625
#define TRUE
Definition: foundations.h:231
#define FALSE
Definition: foundations.h:234
#define Int_vec_print(A, B, C)
Definition: foundations.h:685
the orbiter library for the classification of combinatorial objects