14namespace layer3_group_actions {
62 int f_v = (verbose_level >= 1);
65 cout <<
"linear_group::linear_group_init" << endl;
73 cout <<
"linear_group::linear_group_init n=" <<
n << endl;
74 cout <<
"linear_group::linear_group_init q=" <<
input_q << endl;
75 cout <<
"linear_group::linear_group_init f_semilinear=" <<
f_semilinear << endl;
80 cout <<
"linear_group::linear_group_init initializing projective group" << endl;
88 cout <<
"linear_group::linear_group_init before "
89 "initial_strong_gens->init_linear_group_from_scratch" << endl;
100 cout <<
"linear_group::linear_group_init after "
101 "initial_strong_gens->init_linear_group_from_scratch" << endl;
106 cout <<
"linear_group::linear_group_init initializing "
107 "initial_strong_gens done" << endl;
110 cout <<
"linear_group::linear_group_init degreee=" <<
A_linear->
degree << endl;
111 cout <<
"linear_group::linear_group_init go=";
127 cout <<
"linear_group::linear_group_init "
128 "before init_PGL2q_OnConic" << endl;
132 cout <<
"linear_group::linear_group_init "
133 "after init_PGL2q_OnConic" << endl;
139 cout <<
"linear_group::linear_group_init "
140 "before init_wedge_action" << endl;
144 cout <<
"linear_group::linear_group_init "
145 "after init_wedge_action" << endl;
151 cout <<
"linear_group::linear_group_init "
152 "before init_wedge_action_detached" << endl;
156 cout <<
"linear_group::linear_group_init "
157 "after init_wedge_action_detached" << endl;
163 cout <<
"linear_group::linear_group_init "
164 "before init_monomial_group" << endl;
168 cout <<
"linear_group::linear_group_init "
169 "after init_monomial_group" << endl;
175 cout <<
"linear_group::linear_group_init "
176 "before init_diagonal_group" << endl;
180 cout <<
"linear_group::linear_group_init "
181 "after init_diagonal_group" << endl;
187 cout <<
"linear_group::linear_group_init "
188 "before init_null_polarity_group" << endl;
192 cout <<
"linear_group::linear_group_init "
193 "after init_null_polarity_group" << endl;
199 cout <<
"linear_group::linear_group_init "
200 "before init_symplectic_group" << endl;
204 cout <<
"linear_group::linear_group_init "
205 "after init_symplectic_group" << endl;
211 cout <<
"linear_group::linear_group_init "
212 "before init_borel_subgroup_upper" << endl;
216 cout <<
"linear_group::linear_group_init "
217 "after init_borel_subgroup_upper" << endl;
222 cout <<
"linear_group::init borel_subgroup_lower "
223 "not yet implemented" << endl;
228 cout <<
"linear_group::linear_group_init "
229 "before init_singer_group" << endl;
234 cout <<
"linear_group::linear_group_init "
235 "after init_singer_group" << endl;
241 cout <<
"linear_group::linear_group_init "
242 "before init_singer_group_and_frobenius" << endl;
247 cout <<
"linear_group::linear_group_init "
248 "after init_singer_group_and_frobenius" << endl;
254 cout <<
"linear_group::linear_group_init "
255 "before init_identity_subgroup" << endl;
259 cout <<
"linear_group::linear_group_init "
260 "after init_identity_subgroup" << endl;
266 cout <<
"linear_group::linear_group_init "
267 "before init_subfield_structure_action" << endl;
272 cout <<
"linear_group::linear_group_init "
273 "after init_subfield_structure_action" << endl;
279 cout <<
"linear_group::linear_group_init "
280 "before init_orthogonal_group" << endl;
286 cout <<
"linear_group::linear_group_init "
287 "after init_orthogonal_group" << endl;
293 cout <<
"linear_group::linear_group_init "
294 "before init_subgroup_from_file" << endl;
301 cout <<
"linear_group::linear_group_init "
302 "after init_subgroup_from_file" << endl;
308 cout <<
"linear_group::linear_group_init "
309 "f_subgroup_by_generators" << endl;
318 cout <<
"linear_group::linear_group_init "
319 "gens of size " << sz <<
":" << endl;
326 cout <<
"linear_group::linear_group_init "
327 "before init_subgroup_by_generators" << endl;
336 cout <<
"linear_group::linear_group_init "
337 "after init_subgroup_by_generators" << endl;
344 cout <<
"linear_group::linear_group_init "
345 "before init_subgroup_Janko1" << endl;
349 cout <<
"linear_group::linear_group_init "
350 "after init_subgroup_Janko1" << endl;
356 cout <<
"linear_group::linear_group_init "
357 "f_on_tensors" << endl;
367 for (i = 0; i < nb_points; i++) {
372 cout <<
"action::init_wreath_product_group_and_restrict "
373 "before A_wreath->restricted_action" << endl;
383 cout <<
"action::init_wreath_product_group_and_restrict "
384 "after A_linear->restricted_action" << endl;
387 cout <<
"linear_group::linear_group_init "
388 "f_on_tensors done" << endl;
394 cout <<
"linear_group::linear_group_init f_on_rank_one_tensors" << endl;
404 for (i = 0; i < nb_points; i++) {
409 cout <<
"linear_group::linear_group_init "
410 "before A_wreath->restricted_action" << endl;
420 cout <<
"linear_group::linear_group_init "
421 "after A_linear->restricted_action" << endl;
425 cout <<
"linear_group::linear_group_init f_on_rank_one_tensors done" << endl;
435 cout <<
"linear_group::linear_group_init creating induced action "
436 "on k-subspaces for k="
445 cout <<
"linear_group::linear_group_init before Grass->init" << endl;
453 cout <<
"linear_group::linear_group_init after Grass->init" << endl;
458 cout <<
"linear_group::linear_group_init before AG->init" << endl;
464 cout <<
"linear_group::linear_group_init after AG->init" << endl;
471 cout <<
"linear_group::linear_group_init before A2->induced_action_on_grassmannian" << endl;
479 cout <<
"linear_group::linear_group_init after A2->induced_action_on_grassmannian" << endl;
489 cout <<
"linear_group::linear_group_init action A2 created: ";
500 sprintf(str2,
" {\\rm Gr}_{%d,%d}(%d)",
507 cout <<
"linear_group::linear_group_init creating induced "
508 "action on k-subspaces done" << endl;
513 cout <<
"linear_group::linear_group_init "
514 "restricted_action" << endl;
523 cout <<
"linear_group::linear_group_init "
524 "computing restricted action on set of size " << nb_points << endl;
540 cout <<
"linear_group::linear_group_init "
541 "after restricted_action" << endl;
548 cout <<
"linear_group::linear_group_init "
549 "!f_OK, A2 = A_linear" << endl;
563 cout <<
"linear_group::linear_group_init f_export_magma" << endl;
569 cout <<
"linear_group::linear_group_init done" << endl;
575 int f_v = (verbose_level >= 1);
578 cout <<
"linear_group::init_PGL2q_OnConic "
579 "initializing action of PGL(2,q) on conic" << endl;
582 cout <<
"linear_group::init_PGL2q_OnConic "
583 "A_linear does not have sims, so we create it" << endl;
587 cout <<
"linear_group::init_PGL2q_OnConic "
588 "A_linear does not have strong generators" << endl;
603 cout <<
"linear_group::init_PGL2q_OnConic "
607 cout <<
"linear_group::init_PGL2q_OnConic "
608 "created action of PGL2_on conic:" << endl;
614 sprintf(str1,
"_OnConic_%d_%d",
n,
q);
615 sprintf(str2,
"{\\rm OnConic}(%d,%d)",
n,
q);
619 cout <<
"linear_group::init_PGL2q_OnConic "
620 "created group " <<
label << endl;
626 int f_v = (verbose_level >= 1);
629 cout <<
"linear_group::init_wedge_action "
630 "initializing wedge action" << endl;
634 cout <<
"linear_group::init_wedge_action "
635 "A_linear does not have sims, so we create it" << endl;
640 cout <<
"linear_group::init_wedge_action "
641 "A_linear does not have strong generators" << endl;
652 cout <<
"linear_group::init_wedge_action "
653 "before induced_wedge_action:" << endl;
662 cout <<
"linear_group::init_wedge_action "
663 "vector_space_dimension="
675 cout <<
"linear_group::init_wedge_action "
676 "created wedge action:" << endl;
682 sprintf(str1,
"_Wedge_%d_%d",
n,
q);
683 sprintf(str2,
"{\\rm Wedge}(%d,%d)",
n,
q);
687 cout <<
"linear_group::init_wedge_action "
688 "created group " <<
label << endl;
694 int f_v = (verbose_level >= 1);
697 cout <<
"linear_group::init_wedge_action_detached "
698 "initializing wedge action" << endl;
701 cout <<
"linear_group::init_wedge_action_detached "
702 "A_linear does not have strong generators" << endl;
708 cout <<
"linear_group::init_wedge_action_detached initializing projective group" << endl;
725 cout <<
"linear_group::init_wedge_action_detached before "
726 "initial_strong_gens->init_linear_group_from_scratch" << endl;
737 cout <<
"linear_group::init_wedge_action_detached after "
738 "initial_strong_gens->init_linear_group_from_scratch" << endl;
759 cout <<
"linear_group::init_wedge_action_detached "
760 "nice generators are:" << endl;
766 cout <<
"linear_group::init_wedge_action_detached "
767 "created detached wedge action:" << endl;
773 sprintf(str1,
"_Wedge_%d_%d_detached",
n,
q);
774 sprintf(str2,
"{\\rm WedgeDetached}(%d,%d)",
n,
q);
778 cout <<
"linear_group::init_wedge_action_detached "
779 "created group " <<
label << endl;
785 int f_v = (verbose_level >= 1);
789 cout <<
"linear_group::init_monomial_group "
790 "initializing monomial group" << endl;
798 Mtx, verbose_level - 1);
807 sprintf(str1,
"_Monomial_%d_%d",
n,
q);
808 sprintf(str2,
"{\\rm Monomial}(%d,%d)",
n,
q);
813 cout <<
"linear_group::init_monomial_group "
814 "created group " <<
label << endl;
820 int f_v = (verbose_level >= 1);
824 cout <<
"linear_group::init_diagonal_group "
825 "initializing monomial group" << endl;
833 Mtx, verbose_level - 1);
841 sprintf(str1,
"_Diagonal_%d_%d",
n,
q);
842 sprintf(str2,
"{\\rm Diagonal}(%d,%d)",
n,
q);
847 cout <<
"linear_group::init_diagonal_group "
848 "created group " <<
label << endl;
854 int f_v = (verbose_level >= 1);
858 cout <<
"linear_group::init_singer_group "
859 "initializing singer group" << endl;
878 sprintf(str1,
"_Singer_%d_%d_%d",
n,
q, singer_power);
879 sprintf(str2,
"{\\rm Singer}(%d,%d,%d)",
n,
q, singer_power);
884 cout <<
"linear_group::init_singer_group "
885 "created group " <<
label << endl;
890 int singer_power,
int verbose_level)
892 int f_v = (verbose_level >= 1);
896 cout <<
"linear_group::init_singer_group_and_frobenius "
897 "initializing singer group" << endl;
916 sprintf(str1,
"_Singer_and_Frob%d_%d_%d",
n,
q, singer_power);
917 sprintf(str2,
"{\\rm SingerFrob}(%d,%d,%d)",
n,
q, singer_power);
922 cout <<
"linear_group::init_singer_group_and_frobenius "
923 "created group " <<
label << endl;
929 int f_v = (verbose_level >= 1);
933 cout <<
"linear_group::init_null_polarity_group "
934 "initializing null polarity group" << endl;
951 sprintf(str1,
"_NullPolarity_%d_%d",
n,
q);
952 sprintf(str2,
"{\\rm NullPolarity}(%d,%d)",
n,
q);
957 cout <<
"linear_group::init_null_polarity_group "
958 "created group " <<
label << endl;
964 int f_v = (verbose_level >= 1);
968 cout <<
"linear_group::init_borel_subgroup_upper "
969 "initializing borel subgroup of upper "
970 "triangular matrices" << endl;
987 sprintf(str1,
"_BorelUpper_%d_%d",
n,
q);
988 sprintf(str2,
"{\\rm BorelUpper}(%d,%d)",
n,
q);
993 cout <<
"linear_group::init_borel_subgroup_upper "
994 "created group " <<
label << endl;
1000 int f_v = (verbose_level >= 1);
1004 cout <<
"linear_group::init_identity_subgroup "
1005 "initializing identify subgroup" << endl;
1021 sprintf(str1,
"_Identity_%d_%d",
n,
q);
1022 sprintf(str2,
"{\\rm Identity}(%d,%d)",
n,
q);
1027 cout <<
"linear_group::init_identity_subgroup "
1028 "created group " <<
label << endl;
1034 int f_v = (verbose_level >= 1);
1038 cout <<
"linear_group::init_symplectic_group "
1039 "initializing symplectic group" << endl;
1056 sprintf(str1,
"_Sp_%d_%d",
n,
q);
1057 sprintf(str2,
"{\\rm Sp}(%d,%d)",
n,
q);
1063 cout <<
"linear_group::init_symplectic_group "
1064 "created group " <<
label << endl;
1070 int f_v = (verbose_level >= 1);
1074 cout <<
"linear_group::init_subfield_structure_action" << endl;
1075 cout <<
"s=" << s << endl;
1079 cout <<
"linear_group::init_subfield_structure_action "
1080 "before field_reduction" << endl;
1088 n, s,
F, verbose_level - 1);
1098 sprintf(str1,
"_Subfield_%d_%d_%d",
n,
q, s);
1099 sprintf(str2,
"{\\rm SubfieldAction}(%d,%d,%d)",
n,
q, s);
1104 cout <<
"linear_group::init_subfield_structure_action "
1105 "created group " <<
label << endl;
1109 cout <<
"linear_group::init_subfield_structure_action "
1116 int f_v = (verbose_level >= 1);
1120 cout <<
"linear_group::init_orthogonal_group "
1121 "initializing orthogonal group" << endl;
1122 cout <<
"epsilon=" << epsilon << endl;
1143 sprintf(str1,
"_Orthogonal_plus_%d_%d",
n,
q);
1144 sprintf(str2,
"{\\rm O}^+(%d,%d)",
n,
q);
1149 sprintf(str1,
"_Orthogonal_minus_%d_%d",
n,
q);
1150 sprintf(str2,
"{\\rm O}^-(%d,%d)",
n,
q);
1156 sprintf(str1,
"_Orthogonal_%d_%d",
n,
q);
1157 sprintf(str2,
"{\\rm O}(%d,%d)",
n,
q);
1162 cout <<
"linear_group::init_orthogonal_group "
1163 "created group " <<
label << endl;
1169 std::string &subgroup_fname, std::string &subgroup_label,
1172 int f_v = (verbose_level >= 1);
1176 cout <<
"linear_group::init_subgroup_from_file" << endl;
1177 cout <<
"fname=" << subgroup_fname << endl;
1178 cout <<
"label=" << subgroup_label << endl;
1187 cout <<
"linear_group::init_subgroup_from_file "
1188 "reading generators from file " << subgroup_fname << endl;
1192 subgroup_fname, verbose_level - 1);
1195 cout <<
"linear_group::init_subgroup_from_file "
1196 "read generators from file" << endl;
1207 sprintf(str1,
"_SubgroupFile_%d_%d",
n,
q);
1208 sprintf(str2,
"{\\rm SubgroupFile}(%d,%d)",
n,
q);
1214 cout <<
"linear_group::init_subgroup_from_file "
1215 "created group " <<
label << endl;
1220 std::string &subgroup_label,
1221 std::string &subgroup_order_text,
1222 int nb_subgroup_generators,
1223 int *subgroup_generators_data,
1226 int f_v = (verbose_level >= 1);
1230 cout <<
"linear_group::init_subgroup_by_generators" << endl;
1231 cout <<
"label=" << subgroup_label << endl;
1236 cout <<
"linear_group::init_subgroup_by_generators before "
1237 "Strong_gens->init_subgroup_by_generators" << endl;
1241 nb_subgroup_generators, subgroup_generators_data,
1242 subgroup_order_text,
1249 cout <<
"linear_group::init_subgroup_by_generators after "
1250 "Strong_gens->init_subgroup_by_generators" << endl;
1261 cout <<
"linear_group::init_subgroup_by_generators go = " << go << endl;
1278 label.append(
"_Subgroup_");
1279 label.append(subgroup_label);
1281 label.append(subgroup_order_text);
1291 cout <<
"linear_group::init_subgroup_by_generators "
1292 "created group " <<
label << endl;
1298 int f_v = (verbose_level >= 1);
1302 cout <<
"linear_group::init_subgroup_Janko1" << endl;
1307 cout <<
"linear_group::init_subgroup_Janko1 before "
1308 "Strong_gens->init_subgroup_by_generators" << endl;
1321 cout <<
"linear_group::init_subgroup_Janko1 after "
1322 "Strong_gens->init_subgroup_by_generators" << endl;
1334 sprintf(str1,
"_Subgroup_Janko1");
1335 sprintf(str2,
"{\\rm Subgroup Janko1}");
1340 cout <<
"linear_group::init_subgroup_Janko1 "
1341 "created group " <<
label << endl;
1346 int f_sylow,
int f_group_table,
1347 int f_conjugacy_classes_and_normalizers,
1351 int f_v = (verbose_level >= 1);
1357 cout <<
"linear_group::report creating report for group " <<
label << endl;
1362 cout <<
"linear_group::report before Strong_gens->create_sims" << endl;
1389 ost <<
"\\section*{The Group $" <<
label_tex <<
"$}" << endl;
1394 ost <<
"\\noindent The order of the group $"
1396 <<
"$ is " << go <<
"\\\\" << endl;
1400 fp <<
"\\noindent The field ${\\mathbb F}_{"
1402 <<
"}$ :\\\\" << endl;
1404 cout <<
"linear_group::report before F->cheat_sheet" << endl;
1408 cout <<
"linear_group::report after F->cheat_sheet" << endl;
1414 ost <<
"\\noindent The group acts on a set of size "
1420 A->print_points(fp);
1427 ost <<
"Nice generators:\\\\" << endl;
1433 cout <<
"Strong generators:\\\\" << endl;
1438 cout <<
"linear_group::report before A2->report" << endl;
1447 cout <<
"linear_group::report after A2->report" << endl;
1451 cout <<
"linear_group::report before A2->report_basic_orbits" << endl;
1457 cout <<
"linear_group::report after A2->report_basic_orbits" << endl;
1460 if (f_group_table) {
1462 cout <<
"linear_group::report f_group_table is true" << endl;
1468 string fname_group_table;
1471 cout <<
"linear_group::report The group table is:" << endl;
1474 fname_group_table.assign(
label);
1475 fname_group_table.append(
"_group_table.csv");
1477 cout <<
"Written file " << fname_group_table <<
" of size " << Fio.
file_size(fname_group_table) << endl;
1482 ost <<
"\\begin{sidewaystable}" << endl;
1483 ost <<
"$$" << endl;
1485 ost <<
"$$" << endl;
1486 ost <<
"\\end{sidewaystable}" << endl;
1508 for (i = 0; i <
n; i++) {
1512 for (i = 0; i <
n; i++) {
1513 labels[
n + i] =
n + i % 100;
1517 for (i = 0; i <
n; i++) {
1518 labels[
n + i] =
n + i;
1522 fname2.assign(
label);
1523 sprintf(str,
"_group_table_order_%ld",
n);
1529 G.
init(fname2, LG_Draw_options, verbose_level);
1532 mp_graphics G(fname2, x_min, y_min, xmax, ymax, f_embedded, f_sideways, verbose_level - 1);
1547 int color_scale[] = {8,5,6,4,3,2,18,19, 7,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,1};
1548 int nb_colors =
sizeof(color_scale) /
sizeof(
int);
1554 color_scale, nb_colors,
1572 cout <<
"linear_group::report f_sylow is true" << endl;
1578 Syl->
init(H, verbose_level);
1585 cout <<
"linear_group::report f_sylow is false" << endl;
1590 if (f_conjugacy_classes_and_normalizers) {
1593 cout <<
"linear_group::report f_conjugacy_classes_and_normalizers is true" << endl;
1600 cout <<
"linear_group::report A2->report_conjugacy_classes_and_normalizers" << endl;
1614 int f_sylow,
int f_group_table,
int f_classes,
1617 int f_v = (verbose_level >= 1);
1621 cout <<
"linear_group::create_latex_report" << endl;
1629 fname.assign(
label);
1630 fname.append(
"_report.tex");
1631 title.assign(
"The group $");
1639 ofstream ost(fname);
1645 title.c_str(), author.c_str(),
1655 cout <<
"linear_group::create_latex_report before report" << endl;
1657 report(ost, f_sylow, f_group_table,
1662 cout <<
"linear_group::create_latex_report after report" << endl;
1671 cout <<
"written file " << fname <<
" of size "
1679 cout <<
"linear_group::create_latex_report done" << endl;
a collection of combinatorial functions
long int binomial2(int a)
void cheat_sheet(std::ostream &f, int verbose_level)
to rank and unrank subspaces of a fixed dimension in F_q^n
void init(int n, int k, field_theory::finite_field *F, int verbose_level)
options for drawing an object of type layered_graph
a general 2D graphical output interface (metapost, tikz, postscript)
void init(std::string &file_name, layered_graph_draw_options *Draw_options, int verbose_level)
void draw_matrix_in_color(int f_row_grid, int f_col_grid, int *Table, int nb_colors, int m, int n, int *color_scale, int nb_colors_in_scale, int f_has_labels, int *labels)
void begin_figure(int factor_1000)
void finish(std::ostream &ost, int verbose_level)
a collection of functions related to file io
void int_matrix_write_csv(std::string &fname, int *M, int m, int n)
long int file_size(std::string &fname)
interface to create latex output files
void latexable_string(std::stringstream &str, const char *p, int max_len, int line_skip)
void int_matrix_print_tex(std::ostream &ost, int *p, int m, int n)
void head(std::ostream &ost, int f_book, int f_title, const char *title, const char *author, int f_toc, int f_landscape, int f_12pt, int f_enlarged_page, int f_pagenumbers, const char *extras_for_preamble)
void foot(std::ostream &ost)
void get_vector_from_label(std::string &label, int *&v, int &sz, int verbose_level)
void get_lint_vector_from_label(std::string &label, long int *&v, int &sz, int verbose_level)
a class to represent arbitrary precision integers
a permutation group in a fixed action.
action * restricted_action(long int *points, int nb_points, int verbose_level)
action * induced_action_on_wedge_product(int verbose_level)
void report(std::ostream &ost, int f_sims, groups::sims *S, int f_strong_gens, groups::strong_generators *SG, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
groups::strong_generators * Strong_gens
int f_has_strong_generators
void report_basic_orbits(std::ostream &ost)
void induced_action_by_representation_on_conic(action *A_old, int f_induce_action, groups::sims *old_G, int verbose_level)
void create_sims(int verbose_level)
action * induced_action_on_grassmannian(int k, int verbose_level)
void report_conjugacy_classes_and_normalizers(std::ostream &ost, groups::sims *override_Sims, int verbose_level)
groups::matrix_group * get_matrix_group()
to hold a vector of group elements
void print(std::ostream &ost)
void print_tex(std::ostream &ost)
description of a linear group from the command line
std::string restricted_action_text
std::string subgroup_label
int nb_subgroup_generators
int f_null_polarity_group
int f_subgroup_by_generators
int f_subfield_structure_action
int f_borel_subgroup_upper
int orthogonal_group_epsilon
std::string subgroup_order_text
int f_borel_subgroup_lower
std::string subgroup_fname
int f_singer_group_and_frobenius
int f_wedge_action_detached
field_theory::finite_field * F
int f_on_rank_one_tensors
std::string subgroup_generators_label
void linear_group_init(linear_group_description *description, int verbose_level)
void create_latex_report(graphics::layered_graph_draw_options *O, int f_sylow, int f_group_table, int f_classes, int verbose_level)
void init_monomial_group(int verbose_level)
void report(std::ostream &fp, int f_sylow, int f_group_table, int f_conjugacy_classes_and_normalizers, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
void init_singer_group_and_frobenius(int singer_power, int verbose_level)
strong_generators * Strong_gens
void init_diagonal_group(int verbose_level)
void init_subgroup_Janko1(int verbose_level)
int vector_space_dimension
data_structures_groups::vector_ge * nice_gens
void init_PGL2q_OnConic(int verbose_level)
linear_group_description * description
void init_singer_group(int singer_power, int verbose_level)
void init_identity_subgroup(int verbose_level)
void init_subgroup_from_file(std::string &subgroup_fname, std::string &subgroup_label, int verbose_level)
void init_borel_subgroup_upper(int verbose_level)
void init_symplectic_group(int verbose_level)
void init_null_polarity_group(int verbose_level)
strong_generators * initial_strong_gens
int f_has_strong_generators
field_theory::finite_field * F
void init_subgroup_by_generators(std::string &subgroup_label, std::string &subgroup_order_text, int nb_subgroup_generators, int *subgroup_generators_data, int verbose_level)
void init_wedge_action(int verbose_level)
void init_wedge_action_detached(int verbose_level)
actions::action * A_linear
void init_orthogonal_group(int epsilon, int verbose_level)
void init_subfield_structure_action(int s, int verbose_level)
a matrix group over a finite field in projective, vector space or affine action
field_theory::finite_field * GFq
a permutation group represented via a stabilizer chain
void group_order(ring_theory::longinteger_object &go)
void create_group_table(int *&Table, long int &n, int verbose_level)
void print_all_group_elements_tex(std::ostream &ost)
long int group_order_lint()
a strong generating set for a permutation group with respect to a fixed action
void generators_for_the_monomial_group(actions::action *A, matrix_group *Mtx, int verbose_level)
void Janko1(actions::action *A, field_theory::finite_field *F, int verbose_level)
void init_linear_group_from_scratch(actions::action *&A, field_theory::finite_field *F, int n, linear_group_description *Descr, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void init(actions::action *A)
void exterior_square(actions::action *A_detached, strong_generators *SG_original, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
sims * create_sims(int verbose_level)
void print_generators_tex()
void generators_for_the_orthogonal_group(actions::action *A, field_theory::finite_field *F, int n, int epsilon, int f_semilinear, int verbose_level)
void read_file(actions::action *A, std::string &fname, int verbose_level)
void export_magma(actions::action *A, std::ostream &ost, int verbose_level)
void generators_for_the_null_polarity_group(actions::action *A, matrix_group *Mtx, int verbose_level)
void generators_for_the_identity_subgroup(actions::action *A_linear, matrix_group *Mtx, int verbose_level)
void generators_for_the_singer_cycle(actions::action *A, matrix_group *Mtx, int power_of_singer, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void generators_for_the_diagonal_group(actions::action *A, matrix_group *Mtx, int verbose_level)
void field_reduction(actions::action *Aq, int n, int s, field_theory::finite_field *Fq, int verbose_level)
void generators_for_the_singer_cycle_and_the_Frobenius(actions::action *A, matrix_group *Mtx, int power_of_singer, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void init_subgroup_by_generators(actions::action *A, int nb_subgroup_gens, int *subgroup_gens, std::string &subgroup_order_text, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void generators_for_the_borel_subgroup_upper(actions::action *A_linear, matrix_group *Mtx, int verbose_level)
void generators_for_symplectic_group(actions::action *A, matrix_group *Mtx, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
The Sylow structure of a finite group.
void init(sims *S, int verbose_level)
void report(std::ostream &ost)
the wreath product group GL(d,q) wreath Sym(n)
int dimension_of_tensor_action
long int * rank_one_tensors_in_PG
long int degree_of_tensor_action
induced action on the grassmannian (subspaces of a fixed dimension of a vectors space)
void init(actions::action &A, geometry::grassmann *G, int verbose_level)
#define Lint_vec_print(A, B, C)
#define Int_matrix_print(A, B, C)
#define Int_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects
induced_actions::action_on_wedge_product * AW
induced_actions::action_by_representation * Rep
groups::wreath_product * wreath_product_group
groups::matrix_group * matrix_grp