17namespace layer5_applications {
18namespace applications_in_algebraic_geometry {
19namespace cubic_surfaces_and_arcs {
142 int f_v = (verbose_level >= 1);
145 cout <<
"trihedral_pair_with_action::init" << endl;
162 cout <<
"trihedral_pair_with_action::init before "
163 "create_surface_from_trihedral_pair_and_arc"
170 cout <<
"trihedral_pair_with_action::init after "
171 "create_surface_from_trihedral_pair_and_arc"
181 cout <<
"trihedral_pair_with_action::init "
182 "before create_clebsch_system" << endl;
189 cout <<
"trihedral_pair_with_action::init "
190 "after create_clebsch_system" << endl;
196 cout <<
"trihedral_pair_with_action::init before "
197 "create_stabilizer_of_trihedral_pair" << endl;
204 cout <<
"trihedral_pair_with_action::init after "
205 "create_stabilizer_of_trihedral_pair" << endl;
210 cout <<
"trihedral_pair_with_action::init the stabilizer of "
211 "the trihedral pair has order "
218 cout <<
"trihedral_pair_with_action::init before "
219 "create_action_on_equations_and_compute_orbits" << endl;
228 cout <<
"trihedral_pair_with_action::init after "
229 "create_action_on_equations_and_compute_orbits" << endl;
234 cout <<
"trihedral_pair_with_action::init the orbits "
235 "on the pencil of surfaces are:" << endl;
245 cout <<
"trihedral_pair_with_action::init before "
246 "Orb->stabilizer_any_point_plus_cosets" << endl;
257 cout <<
"trihedral_pair_with_action::init after "
258 "Orb->stabilizer_any_point_plus_cosets" << endl;
262 cout <<
"trihedral_pair_with_action::init we found the "
263 "following coset representatives:" << endl;
271 cout <<
"trihedral_pair_with_action::init after "
272 "Orb->stabilizer_any_point" << endl;
276 cout <<
"trihedral_pair_with_action::init "
277 "The stabilizer of the trihedral pair inside "
278 "the group of the surface has order "
283 cout <<
"trihedral_pair_with_action::init elements "
284 "in the stabilizer:" << endl;
289 cout <<
"trihedral_pair_with_action::init The stabilizer of "
290 "the trihedral pair inside the stabilizer of the "
291 "surface is generated by:" << endl;
308 cout <<
"trihedral_pair_with_action::init before compute_iso_types_as_double_triplets" << endl;
312 cout <<
"trihedral_pair_with_action::init after compute_iso_types_as_double_triplets" << endl;
317 cout <<
"trihedral_pair_with_action::init before "
318 "loop_over_trihedral_pairs" << endl;
326 cout <<
"trihedral_pair_with_action::init after "
327 "loop_over_trihedral_pairs" << endl;
328 cout <<
"arc_lifting::create_surface we found an "
339 cout <<
"trihedral_pair_with_action::init "
340 "Extending the group:" << endl;
348 cout <<
"trihedral_pair_with_action::init "
349 "The automorphism group has order " << ago << endl;
350 cout <<
"trihedral_pair_with_action::init "
351 "The automorphism group is:" << endl;
356 cout <<
"trihedral_pair_with_action::init done" << endl;
364 int *&aut_T_index,
int *&aut_coset_index,
367 int f_v = (verbose_level >= 1);
368 int f_vv = (verbose_level >= 3);
382 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs" << endl;
386 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
388 <<
" cosets from the downstep" << endl;
401 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
403 <<
" lies in orbit " << orbit_index0 << endl;
407 Surf->compute_nine_lines_by_dual_point_ranks(
408 Web->Dual_point_ranks + Web->t_idx0 * 6,
409 Web->Dual_point_ranks + Web->t_idx0 * 6 + 3,
414 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
415 "The first trihedral pair gives "
416 "the following nine lines: ";
417 lint_vec_print(cout, Nine_lines0, 9);
432 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
433 "testing if trihedral pair "
435 cout <<
" lies in the orbit:" << endl;
441 Surf->compute_nine_lines_by_dual_point_ranks(
448 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
449 "The " << i <<
"-th trihedral "
450 "pair gives the following nine lines: ";
451 lint_vec_print(cout, Nine_lines, 9);
458 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
459 "The nine lines of the " << i
460 <<
"-th trihedral pair intersect the "
461 "nine lines of the first in " << sz
462 <<
" lines, which are: ";
463 lint_vec_print(cout, v, sz);
468 Surf->print_trihedral_pair_in_dual_coordinates_in_GAP(
469 planes6, planes6 + 3);
485 if (orbit_index != orbit_index0) {
487 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
488 "trihedral pair " << i <<
" / " <<
AL->
Web->
nb_T
489 <<
" lies in orbit " << orbit_index
491 <<
"}$ and T_i are not isomorphic" << endl;
496 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
497 "trihedral pair " << i <<
" / " <<
AL->
Web->
nb_T
498 <<
" lies in orbit " << orbit_index
500 <<
"}$ and T_i are isomorphic" << endl;
507 cout <<
"Elt2:" << endl;
514 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
515 "testing coset j=" << j <<
" / "
516 <<
cosets->
len <<
" orbit_length = " << orbit_length << endl;
539 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
549 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
550 "before M->substitute_surface_equation" << endl;
563 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
564 "The transformed equation is:" << endl;
572 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
573 "trihedral pair " << i <<
" / " <<
AL->
Web->
nb_T
574 <<
", coset " << j <<
" / " <<
cosets->
len
575 <<
" gives automorphism, increased "
576 "orbit length is " << orbit_length + 1 << endl;
577 cout <<
"coset rep = " << endl;
581 Surf->compute_nine_lines_by_dual_point_ranks(
582 planes6, planes6 + 3,
588 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
589 "The " << orbit_length + 1 <<
"-th "
590 "trihedral pair in the orbit gives "
591 "the following nine lines: ";
592 lint_vec_print(cout, Nine_lines, 9);
606 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs "
607 "trihedral pair " << i <<
" / " <<
AL->
Web->
nb_T
608 <<
" coset " << j <<
" / " <<
cosets->
len
609 <<
" does not lie in the orbit" << endl;
618 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs orbit_length = " << orbit_length << endl;
619 cout <<
"i : aut_T_index[i] : aut_coset_index[i]" << endl;
620 for (i = 0; i < orbit_length; i++) {
628 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs we found an "
629 "orbit of trihedral pairs of length "
630 << orbit_length << endl;
636 cout <<
"trihedral_pair_with_action::loop_over_trihedral_pairs done" << endl;
644 int f_v = (verbose_level >= 1);
648 cout <<
"trihedral_pair_with_action::create_the_six_plane_equations "
649 "t_idx=" <<
t_idx << endl;
656 for (i = 0; i < 6; i++) {
662 cout <<
"trihedral_pair_with_action::create_the_six_plane_equations" << endl;
663 cout <<
"The_six_plane_equations=" << endl;
667 for (i = 0; i < 6; i++) {
672 cout <<
"trihedral_pair_with_action::create_the_six_plane_equations done" << endl;
680 int f_v = (verbose_level >= 1);
683 cout <<
"trihedral_pair_with_action::create_surface_from_trihedral_pair_and_arc t_idx=" <<
t_idx << endl;
692 cout <<
"trihedral_pair_with_action::create_surface_from_trihedral_pair_and_arc "
693 "before create_equations_for_pencil_of_surfaces_from_trihedral_pair" << endl;
700 cout <<
"trihedral_pair_with_action::create_surface_from_trihedral_pair_and_arc "
701 "before create_lambda_from_trihedral_pair_and_arc" << endl;
711 cout <<
"trihedral_pair_with_action::create_surface_from_trihedral_pair_and_arc done" << endl;
716 int &trihedral_pair_orbit_index,
719 int f_v = (verbose_level >= 1);
729 cout <<
"trihedral_pair_with_action::create_stabilizer_of_trihedral_pair" << endl;
733 cout <<
"trihedral_pair_with_action::create_stabilizer_of_trihedral_pair "
734 "before Surf_A->identify_trihedral_pair_and_get_stabilizer" << endl;
743 cout <<
"trihedral_pair_with_action::create_stabilizer_of_trihedral_pair "
744 "after Surf_A->identify_trihedral_pair_and_get_stabilizer" << endl;
750 cout <<
"trihedral_pair_with_action::create_stabilizer_of_trihedral_pair "
751 "trihedral_pair_orbit_index="
753 <<
" group order = " << go << endl;
757 cout <<
"trihedral_pair_with_action::create_stabilizer_of_trihedral_pair "
758 "group generators:" << endl;
767 cout <<
"trihedral_pair_with_action::create_stabilizer_of_trihedral_pair "
768 "before gens->init_transposed_group" << endl;
773 cout <<
"trihedral_pair_with_action::create_stabilizer_of_trihedral_pair "
774 "The transposed stabilizer is generated by:" << endl;
782 cout <<
"trihedral_pair_with_action::create_stabilizer_of_trihedral_pair done" << endl;
788 int *The_surface_equations,
793 int f_v = (verbose_level >= 1);
796 cout <<
"trihedral_pair_with_action::create_action_on_equations_and_compute_orbits "
797 "verbose_level = " << verbose_level << endl;
801 cout <<
"trihedral_pair_with_action::create_action_on_equations_and_compute_orbits "
802 "before orbits_on_equations" << endl;
809 gens_for_stabilizer_of_trihedral_pair,
815 cout <<
"trihedral_pair_with_action::create_action_on_equations_and_compute_orbits done" << endl;
821 int f_v = (verbose_level >= 1);
825 cout <<
"trihedral_pair_with_action::create_clebsch_system" << endl;
831 cout <<
"F_planes:" << endl;
833 cout <<
"G_planes:" << endl;
840 cout <<
"trihedral_pair_with_action::create_clebsch_system" << endl;
841 cout <<
"The nine lines are: ";
850 cout <<
"trihedral_pair_with_action::create_clebsch_system "
851 "The System:" << endl;
852 for (i = 0; i < 3; i++) {
853 for (j = 0; j < 4; j++) {
854 int *p =
System + (i * 4 + j) * 3;
862 cout <<
"trihedral_pair_with_action::create_clebsch_system done" << endl;
868 int f_v = (verbose_level >= 1);
873 cout <<
"trihedral_pair_with_action::compute_iso_types_as_double_triplets" << endl;
879 cout <<
"computing iso type of trihedral pair " << i <<
" / "
892 cout <<
"Trihedral pair " << i <<
" lies in orbit "
893 << orbit_index <<
"\\\\" << endl;
894 cout <<
"An isomorphism is given by" << endl;
895 cout <<
"$$" << endl;
897 cout <<
"$$" << endl;
921 cout <<
"trihedral_pair_with_action::compute_iso_types_as_double_triplets done" << endl;
929 ost <<
"$F$-planes:\\\\";
934 ost <<
"$G$-planes:\\\\";
947 cout <<
"lambda = " <<
lambda << endl;
948 cout <<
"lambda_rk = " <<
lambda_rk << endl;
949 cout <<
"The six plane equations:" << endl;
952 cout <<
"The q+1 surface equations in the pencil:" << endl;
956 cout <<
"The surface equation corresponding to "
957 "lambda = " <<
lambda <<
" which is equation "
961 cout <<
"the_equation:" << endl;
968void trihedral_pair_with_action::print_isomorphism_types_of_trihedral_pairs(
982 cout <<
"trihedral_pair_with_action::print_isomorphism_types_of_trihedral_pairs" << endl;
984 ost <<
"\\bigskip" << endl;
986 ost <<
"\\section*{Computing the Automorphism Group}" << endl;
989 ost <<
"The equation of the surface is: $" << endl;
991 ost <<
"$\\\\" << endl;
995 ost <<
"\\bigskip" << endl;
997 ost <<
"\\subsection*{Computing the Automorphism "
998 "Group, Step 1}" << endl;
1009 ost <<
"Trihedral pair $T_{" <<
AL->
Web->
t_idx0 <<
"}$ lies in orbit "
1010 << orbit_index0 <<
"\\\\" << endl;
1011 ost <<
"An isomorphism is given by" << endl;
1012 ost <<
"$$" << endl;
1014 ost <<
"$$" << endl;
1021 cout <<
"testing if trihedral pair " << i <<
" / "
1023 cout <<
" lies in the orbit:" << endl;
1032 ost <<
"Trihedral pair " << i <<
" lies in orbit "
1033 << orbit_index <<
"\\\\" << endl;
1034 ost <<
"An isomorphism is given by" << endl;
1035 ost <<
"$$" << endl;
1037 ost <<
"$$" << endl;
1040 Iso[i] = orbit_index;
1042 if (orbit_index != orbit_index0) {
1046 list[list_sz++] = i;
1051 ost <<
"An isomorphism between $T_{" << i <<
"}$ and $T_{"
1053 ost <<
"$$" << endl;
1055 ost <<
"$$" << endl;
1060 ost <<
"The isomorphism types of the trihedral pairs "
1061 "in the list of double triplets are:" << endl;
1062 ost <<
"$$" << endl;
1063 L.print_integer_matrix_with_standard_labels_and_offset(ost,
1064 Iso + 0 * 1, 40, 1, 0, 0,
TRUE );
1065 ost <<
"\\quad" << endl;
1066 L.print_integer_matrix_with_standard_labels_and_offset(ost,
1067 Iso + 40 * 1, 40, 1, 40, 0,
TRUE );
1068 ost <<
"\\quad" << endl;
1069 L.print_integer_matrix_with_standard_labels_and_offset(ost,
1070 Iso + 80 * 1, 40, 1, 80, 0,
TRUE );
1071 ost <<
"$$" << endl;
1074 ost <<
"The isomorphism types of the trihedral pairs in the "
1075 "list of double triplets are:" << endl;
1076 for (I = 0; I < 12; I++) {
1077 ost <<
"$$" << endl;
1078 ost <<
"\\begin{array}{c|c|c|c|c|c|}" << endl;
1079 ost <<
"i & T_i & \\mbox{trihedral pair} & \\mbox{double "
1080 "triplet} & \\mbox{iso} & \\mbox{map}\\\\" << endl;
1081 ost <<
"\\hline" << endl;
1082 for (h = 0; h < 10; h++) {
1084 ost << i <<
" & T_{" <<
AL->
Surf_A->
Surf->Trihedral_pair_labels[i]
1096 for (j = 0; j < 3; j++) {
1103 for (j = 0; j < 3; j++) {
1104 ost << planes6[3 + j];
1119 for (j = 0; j < 3; j++) {
1126 for (j = 0; j < 3; j++) {
1127 ost << planes6[3 + j];
1133 ost <<
" & " << iso <<
" & " << endl;
1135 ost <<
"\\\\[4pt]" << endl;
1136 ost <<
"\\hline" << endl;
1138 ost <<
"\\end{array}" << endl;
1139 ost <<
"$$" << endl;
1142 ost <<
"There are " << list_sz <<
" trihedral pairs which "
1143 "are isomorphic to the double triplet of $T_0$:\\\\" << endl;
1144 L.int_set_print_tex(ost, list, list_sz);
1145 ost <<
"$$" << endl;
1147 for (i = 0; i < list_sz; i++) {
1148 ost <<
"T_{" << list[i] <<
"}";
1149 if (i < list_sz - 1) {
1154 ost <<
"$$" << endl;
1157 ost <<
"\\bigskip" << endl;
1159 ost <<
"\\subsection*{Computing the Automorphism Group, Step 2}" << endl;
1165 ost <<
"We are now looping over the " << list_sz
1166 <<
" trihedral pairs which are isomorphic to the "
1167 "double triplet of $T_0$ and over the "
1168 <<
cosets->
len <<
" cosets:\\\\" << endl;
1169 for (i = 0; i < list_sz; i++) {
1170 ost <<
"i=" << i <<
" / " << list_sz
1171 <<
" considering $T_{" << list[i] <<
"}$:\\\\";
1185 ost <<
"The isomorphism from $T_0$ to $T_{"
1186 << list[i] <<
"}$ is :" << endl;
1187 ost <<
"$$" << endl;
1189 ost <<
" = " << endl;
1191 ost <<
" \\cdot " << endl;
1192 ost <<
"\\left(" << endl;
1194 ost <<
"\\right)^{-1}" << endl;
1195 ost <<
"$$" << endl;
1198 ost <<
"i=" << i <<
" / " << list_sz <<
" j=" << j
1199 <<
" / " <<
cosets->
len <<
" considering "
1200 "coset given by:" << endl;
1201 ost <<
"$$" << endl;
1203 ost <<
"$$" << endl;
1212 AL->
F->transpose_matrix(
Elt2, Tt, 4, 4);
1213 if (mtx->f_semilinear) {
1215 Tt[4 * 4] =
Elt2[4 * 4];
1231 ost <<
"i=" << i <<
" / " << list_sz <<
" j=" << j
1232 <<
" / " <<
cosets->
len <<
" testing element:" << endl;
1233 ost <<
"$$" << endl;
1235 ost <<
" = " << endl;
1237 ost <<
" \\cdot " << endl;
1239 ost <<
"$$" << endl;
1245 mtx->substitute_surface_equation(
Elt4,
1252 ost <<
"The transformed equation is: $" << endl;
1253 int_vec_print(ost, coeff_out, 20);
1254 ost <<
"$\\\\" << endl;
1258 ost <<
"trihedral pair " << i <<
" / " <<
AL->
Web->
nb_T
1259 <<
", coset " << j <<
" / " <<
cosets->
len
1260 <<
" gives an automorphism\\\\" << endl;
1261 ost <<
"automorphism = " << endl;
1262 ost <<
"$$" << endl;
1264 ost <<
"$$" << endl;
1268 ost <<
"The equation is different, the group "
1269 "element is not an automorphism\\\\" << endl;
1281 int f_v = (verbose_level >= 1);
1285 cout <<
"trihedral_pair_with_action::report" << endl;
1290 cout <<
"trihedral_pair_with_action::print before "
1291 "print_the_six_plane_equations" << endl;
1295 cout <<
"trihedral_pair_with_action::print before "
1296 "print_surface_equations_on_line" << endl;
1307 ost <<
"\\bigskip" << endl;
1308 ost <<
"The normalized equation of the surface is:" << endl;
1309 ost <<
"$$" << endl;
1311 ost <<
"$$" << endl;
1312 ost <<
"The equation in coded form: $";
1313 for (i = 0; i < 20; i++) {
1315 ost << coeffs2[i] <<
", " << i <<
", ";
1318 ost <<
"$\\\\" << endl;
1326 ost <<
"\\bigskip" << endl;
1331 ost <<
"\\bigskip" << endl;
1332 ost <<
"The trihedral pair is isomorphic to double triplet no "
1336 ost <<
"\\bigskip" << endl;
1338 ost <<
"The stabilizer of the trihedral pair is a group of order "
1342 ost <<
"The stabilizer of the trihedral pair is the following group:\\\\" << endl;
1345 ost <<
"The orbits of the stabilizer of the trihedral pair on the $q+1$ "
1346 "surfaces on the line are:\\\\" << endl;
1351 ost <<
"The stabilizer of the trihedral pair has " <<
Orb->
nb_orbits <<
" orbits on the pencil of surfaces.\\\\" << endl;
1355 ost <<
"The subgroup which stabilizes "
1356 "the equation has index " <<
cosets->
len
1357 <<
" in the stabilizer of "
1358 "the trihedral pair. Coset representatives are:\\\\" << endl;
1360 ost <<
"Coset " << i <<
" / " <<
cosets->
len
1361 <<
", coset rep:" << endl;
1362 ost <<
"$$" << endl;
1364 ost <<
"$$" << endl;
1366 ost <<
"The stabilizer of the trihedral pair and the equation is "
1367 "the following group\\\\" << endl;
1370 ost <<
"The automorphism group consists of "
1371 <<
coset_reps->
len <<
" cosets of the subgroup.\\\\" << endl;
1377 <<
", coset rep:" << endl;
1378 ost <<
"$$" << endl;
1380 ost <<
"$$" << endl;
1388 ost <<
"The automorphism group of the surface has order "
1389 << go <<
"\\\\" << endl;
1396 cout <<
"trihedral_pair_with_action::report done" << endl;
1405 ost <<
"The isomorphism types of the trihedral pairs "
1406 "in the list of double triplets are:" << endl;
1407 ost <<
"$$" << endl;
1408 for (i = 0; i < 6; i++) {
1412 ost <<
"\\quad" << endl;
1415 ost <<
"$$" << endl;
1418 ost <<
"Distribution of isomorphism types:\\\\" << endl;
1419 ost <<
"$$" << endl;
1421 ost <<
"$$" << endl;
1427 <<
" times for these trihedral pairs: ";
1429 ost <<
"\\\\" << endl;
long int * Trihedral_to_Eckardt
void prepare_system_from_FG(int *F_planes, int *G_planes, int lambda, int *&system, int verbose_level)
geometry::projective_space * P
void compute_nine_lines(int *F_planes, int *G_planes, long int *nine_lines, int verbose_level)
ring_theory::homogeneous_polynomial_domain * Poly3_4
void print_equation_tex(std::ostream &ost, int *coeffs)
void compute_nine_lines_by_dual_point_ranks(long int *F_planes_rank, long int *G_planes_rank, long int *nine_lines, int verbose_level)
void create_equations_for_pencil_of_surfaces_from_trihedral_pair(int *The_six_plane_equations, int *The_surface_equations, int verbose_level)
ring_theory::homogeneous_polynomial_domain * Poly1
int * Tritangent_plane_equations
long int row_col_Eckardt_points[6]
void create_lambda_from_trihedral_pair_and_arc(long int *arc6, int t_idx, int &lambda, int &lambda_rk, int verbose_level)
long int * Dual_point_ranks
void print_surface_equations_on_line(int *The_surface_equations, int lambda, int lambda_rk, std::ostream &ost)
void print_the_six_plane_equations(int *The_six_plane_equations, long int *plane6, std::ostream &ost)
a collection of functions related to sorted vectors
void vec_intersect(long int *v1, int len1, long int *v2, int len2, long int *&v3, int &len3)
int int_vec_compare(int *p, int *q, int len)
void lint_vec_heapsort(long int *v, int len)
a statistical analysis of data consisting of single integers
void init(int *data, int data_length, int f_second, int verbose_level)
data_structures::set_of_sets * get_set_partition_and_types(int *&types, int &nb_types, int verbose_level)
void print_naked_tex(std::ostream &ost, int f_backwards)
void PG_element_normalize_from_front(int *v, int stride, int len)
void PG_element_normalize(int *v, int stride, int len)
long int rank_point(int *v)
interface to create latex output files
void print_integer_matrix_with_standard_labels(std::ostream &ost, int *p, int m, int n, int f_tex)
void print_integer_matrix_with_standard_labels_and_offset(std::ostream &ost, int *p, int m, int n, int m_offset, int n_offset, int f_tex)
void print_equation(std::ostream &ost, int *coeffs)
a class to represent arbitrary precision integers
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_mult(void *a, void *b, void *ab, int verbose_level)
void orbits_on_equations(ring_theory::homogeneous_polynomial_domain *HPD, int *The_equations, int nb_equations, groups::strong_generators *gens, action *&A_on_equations, groups::schreier *&Orb, int verbose_level)
void element_invert(void *a, void *av, int verbose_level)
void make_element(int *Elt, int *data, int verbose_level)
void element_move(void *a, void *b, int verbose_level)
void element_transpose(void *a, void *at, int verbose_level)
to hold a vector of group elements
void allocate(int length, int verbose_level)
void reallocate(int new_length, int verbose_level)
void print(std::ostream &ost)
void init(actions::action *A, int verbose_level)
a matrix group over a finite field in projective, vector space or affine action
void substitute_surface_equation(int *Elt, int *coeff_in, int *coeff_out, algebraic_geometry::surface_domain *Surf, int verbose_level)
Schreier trees for orbits of groups on points.
void print_and_list_orbits(std::ostream &ost)
void print_fancy(std::ostream &ost, int f_tex, actions::action *default_action, strong_generators *gens_full_group)
strong_generators * stabilizer_any_point_plus_cosets(actions::action *default_action, ring_theory::longinteger_object &full_group_order, int pt, data_structures_groups::vector_ge *&cosets, int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
void init(actions::action *A)
void print_elements_ost(std::ostream &ost)
void print_generators_tex()
void init_transposed_group(strong_generators *SG, int verbose_level)
void init_group_extension(strong_generators *subgroup, int *data, int index, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
invariant_relations::classification_step * Trihedral_pairs
groups::strong_generators * identify_trihedral_pair_and_get_stabilizer(long int *planes6, int *transporter, int &orbit_index, int verbose_level)
void identify_trihedral_pair(long int *planes6, int *transporter, int &orbit_index, int verbose_level)
creates a cubic surface from a 6-arc in a plane using trihedral pairs
field_theory::finite_field * F
algebraic_geometry::surface_domain * Surf
algebraic_geometry::web_of_cubic_curves * Web
cubic_surfaces_in_general::surface_with_action * Surf_A
void loop_over_trihedral_pairs(data_structures_groups::vector_ge *cosets, data_structures_groups::vector_ge *&coset_reps, int *&aut_T_index, int *&aut_coset_index, int verbose_level)
int The_six_plane_equations[6 *4]
int Iso_type_as_double_triplet[120]
int nb_double_triplet_types
data_structures_groups::vector_ge * cosets
data_structures::set_of_sets * Double_triplet_types
long int plane6_by_dual_ranks[6]
actions::action * A_on_equations
trihedral_pair_with_action()
~trihedral_pair_with_action()
int * The_surface_equations
groups::strong_generators * Aut_gens
void create_clebsch_system(int verbose_level)
int trihedral_pair_orbit_index
data_structures::tally * Double_triplet_type_distribution
groups::strong_generators * stab_gens_trihedral_pair
void compute_iso_types_as_double_triplets(int verbose_level)
void init(arc_lifting *AL, int verbose_level)
groups::strong_generators * gens_subgroup
ring_theory::longinteger_object stabilizer_of_trihedral_pair_go
void create_the_six_plane_equations(int t_idx, int verbose_level)
void print_FG(std::ostream &ost)
groups::strong_generators * create_stabilizer_of_trihedral_pair(int &trihedral_pair_orbit_index, int verbose_level)
data_structures_groups::vector_ge * coset_reps
void create_action_on_equations_and_compute_orbits(int *The_surface_equations, groups::strong_generators *gens_for_stabilizer_of_trihedral_pair, actions::action *&A_on_equations, groups::schreier *&Orb, int verbose_level)
ring_theory::longinteger_object stab_order
int * Double_triplet_type_values
void report(std::ostream &ost, int verbose_level)
void create_surface_from_trihedral_pair_and_arc(int t_idx, int verbose_level)
void report_iso_type_as_double_triplets(std::ostream &ost)
cubic_surfaces_and_arcs::classify_trihedral_pairs * Classify_trihedral_pairs
algebraic_geometry::surface_domain * Surf
#define Lint_vec_copy(A, B, C)
#define Lint_vec_print(A, B, C)
#define Int_matrix_print(A, B, C)
#define Int_vec_copy(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects
groups::matrix_group * matrix_grp