15namespace layer5_applications {
16namespace applications_in_algebraic_geometry {
17namespace cubic_surfaces_and_arcs {
20static void callback_surfaces_arc_lifting_report(std::ostream &ost,
int i,
22static void callback_surfaces_arc_lifting_free_trace_result(
void *ptr,
23 void *data,
int verbose_level);
24static void callback_surfaces_arc_lifting_latex_report_trace(std::ostream &ost,
76 int verbose_level = 0;
77 int f_v = (verbose_level >= 1);
80 cout <<
"surfaces_arc_lifting::freeself" << endl;
83 cout <<
"surfaces_arc_lifting::freeself before FREE_OBJECT(Six_arcs)" << endl;
108 cout <<
"surfaces_arc_lifting::freeself before FREE_OBJECT(Surfaces)" << endl;
115 cout <<
"surfaces_arc_lifting::freeself before FREE_OBJECT(A3)" << endl;
123 cout <<
"surfaces_arc_lifting::freeself done" << endl;
131 int f_test_nb_Eckardt_points,
int nb_E,
134 int f_v = (verbose_level >= 1);
138 cout <<
"surfaces_arc_lifting::init" << endl;
148 sprintf(str,
"%d",
q);
153 cout <<
"surfaces_arc_lifting::init A4 = " <<
A4->
label << endl;
154 cout <<
"surfaces_arc_lifting::init A4 = " <<
A4->
label_tex << endl;
156 if (f_test_nb_Eckardt_points) {
157 cout <<
"f_test_nb_Eckardt_points is on, testing for " << nb_E <<
" Eckardt points" << endl;
170 cout <<
"surfaces_arc_lifting::init "
171 "before A->init_projective_group" << endl;
173 vector_ge *nice_gens;
181 cout <<
"surfaces_arc_lifting::init "
182 "after A->init_projective_group" << endl;
194 cout <<
"surfaces_arc_lifting::init "
195 "before Six_arcs->init" << endl;
198 Descr->
Control = Control_six_arcs;
205 f_test_nb_Eckardt_points, nb_E,
210 cout <<
"surfaces_arc_lifting::init "
211 "after Six_arcs->init" << endl;
212 cout <<
"surfaces_arc_lifting::init "
213 "Six_arcs->nb_arcs_not_on_conic = "
220 cout <<
"surfaces_arc_lifting::init before downstep" << endl;
224 cout <<
"surfaces_arc_lifting::init after downstep" << endl;
232 cout <<
"surfaces_arc_lifting::init "
233 "before Up->init" << endl;
241 Up->
init(
this, verbose_level - 2);
247 cout <<
"surfaces_arc_lifting::init "
248 "after Up->init" << endl;
255 cout <<
"surfaces_arc_lifting::init done" << endl;
261 int f_v = (verbose_level >= 1);
263 int pt_representation_sz;
267 cout <<
"surfaces_arc_lifting::downstep" << endl;
268 cout <<
"verbose_level = " << verbose_level << endl;
270 pt_representation_sz = 6 + 1 + 2 + 1 + 1 + 2 + 20 + 27;
279 Flag =
NEW_lint(pt_representation_sz);
284 cout <<
"surfaces_arc_lifting::downstep computing orbits on pairs" << endl;
301 cout <<
"surfaces_arc_lifting::downstep "
302 "before Table_orbits_on_pairs[" << arc_idx <<
"].init" << endl;
309 total_nb_orbits_on_partitions;
313 cout <<
"surfaces_arc_lifting::downstep "
314 "computing orbits on pairs done" << endl;
333 pt_representation_sz,
336 callback_surfaces_arc_lifting_free_trace_result ,
337 callback_surfaces_arc_lifting_latex_report_trace,
342 cout <<
"surfaces_arc_lifting::downstep initializing flag orbits" << endl;
358 cout <<
"surfaces_arc_lifting::downstep "
359 "before downstep_one_arc" << endl;
364 cout <<
"surfaces_arc_lifting::downstep "
365 "after downstep_one_arc" << endl;
373 cout <<
"surfaces_arc_lifting::downstep " << endl;
374 cout <<
"arc_idx : orbit on pairs index : nb_orbits on partitions" << endl;
380 int pair_orbit_idx, nb;
384 for (pair_orbit_idx = 0;
390 cout << arc_idx <<
" & " << pair_orbit_idx <<
" & " << nb << endl;
413 int orbit_on_pairs_idx, nb_orbits_on_pairs;
414 int downstep_secondary_orbit = 0;
418 for (orbit_on_pairs_idx = 0;
419 orbit_on_pairs_idx < nb_orbits_on_pairs;
420 orbit_on_pairs_idx++) {
422 int orbit_on_partition_idx;
423 int nb_partition_orbits;
434 for (orbit_on_partition_idx = 0;
435 orbit_on_partition_idx < nb_partition_orbits;
436 orbit_on_partition_idx++) {
444 downstep_secondary_orbit++;
455 cout <<
"surfaces_arc_lifting::downstep "
456 "arc_idx : flag_orbit_fst[] : "
457 "flag_orbit_len[]" << endl;
466 cout <<
"surfaces_arc_lifting::downstep "
467 "i : flag_orbit_on_arcs_not_on_a_conic_idx[] : "
468 "flag_orbit_on_pairs_idx[] : "
469 "flag_orbit_on_partition_idx[]" << endl;
475 cout <<
"number of arcs not on a conic = "
478 cout <<
"number of flag orbits = "
485 cout <<
"surfaces_arc_lifting::downstep "
486 "initializing flag orbits done" << endl;
491 int &cur_flag_orbit,
long int *Flag,
int verbose_level)
493 int f_v = (verbose_level >= 1);
494 int f_vv = (verbose_level >= 2);
500 cout <<
"surfaces_arc_lifting::downstep_one_arc" << endl;
505 cout <<
"surfaces_arc_lifting::downstep_one_arc "
520 cout <<
"surfaces_arc_lifting::downstep_one_arc "
521 "arc " << arc_idx <<
" / "
530 int orbit_on_pairs_idx, nb_orbits_on_pairs;
531 int downstep_secondary_orbit = 0;
535 for (orbit_on_pairs_idx = 0;
536 orbit_on_pairs_idx < nb_orbits_on_pairs;
537 orbit_on_pairs_idx++) {
540 cout <<
"surfaces_arc_lifting::downstep_one_arc "
542 << orbit_on_pairs_idx <<
" / "
543 << nb_orbits_on_pairs << endl;
554 cout <<
"surfaces_arc_lifting::downstep_one_arc "
556 << orbit_on_pairs_idx <<
" / "
557 << nb_orbits_on_pairs <<
" pair \\{";
562 int orbit_on_partition_idx;
563 int nb_partition_orbits;
576 for (orbit_on_partition_idx = 0;
577 orbit_on_partition_idx < nb_partition_orbits;
578 orbit_on_partition_idx++) {
581 cout <<
"surfaces_arc_lifting::downstep_one_arc "
582 "orbit on partitions "
583 << orbit_on_partition_idx <<
" / "
584 << nb_partition_orbits << endl;
588 int f, l, partition_rk, p0, p1;
591 l = Sch->
orbit_len[orbit_on_partition_idx];
593 partition_rk = Sch->
orbit[f + 0];
595 cout <<
"surfaces_arc_lifting::downstep_one_arc "
596 "orbit on partitions "
597 << orbit_on_partition_idx <<
" / "
598 << nb_partition_orbits
599 <<
" partition_rk = " << partition_rk <<
" orbit of size " << l << endl;
606 Flag[6] = orbit_on_pairs_idx;
607 p0 = pair_orbit->
data[0];
608 p1 = pair_orbit->
data[1];
610 Flag[9] = orbit_on_partition_idx;
611 Flag[10] = partition_rk;
620 cout <<
"surfaces_arc_lifting::downstep_one_arc The partition is: ";
621 for (h = 0; h < 2; h++) {
631 cout <<
"surfaces_arc_lifting::downstep_one_arc "
632 "computing partition stabilizer:" << endl;
639 cout <<
"surfaces_arc_lifting::downstep_one_arc "
640 "expecting a group of order "
641 << full_group_order << endl;
646 orbit_on_partition_idx,
650 cout <<
"surfaces_arc_lifting::downstep_one_arc "
651 "stabilizer of the flag:" << endl;
657 long int Arc6_rearranged[6];
659 long int line1, line2;
665 cout <<
"surfaces_arc_lifting::downstep_one_arc "
673 cout <<
"surfaces_arc_lifting::downstep_one_arc "
674 "after embedding, the arc is: ";
683 P0, P1, partition_rk, Arc6_rearranged,
686 cout <<
"surfaces_arc_lifting::downstep_one_arc "
687 "the rearranged arcs is: ";
693 P0, P1, line1, line2,
696 cout <<
"surfaces_arc_lifting::downstep_one_arc "
697 "after find_two_lines_for_arc_lifting "
698 "line1=" << line1 <<
" line2=" << line2 << endl;
704 long int lines27[27];
707 cout <<
"surfaces_arc_lifting::downstep_one_arc "
708 "before Surf->do_arc_lifting_with_two_lines" << endl;
711 Arc6, p0, p1, partition_rk,
716 cout <<
"surfaces_arc_lifting::downstep_one_arc "
717 "after Surf->do_arc_lifting_with_two_lines" << endl;
729 long int arc_stab_order;
730 long int partition_stab_order;
731 int downstep_orbit_len;
736 downstep_orbit_len = arc_stab_order / partition_stab_order;
738 cout <<
"surfaces_arc_lifting::downstep_one_arc" << endl;
739 cout <<
"arc_stab_order=" << arc_stab_order << endl;
740 cout <<
"partition_stab_order=" << partition_stab_order << endl;
741 cout <<
"downstep_orbit_len=" << downstep_orbit_len << endl;
751 cout <<
"surfaces_arc_lifting::downstep_one_arc "
752 "before SG_induced->hyperplane_lifting_with_two_lines_fixed" << endl;
756 Surf->
P, line1, line2,
759 cout <<
"surfaces_arc_lifting::downstep_one_arc "
760 "after SG_induced->hyperplane_lifting_with_two_lines_fixed" << endl;
763 cout <<
"lifted generators are:" << endl;
768 cout <<
"surfaces_arc_lifting::downstep_one_arc "
769 "before Flag_orbit_node[].init" << endl;
775 downstep_secondary_orbit,
783 cout <<
"surfaces_arc_lifting::downstep_one_arc "
784 "after Flag_orbit_node[].init" << endl;
792 downstep_secondary_orbit++;
810 int f_v = (verbose_level >= 1);
814 cout <<
"surfaces_arc_lifting::report" << endl;
816 std::string fname_arc_lifting;
822 fname_arc_lifting.append(
".tex");
823 snprintf(title, 1000,
"Arc lifting over GF(%d) ",
q);
828 ofstream fp(fname_arc_lifting.c_str());
844 cout <<
"surfaces_arc_lifting::report before report2" << endl;
848 report2(fp, draw_options, verbose_level);
852 cout <<
"surfaces_arc_lifting::report after report2" << endl;
863 cout <<
"Written file " << fname_arc_lifting <<
" of size "
864 << Fio.
file_size(fname_arc_lifting.c_str()) << endl;
867 cout <<
"surfaces_arc_lifting::report done" << endl;
875 int f_v = (verbose_level >= 1);
876 int nb_arcs, arc_idx;
880 cout <<
"surfaces_arc_lifting::report2" << endl;
886 sprintf(str,
"\\section{The Classification of Cubic Surfaces with 27 Lines "
887 "over the field ${\\mathbb F}_{%d}$}",
q);
910 callback_surfaces_arc_lifting_report
914 ost <<
"\\bigskip" << endl << endl;
917 ost <<
"\\section{Six-Arcs}" << endl << endl;
927 ost <<
"There are " << nb_arcs <<
" arcs.\\\\" << endl << endl;
934 <<
" arcs not on a conic. "
935 "They are as follows:\\\\" << endl << endl;
951 ost <<
"\\subsection*{Arc "
961 The_arc->
data, 6, 3);
964 ost <<
"The stabilizer is the following group:\\\\" << endl;
971 ost <<
"\\section{Flag Orbits}" << endl << endl;
978 ost <<
"\\section{Surfaces in Detail}" << endl << endl;
987 ost <<
"\\section{Flag Orbits in Detail}" << endl << endl;
992 ost <<
"\\section{Six-Arcs in Detail}" << endl << endl;
1001 ost <<
"\\section{Basics}" << endl << endl;
1010 cout <<
"surfaces_arc_lifting::report2 done" << endl;
1020 ost <<
"Flag orbits: \\\\" << endl;
1023 ost <<
"$$" << endl;
1024 ost <<
"\\begin{array}{|c|c|c|c|c|c|c|c|c|c|}" << endl;
1025 ost <<
"\\hline" << endl;
1036 long int flag_stab_order;
1053 for (i = 0; i < 6; i++) {
1057 pair_orbit_idx = Flag[6];
1058 part_orbit_idx = Flag[9];
1060 lines[0] = Flag[11];
1061 lines[1] = Flag[12];
1070 ost << flag_orbit_idx <<
" & ";
1071 ost << arc_idx <<
" & ";
1074 ost << pair_orbit_idx <<
" & ";
1077 ost << part_orbit_idx <<
" & ";
1078 ost << part_rk <<
" & ";
1081 ost << flag_stab_order <<
"\\\\" << endl;
1082 ost <<
"\\hline" << endl;
1084 ost <<
"\\end{array}" << endl;
1085 ost <<
"$$" << endl;
1090 int f_v = (verbose_level >= 1);
1094 cout <<
"surfaces_arc_lifting::report_flag_orbits_in_detail" << endl;
1107 "They are as follows:\\\\" << endl << endl;
1109 int f, arc_idx, pair_idx, part_idx;
1114 ost <<
"\\subsection*{Flag Orbit "
1122 ost <<
"Associated with arc =" << arc_idx <<
", pair orbit "
1123 << pair_idx <<
" and partition orbit " << part_idx <<
"\\\\" << endl;
1145 ost <<
"line1=" << line1 <<
" line2=" << line2 <<
"\\\\" << endl;
1146 ost <<
"$$" << endl;
1147 ost <<
"\\ell_1 = " << endl;
1151 ost <<
"\\quad" << endl;
1152 ost <<
"\\ell_2 = " << endl;
1156 ost <<
"$$" << endl;
1157 ost <<
"The equation of the lifted surface is:" << endl;
1158 ost <<
"\\begin{align*}" << endl;
1167 ost <<
"=0" << endl;
1170 ost <<
"\\end{align*}" << endl;
1171 ost <<
"$$" << endl;
1173 ost <<
"$$" << endl;
1184 ost <<
"Flag orbit " << f <<
" / "
1186 <<
", Trace event " << i <<
" / "
1200 Orbits_on_pairs->get_set_and_stabilizer(
1204 ost <<
"Pair orbit: $";
1207 ost <<
"$\\\\" << endl;
1209 ost <<
"The stabilizer of the pair is the following group of order "
1222 Table_orbits_on_partition[pair_idx].Orbits_on_partition;
1225 int f, l, orbit_rep;
1230 orbit_rep = Sch->
orbit[f + 0];
1231 ost <<
"orbit of $" << orbit_rep <<
"$ has length " << l
1232 <<
", and corresponds to the partition $";
1234 for (h = 0; h < 2; h++) {
1237 ost <<
"$\\\\" << endl;
1242 cout <<
"computing partition stabilizer:" << endl;
1247 cout <<
"expecting a group of order "
1248 << full_group_order << endl;
1252 part_idx, verbose_level);
1255 ost <<
"The stabilizer is the following group of order "
1261 ost <<
"The embedded stabilizer is the "
1262 "following group of order "
1267 ost <<
"The elements of the group of order "
1269 <<
" are:\\\\" << endl;
1274 ost <<
"The stabilizer is trivial.\\\\" << endl;
1291 ost <<
"There are " << nb_arcs <<
" arcs.\\\\" << endl << endl;
1298 <<
" arcs not on a conic. "
1299 "They are as follows:\\\\" << endl << endl;
1306 set_and_stabilizer *The_arc;
1315 ost <<
"\\subsection*{Arc "
1319 ost <<
"$$" << endl;
1321 The_arc->print_set_tex(ost);
1322 ost <<
"$$" << endl;
1325 The_arc->data, 6, 3);
1328 ost <<
"The stabilizer is the following group:\\\\" << endl;
1329 The_arc->Strong_gens->print_generators_tex(ost);
1331 int orb, nb_orbits_on_pairs;
1332 int downstep_secondary_orbit = 0;
1335 Orbits_on_pairs->nb_orbits_at_level(2);
1337 ost <<
"There are " << nb_orbits_on_pairs
1338 <<
" orbits on pairs:" << endl;
1339 ost <<
"\\begin{enumerate}[(1)]" << endl;
1341 for (orb = 0; orb < nb_orbits_on_pairs; orb++) {
1342 ost <<
"\\item" << endl;
1343 set_and_stabilizer *pair_orbit;
1345 Orbits_on_pairs->get_set_and_stabilizer(
1351 pair_orbit->print_set_tex(ost);
1352 ost <<
"$\\\\" << endl;
1353 if (pair_orbit->Strong_gens->group_order_as_lint() > 1) {
1354 ost <<
"The stabilizer is the following group of order "
1355 << pair_orbit->Strong_gens->group_order_as_lint()
1357 pair_orbit->Strong_gens->print_generators_tex(ost);
1358 pair_orbit->Strong_gens->print_generators_as_permutations_tex(
1363 int nb_partition_orbits;
1366 Table_orbits_on_partition[orb].nb_orbits_on_partition;
1368 ost <<
"There are " << nb_partition_orbits
1369 <<
" orbits on partitions.\\\\" << endl;
1370 ost <<
"\\begin{enumerate}[(i)]" << endl;
1377 Table_orbits_on_partition[orb].Orbits_on_partition;
1380 for (orbit = 0; orbit < nb_partition_orbits; orbit++) {
1382 ost <<
"\\item" << endl;
1388 downstep_secondary_orbit ,
1392 ost <<
"secondary orbit number " << downstep_secondary_orbit
1393 <<
" is flag orbit " << flag_orbit_idx
1396 int f, l, orbit_rep;
1398 f = Sch->orbit_first[orbit];
1399 l = Sch->orbit_len[orbit];
1401 orbit_rep = Sch->orbit[f + 0];
1402 ost <<
"orbit of $" << orbit_rep <<
"$ has length " << l
1403 <<
", and corresponds to the partition $";
1405 for (h = 0; h < 2; h++) {
1406 int_vec_print(ost, part + h * 2, 2);
1408 ost <<
"$\\\\" << endl;
1410 longinteger_object go;
1411 strong_generators *SG;
1413 cout <<
"computing partition stabilizer:" << endl;
1415 longinteger_object full_group_order;
1417 pair_orbit->Strong_gens->group_order(full_group_order);
1418 cout <<
"expecting a group of order "
1419 << full_group_order << endl;
1420 SG = Sch->stabilizer_orbit_rep(
1423 orbit, verbose_level);
1425 if (SG->group_order_as_lint() > 1) {
1426 ost <<
"The stabilizer is the following group of order "
1427 << SG->group_order_as_lint()
1429 SG->print_generators_tex(ost);
1430 SG->print_generators_as_permutations_tex(
1432 ost <<
"The embedded stabilizer is the "
1433 "following group of order "
1434 << SG->group_order_as_lint()
1437 print_generators_tex(ost);
1440 ost <<
"The stabilizer is trivial.\\\\" << endl;
1461 ost <<
"line1=" << line1 <<
" line2=" << line2 <<
"\\\\" << endl;
1462 ost <<
"$$" << endl;
1463 ost <<
"\\ell_1 = " << endl;
1467 ost <<
"\\quad" << endl;
1468 ost <<
"\\ell_2 = " << endl;
1472 ost <<
"$$" << endl;
1473 ost <<
"The equation of the lifted surface is:" << endl;
1474 ost <<
"$$" << endl;
1476 ost <<
"$$" << endl;
1477 ost <<
"$$" << endl;
1478 lint_vec_print(ost, Flag + 13, 20);
1479 ost <<
"$$" << endl;
1481 downstep_secondary_orbit++;
1486 ost <<
"\\end{enumerate}" << endl;
1488 ost <<
"\\end{enumerate}" << endl;
1490 total_nb_orbits_on_partitions
1491 <<
" orbits on partitions.\\\\" << endl;
1502 int f_v = (verbose_level >= 1);
1504 int f_print_stabilizer_gens =
TRUE;
1511 cout <<
"surfaces_arc_lifting::report_surfaces_in_detail" << endl;
1526 cout <<
"stab order " << go1 << endl;
1532 cout <<
"orbit length " << ol << endl;
1548 ost <<
"}$ orbit length $";
1550 ost <<
"$\\\\" << endl;
1552 if (f_print_stabilizer_gens) {
1569 ost <<
"The automorphism group of the surface:\\\\" << endl;
1580 ost <<
"Coset Representatives in detail:\\\\" << endl;
1584 ost <<
"Coset Representatives HDS:\\\\" << endl;
1589 ost <<
"Coset Representatives T3:\\\\" << endl;
1602 cout <<
"surfaces_arc_lifting::report_surfaces_in_detail done" << endl;
1607static void callback_surfaces_arc_lifting_report(std::ostream &ost,
int i,
1610 int verbose_level = 0;
1623static void callback_surfaces_arc_lifting_free_trace_result(
void *ptr,
void *data,
int verbose_level)
1625 int f_v = (verbose_level >= 1);
1628 cout <<
"callback_surfaces_arc_lifting_free_trace_result" << endl;
1631 surfaces_arc_lifting_trace *T;
1634 T = (surfaces_arc_lifting_trace *) ptr;
1638 cout <<
"callback_surfaces_arc_lifting_free_trace_result done" << endl;
1642static void callback_surfaces_arc_lifting_latex_report_trace(std::ostream &ost,
void *
trace_result,
void *data,
int verbose_level)
1644 int f_v = (verbose_level >= 1);
1647 cout <<
"callback_surfaces_arc_lifting_latex_report_trace" << endl;
1649 surfaces_arc_lifting *SAL;
1650 surfaces_arc_lifting_trace *T;
1652 SAL = (surfaces_arc_lifting *) data;
1658 T->The_case.report_single_Clebsch_map(ost, verbose_level);
1663 surfaces_arc_lifting_definition_node *D;
1667 idx = SAL->Flag_orbits->Flag_orbit_node[T->f2].upstep_primary_orbit;
1670 D = (surfaces_arc_lifting_definition_node *) SAL->Surfaces->Orbit[idx].extra_data;
1673 T->The_case.report_Clebsch_map_details(ost, D->SO, verbose_level);
1675 T->report_product(ost, T->Elt_T3, verbose_level);
1678 cout <<
"callback_surfaces_arc_lifting_latex_report_trace done" << endl;
geometry::projective_space * P
ring_theory::homogeneous_polynomial_domain * Poly3_4
field_theory::finite_field * F
void print_basics(std::ostream &ost)
void do_arc_lifting_with_two_lines(long int *Arc6, int p1_idx, int p2_idx, int partition_rk, long int line1, long int line2, int *coeff20, long int *lines27, int verbose_level)
void print_equation_tex_lint(std::ostream &ost, long int *coeffs)
void print_tritangent_planes(std::ostream &ost)
void print_lines(std::ostream &ost)
surface_object_properties * SOP
a collection of combinatorial functions
void set_partition_4_into_2_unrank(int rk, int *v)
void PG_elements_embed(long int *set_in, long int *set_out, int sz, int old_length, int new_length, int *v)
void display_table_of_projective_points(std::ostream &ost, long int *Pts, int nb_pts, int len)
various functions related to geometries
void find_two_lines_for_arc_lifting(projective_space *P, long int P1, long int P2, long int &line1, long int &line2, int verbose_level)
void rearrange_arc_for_lifting(long int *Arc6, long int P1, long int P2, int partition_rk, long int *arc, int verbose_level)
void print_single_generator_matrix_tex(std::ostream &ost, long int a)
options for drawing an object of type layered_graph
a collection of functions related to file io
long int file_size(std::string &fname)
interface to create latex output files
void lint_set_print_tex_for_inline_text(std::ostream &ost, long int *v, int len)
void lint_set_print_tex(std::ostream &ost, long int *v, int len)
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 print_equation_with_line_breaks_tex_lint(std::ostream &ost, long int *coeffs, int nb_terms_per_line, const char *new_line_text)
domain to compute with objects of type longinteger
void integral_division_exact(longinteger_object &a, longinteger_object &b, longinteger_object &a_over_b)
a class to represent arbitrary precision integers
std::ostream & print_not_scientific(std::ostream &ost)
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)
void init_projective_group(int n, field_theory::finite_field *F, int f_semilinear, int f_basis, int f_init_sims, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
int is_semilinear_matrix_group()
void report_what_we_act_on(std::ostream &ost, graphics::layered_graph_draw_options *O, int verbose_level)
a set and its known set stabilizer
groups::strong_generators * Strong_gens
long int group_order_as_lint()
void print_set_tex(std::ostream &ost)
Schreier trees for orbits of groups on points.
strong_generators * stabilizer_orbit_rep(actions::action *default_action, ring_theory::longinteger_object &full_group_order, int orbit_idx, int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
void init(actions::action *A)
void print_generators_as_permutations_tex(std::ostream &ost, actions::action *A2)
void print_generators_tex()
void print_elements_latex_ost(std::ostream &ost)
long int group_order_as_lint()
void print_generators(std::ostream &ost)
void hyperplane_lifting_with_two_lines_fixed(strong_generators *SG_hyperplane, geometry::projective_space *P, int line1, int line2, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
a single step classification of combinatorial objects
long int * Rep_ith(int i)
ring_theory::longinteger_object go
void print_latex(std::ostream &ost, std::string &title, int f_print_stabilizer_gens, int f_has_print_function, void(*print_function)(std::ostream &ost, int i, classification_step *Step, void *print_function_data), void *print_function_data)
void init(flag_orbits *Flag_orbits, int flag_orbit_index, int downstep_primary_orbit, int downstep_secondary_orbit, int downstep_orbit_len, int f_long_orbit, long int *pt_representation, groups::strong_generators *Strong_gens, int verbose_level)
int downstep_primary_orbit
groups::strong_generators * gens
stores the set of flag orbits; related to the class classification_step
int find_node_by_po_so(int po, int so, int &idx, int verbose_level)
void(* func_latex_report_trace)(std::ostream &ost, void *trace_result, void *data, int verbose_level)
void init(actions::action *A, actions::action *A2, int nb_primary_orbits_lower, int pt_representation_sz, int nb_flag_orbits, int upper_bound_for_number_of_traces, void(*func_to_free_received_trace)(void *trace_result, void *data, int verbose_level), void(*func_latex_report_trace)(std::ostream &ost, void *trace_result, void *data, int verbose_level), void *free_received_trace_data, int verbose_level)
flag_orbit_node * Flag_orbit_node
void * free_received_trace_data
groups::strong_generators * gens
to control the behavior of the poset classification algorithm
to control the behavior of the poset classification report function
data_structures_groups::set_and_stabilizer * get_set_and_stabilizer(int level, int orbit_at_level, int verbose_level)
int nb_orbits_at_level(int level)
void report(std::ostream &ost, poset_classification_report_options *Opt, int verbose_level)
classification of cubic surfaces using lifted 6-arcs
surfaces_arc_lifting_definition_node * D
void init(surfaces_arc_lifting *Lift, int verbose_level)
orbits on pairs of points of a non-conical six-arc in PG(2,q)
int total_nb_orbits_on_partitions
poset_classification::poset_classification * Orbits_on_pairs
arc_partition * Table_orbits_on_partition
void init(surfaces_arc_lifting *SAL, int arc_idx, actions::action *A, int verbose_level)
flag orbit node which is a definition node and hence describes a surface
void report_cosets_detailed(std::ostream &ost, int verbose_level)
void report_cosets_HDS(std::ostream &ost, int verbose_level)
algebraic_geometry::surface_object * SO
void report_tally_F2(std::ostream &ost, int verbose_level)
void report_cosets_T3(std::ostream &ost, int verbose_level)
void report_Clebsch_maps(std::ostream &ost, int verbose_level)
cubic_surfaces_in_general::surface_object_with_action * SOA
void report(int verbose_level)
void cheat_sheet_basic(std::ostream &ost, int verbose_level)
int nb_orbits_on_partition
groups::schreier * Orbits_on_partition
invariant_relations::classification_step * Surfaces
int * flag_orbit_on_arcs_not_on_a_conic_idx
void init(cubic_surfaces_in_general::surface_with_action *Surf_A, poset_classification::poset_classification_control *Control_six_arcs, int f_test_nb_Eckardt_points, int nb_E, int verbose_level)
arc_orbits_on_pairs * Table_orbits_on_pairs
void report_flag_orbits_in_detail(std::ostream &ost, int verbose_level)
int * flag_orbit_on_partition_idx
six_arcs_not_on_a_conic * Six_arcs
void downstep_one_arc(int arc_idx, int &cur_flag_orbit, long int *Flag, int verbose_level)
groups::linear_group * LG4
algebraic_geometry::surface_domain * Surf
void downstep(int verbose_level)
void report2(std::ostream &ost, graphics::layered_graph_draw_options *draw_options, int verbose_level)
void report(graphics::layered_graph_draw_options *draw_options, int verbose_level)
void report_flag_orbits(std::ostream &ost, int verbose_level)
void report_surfaces_in_detail(std::ostream &ost, int verbose_level)
invariant_relations::flag_orbits * Flag_orbits
int * flag_orbit_on_pairs_idx
cubic_surfaces_in_general::surface_with_action * Surf_A
field_theory::finite_field * F
classification of six-arcs not on a conic in PG(2,q)
void init(apps_geometry::arc_generator_description *Descr, projective_geometry::projective_space_with_action *PA, int f_test_nb_Eckardt_points, int nb_E, int verbose_level)
apps_geometry::arc_generator * Gen
void report_latex(std::ostream &ost)
cubic surfaces in projective space with automorphism group
projective_geometry::projective_space_with_action * PA
algebraic_geometry::surface_domain * Surf
description of a classification problem of arcs in a geometry
poset_classification::poset_classification_control * Control
poset_classification::poset_classification * gen
projective_space_with_action * PA2
field_theory::finite_field * F
#define Lint_vec_copy(A, B, C)
#define Lint_vec_print(A, B, C)
#define NEW_OBJECTS(type, n)
#define Int_vec_copy_to_lint(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects