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
11
#include "
foundations/foundations.h
"
12
#include "
group_actions.h
"
13
14
using namespace
std;
15
16
17
namespace
orbiter
{
18
namespace
layer3_group_actions {
19
namespace
groups {
20
21
22
23
sylow_structure::sylow_structure
()
24
{
25
null
();
26
}
27
28
sylow_structure::~sylow_structure
()
29
{
30
freeself
();
31
}
32
33
void
sylow_structure::null
()
34
{
35
primes
= NULL;
36
exponents
= NULL;
37
nb_primes
= 0;
38
S
= NULL;
39
Sub
= NULL;
40
}
41
42
void
sylow_structure::freeself
()
43
{
44
if
(
primes
) {
45
FREE_int
(
primes
);
46
}
47
if
(
exponents
) {
48
FREE_int
(
exponents
);
49
}
50
if
(
Sub
) {
51
FREE_OBJECTS
(
Sub
);
52
}
53
null
();
54
}
55
56
void
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
65
ring_theory::longinteger_domain
D;
66
int
i;
67
68
sylow_structure::S
=
S
;
69
S
->
group_order
(
go
);
70
71
D.
factor
(
go
,
nb_primes
,
72
primes
,
exponents
,
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
86
Sub
=
NEW_OBJECTS
(
subgroup
,
nb_primes
);
87
88
for
(idx = 0; idx <
nb_primes
; idx++) {
89
strong_generators
*SG;
90
sims
*P;
91
92
P =
NEW_OBJECT
(
sims
);
93
SG =
NEW_OBJECT
(
strong_generators
);
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
109
void
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
orbiter::layer1_foundations::ring_theory::longinteger_domain
domain to compute with objects of type longinteger
Definition:
ring_theory.h:240
orbiter::layer1_foundations::ring_theory::longinteger_domain::factor
void factor(longinteger_object &a, int &nb_primes, int *&primes, int *&exponents, int verbose_level)
Definition:
longinteger_domain.cpp:1710
orbiter::layer3_group_actions::groups::sims
a permutation group represented via a stabilizer chain
Definition:
groups.h:1273
orbiter::layer3_group_actions::groups::sims::group_order
void group_order(ring_theory::longinteger_object &go)
Definition:
sims.cpp:951
orbiter::layer3_group_actions::groups::sims::sylow_subgroup
void sylow_subgroup(int p, sims *P, int verbose_level)
Definition:
sims_group_theory.cpp:1494
orbiter::layer3_group_actions::groups::strong_generators
a strong generating set for a permutation group with respect to a fixed action
Definition:
groups.h:1703
orbiter::layer3_group_actions::groups::strong_generators::init_from_sims
void init_from_sims(groups::sims *S, int verbose_level)
Definition:
strong_generators.cpp:85
orbiter::layer3_group_actions::groups::subgroup
a subgroup of a group using a list of elements
Definition:
groups.h:2039
orbiter::layer3_group_actions::groups::subgroup::init_from_sims
void init_from_sims(sims *S, sims *Sub, strong_generators *SG, int verbose_level)
Definition:
subgroup.cpp:63
orbiter::layer3_group_actions::groups::subgroup::report
void report(std::ostream &ost)
Definition:
subgroup.cpp:129
orbiter::layer3_group_actions::groups::sylow_structure::freeself
void freeself()
Definition:
sylow_structure.cpp:42
orbiter::layer3_group_actions::groups::sylow_structure::init
void init(sims *S, int verbose_level)
Definition:
sylow_structure.cpp:56
orbiter::layer3_group_actions::groups::sylow_structure::primes
int * primes
Definition:
groups.h:2071
orbiter::layer3_group_actions::groups::sylow_structure::report
void report(std::ostream &ost)
Definition:
sylow_structure.cpp:109
orbiter::layer3_group_actions::groups::sylow_structure::S
sims * S
Definition:
groups.h:2075
orbiter::layer3_group_actions::groups::sylow_structure::nb_primes
int nb_primes
Definition:
groups.h:2073
orbiter::layer3_group_actions::groups::sylow_structure::null
void null()
Definition:
sylow_structure.cpp:33
orbiter::layer3_group_actions::groups::sylow_structure::go
ring_theory::longinteger_object go
Definition:
groups.h:2070
orbiter::layer3_group_actions::groups::sylow_structure::sylow_structure
sylow_structure()
Definition:
sylow_structure.cpp:23
orbiter::layer3_group_actions::groups::sylow_structure::exponents
int * exponents
Definition:
groups.h:2072
orbiter::layer3_group_actions::groups::sylow_structure::~sylow_structure
~sylow_structure()
Definition:
sylow_structure.cpp:28
orbiter::layer3_group_actions::groups::sylow_structure::Sub
subgroup * Sub
Definition:
groups.h:2076
foundations.h
FREE_OBJECTS
#define FREE_OBJECTS(p)
Definition:
foundations.h:652
FREE_int
#define FREE_int(p)
Definition:
foundations.h:640
NEW_OBJECT
#define NEW_OBJECT(type)
Definition:
foundations.h:638
NEW_OBJECTS
#define NEW_OBJECTS(type, n)
Definition:
foundations.h:639
group_actions.h
orbiter
the orbiter library for the classification of combinatorial objects
Definition:
classification.h:18
src
lib
group_actions
groups
sylow_structure.cpp
Generated by
1.9.3