Orbiter 2022
Combinatorial Objects
sylow_structure.cpp
Go to the documentation of this file.
1/*
2 * sylow_structure.cpp
3 *
4 * Created on: Mar 24, 2019
5 * Author: betten
6 */
7
8
9
10
12#include "group_actions.h"
13
14using namespace std;
15
16
17namespace orbiter {
18namespace layer3_group_actions {
19namespace groups {
20
21
22
24{
25 null();
26}
27
29{
30 freeself();
31}
32
34{
35 primes = NULL;
36 exponents = NULL;
37 nb_primes = 0;
38 S = NULL;
39 Sub = NULL;
40}
41
43{
44 if (primes) {
46 }
47 if (exponents) {
49 }
50 if (Sub) {
52 }
53 null();
54}
55
56void sylow_structure::init(sims *S, int verbose_level)
57{
58 int f_v = (verbose_level >= 1);
59 int idx;
60
61 if (f_v) {
62 cout << "sylow_structure::init" << endl;
63 }
64
66 int i;
67
70
73 verbose_level);
74
75 if (f_v) {
76 cout << "sylow_structure::init group order = " << go << " = ";
77 for (i = 0; i < nb_primes; i++) {
78 cout << primes[i] << "^" << exponents[i];
79 if (i < nb_primes - 1) {
80 cout << " * ";
81 }
82 }
83 cout << endl;
84 }
85
87
88 for (idx = 0; idx < nb_primes; idx++) {
90 sims *P;
91
92 P = NEW_OBJECT(sims);
94 if (f_v) {
95 cout << "sylow_structure::init "
96 "computing Sylow subgroup for prime "
97 << primes[idx] << ": " << endl;
98 }
99 S->sylow_subgroup(primes[idx], P, verbose_level);
100 SG->init_from_sims(P, verbose_level);
101 Sub[idx].init_from_sims(S, P, SG, verbose_level);
102 }
103
104 if (f_v) {
105 cout << "sylow_structure::init done" << endl;
106 }
107}
108
109void sylow_structure::report(ostream &ost)
110{
111 int idx;
112
113 for (idx = 0; idx < nb_primes; idx++) {
114 ost << "The " << primes[idx] << "-Sylow groups have order $"
115 << primes[idx] << "^{" << exponents[idx] << "}$\\\\" << endl;
116 }
117 for (idx = 0; idx < nb_primes; idx++) {
118 ost << "One " << primes[idx] << "-Sylow group has "
119 "the following generators:\\\\" << endl;
120 Sub[idx].report(ost);
121 }
122}
123
124
125
126}}}
127
domain to compute with objects of type longinteger
Definition: ring_theory.h:240
void factor(longinteger_object &a, int &nb_primes, int *&primes, int *&exponents, int verbose_level)
a permutation group represented via a stabilizer chain
Definition: groups.h:1273
void group_order(ring_theory::longinteger_object &go)
Definition: sims.cpp:951
void sylow_subgroup(int p, sims *P, int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
Definition: groups.h:1703
void init_from_sims(groups::sims *S, int verbose_level)
a subgroup of a group using a list of elements
Definition: groups.h:2039
void init_from_sims(sims *S, sims *Sub, strong_generators *SG, int verbose_level)
Definition: subgroup.cpp:63
#define FREE_OBJECTS(p)
Definition: foundations.h:652
#define FREE_int(p)
Definition: foundations.h:640
#define NEW_OBJECT(type)
Definition: foundations.h:638
#define NEW_OBJECTS(type, n)
Definition: foundations.h:639
the orbiter library for the classification of combinatorial objects