17namespace layer5_applications {
18namespace applications_in_algebraic_geometry {
19namespace cubic_surfaces_in_general {
140 int f_v = (verbose_level >= 1);
143 cout <<
"surface_object_with_action::init_equation" << endl;
154 cout <<
"surface_object_with_action::init_equation "
155 "before SO->init_equation" << endl;
159 cout <<
"surface_object_with_action::init_equation "
160 "after SO->init_equation" << endl;
165 cout <<
"surface_object_with_action::init_equation "
166 "the surface does not have 27 lines" << endl;
175 cout <<
"surface_object_with_action::init_equation "
176 "before compute_orbits_of_automorphism_group" << endl;
180 cout <<
"surface_object_with_action::init_equation "
181 "after compute_orbits_of_automorphism_group" << endl;
185 cout <<
"surface_object_with_action::init_equation done" << endl;
193 long int *Lines,
int nb_lines,
int *eqn,
195 int f_find_double_six_and_rearrange_lines,
200 int f_v = (verbose_level >= 1);
203 cout <<
"surface_object_with_action::init_with_group" << endl;
208 if (nb_lines == 27) {
210 cout <<
"surface_object_with_action::init_with_group "
211 "before SO->init_with_27_lines" << endl;
214 f_find_double_six_and_rearrange_lines, verbose_level);
216 cout <<
"surface_object_with_action::init_with_group "
217 "after SO->init_with_27_lines" << endl;
222 cout <<
"surface_object_with_action::init_with_group "
223 "before SO->init_equation" << endl;
228 cout <<
"surface_object_with_action::init_with_group "
229 "after SO->init_equation" << endl;
235 cout <<
"surface_object_with_action::init_with_group "
236 "before SO->init_with_surface_object" << endl;
246 cout <<
"surface_object_with_action::init_with_group "
247 "after SO->init_with_surface_object" << endl;
251 cout <<
"surface_object_with_action::init_with_group done" << endl;
264 int f_v = (verbose_level >= 1);
267 cout <<
"surface_object_with_action::init_with_surface_object" << endl;
280 cout <<
"surface_object_with_action::init_with_surface_object "
281 "testing Aut_gens" << endl;
286 cout <<
"surface_object_with_action::init_with_surface_object "
287 "testing Aut_gens done" << endl;
291 cout <<
"surface_object_with_action::init_with_surface_object "
292 "before compute_projectivity_group" << endl;
296 cout <<
"surface_object_with_action::init_with_surface_object "
297 "after compute_projectivity_group" << endl;
302 cout <<
"surface_object_with_action::init_with_surface_object "
303 "before compute_orbits_of_automorphism_group" << endl;
307 cout <<
"surface_object_with_action::init_with_surface_object "
308 "after compute_orbits_of_automorphism_group" << endl;
312 cout <<
"surface_object_with_action::init_with_surface_object done" << endl;
321 int f_v = (verbose_level >= 1);
324 cout <<
"surface_object_with_action::init_surface_object" << endl;
338 cout <<
"surface_object_with_action::init_surface_object "
339 "before compute_projectivity_group" << endl;
343 cout <<
"surface_object_with_action::init_surface_object "
344 "after compute_projectivity_group" << endl;
352 cout <<
"surface_object_with_action::init_surface_object "
353 "before compute_orbits_of_automorphism_group" << endl;
357 cout <<
"surface_object_with_action::init_surface_object "
358 "after compute_orbits_of_automorphism_group" << endl;
362 cout <<
"surface_object_with_action::init_surface_object "
370 int f_v = (verbose_level >= 1);
373 cout <<
"surface_object_with_action::compute_projectivity_group" << endl;
374 cout <<
"surface_object_with_action::compute_projectivity_group "
375 "verbose_level=" << verbose_level << endl;
385 cout <<
"surface_object_with_action::compute_projectivity_group "
386 "computing Sylow structure" << endl;
402 cout <<
"surface_object_with_action::compute_projectivity_group "
403 "before Syl->init" << endl;
408 cout <<
"surface_object_with_action::compute_projectivity_group "
409 "after Syl->init" << endl;
415 cout <<
"surface_object_with_action::compute_projectivity_group done" << endl;
422 int f_v = (verbose_level >= 1);
425 cout <<
"surface_object_with_action::compute_orbits_of_automorphism_group" << endl;
431 cout <<
"surface_object_with_action::compute_orbits_of_automorphism_group "
432 "orbits on points" << endl;
440 cout <<
"surface_object_with_action::compute_orbits_of_automorphism_group "
441 "orbits on Eckardt points" << endl;
449 cout <<
"surface_object_with_action::compute_orbits_of_automorphism_group "
450 "orbits on double points" << endl;
458 cout <<
"surface_object_with_action::compute_orbits_of_automorphism_group "
459 "orbits on lines" << endl;
470 cout <<
"surface_object_with_action::compute_orbits_of_automorphism_group "
471 "orbits on half double sixes" << endl;
479 cout <<
"surface_object_with_action::compute_orbits_of_automorphism_group "
480 "orbits on tritangent planes" << endl;
488 cout <<
"surface_object_with_action::compute_orbits_of_automorphism_group "
489 "orbits on Hesse planes" << endl;
497 cout <<
"surface_object_with_action::compute_orbits_of_automorphism_group "
498 "orbits on trihedral pairs" << endl;
508 cout <<
"surface_object_with_action::compute_orbits_of_automorphism_group "
509 "orbits on points not on lines" << endl;
515 cout <<
"surface_object_with_action::compute_orbits_of_automorphism_group done" << endl;
522 int f_v = (verbose_level >= 1);
525 cout <<
"surface_object_with_action::init_orbits_on_points" << endl;
529 cout <<
"surface_object_with_action action on points:" << endl;
534 cout <<
"surface_object_with_action action "
535 "on points done" << endl;
540 cout <<
"surface_object_with_action::init_orbits_on_points "
541 "computing orbits on points:" << endl;
545 cout <<
"surface_object_with_action::init_orbits_on_points "
546 "computing orbits on points using nice gens:" << endl;
554 cout <<
"surface_object_with_action::init_orbits_on_points "
555 "computing orbits on points using Aut_gens:" << endl;
561 cout <<
"surface_object_with_action::init_orbits_on_points "
563 <<
" orbits on points" << endl;
567 cout <<
"surface_object_with_action::init_orbits_on_points done" << endl;
574 int f_v = (verbose_level >= 1);
577 cout <<
"surface_object_with_action::init_orbits_on_Eckardt_points" << endl;
581 cout <<
"creating action on Eckardt points:" << endl;
586 cout <<
"creating action on Eckardt points done" << endl;
591 cout <<
"computing orbits on Eckardt points:" << endl;
595 cout <<
"surface_object_with_action::init_orbits_on_Eckardt_points "
596 "computing orbits on points using nice gens:" << endl;
607 <<
" orbits on Eckardt points" << endl;
611 cout <<
"surface_object_with_action::init_orbits_on_Eckardt_points done" << endl;
618 int f_v = (verbose_level >= 1);
621 cout <<
"surface_object_with_action::init_orbits_on_Double_points" << endl;
625 cout <<
"creating action on Double points:" << endl;
631 cout <<
"creating action on Double points done" << endl;
636 cout <<
"computing orbits on Double points:" << endl;
648 <<
" orbits on Double points" << endl;
652 cout <<
"surface_object_with_action::init_orbits_on_Double_points done" << endl;
659 int f_v = (verbose_level >= 1);
662 cout <<
"surface_object_with_action::init_orbits_on_lines" << endl;
666 cout <<
"creating restricted action "
667 "on the lines:" << endl;
672 cout <<
"creating restricted action "
673 "on the lines done" << endl;
677 cout <<
"computing orbits on lines:" << endl;
689 <<
" orbits on lines" << endl;
693 cout <<
"surface_object_with_action::init_orbits_on_lines done" << endl;
700 int f_v = (verbose_level >= 1);
703 cout <<
"surface_object_with_action::init_orbits_on_half_double_sixes" << endl;
707 cout <<
"creating action on half double sixes:" << endl;
712 cout <<
"creating action on half double sixes done" << endl;
717 cout <<
"computing orbits on single sixes:" << endl;
728 cout <<
"computing orbits on single sixes done" << endl;
732 <<
" orbits on single sixes" << endl;
738 cout <<
"surface_object_with_action::init_orbits_on_half_double_sixes done" << endl;
745 int f_v = (verbose_level >= 1);
748 cout <<
"surface_object_with_action::init_orbits_on_tritangent_planes" << endl;
752 cout <<
"creating action on tritangent planes:" << endl;
753 cout <<
"SO->SOP->nb_tritangent_planes = "
762 cout <<
"action on tritangent planes done" << endl;
776 <<
" tritangent planes" << endl;
782 cout <<
"surface_object_with_action::init_orbits_on_tritangent_planes done" << endl;
789 int f_v = (verbose_level >= 1);
792 cout <<
"surface_object_with_action::init_orbits_on_Hesse_planes" << endl;
796 cout <<
"creating action on Hesse planes:" << endl;
797 cout <<
"SO->SOP->nb_Hesse_planes = "
803 cout <<
"action on Hesse planes done" << endl;
817 <<
" Hesse planes" << endl;
823 cout <<
"surface_object_with_action::init_orbits_on_Hesse_planes done" << endl;
830 int f_v = (verbose_level >= 1);
833 cout <<
"surface_object_with_action::init_orbits_on_trihedral_pairs" << endl;
837 cout <<
"creating action on trihedral pairs:" << endl;
845 cout <<
"action on trihedral pairs created" << endl;
858 <<
" orbits on trihedral pairs" << endl;
864 cout <<
"surface_object_with_action::init_orbits_on_trihedral_pairs done" << endl;
871 int f_v = (verbose_level >= 1);
874 cout <<
"surface_object_with_action::init_orbits_on_points_not_on_lines" << endl;
878 cout <<
"creating action on points not on lines:" << endl;
884 cout <<
"creating action on points not on lines done" << endl;
899 <<
" orbits on points not on lines" << endl;
905 cout <<
"surface_object_with_action::init_orbits_on_points_not_on_lines done" << endl;
915 int f_v = (verbose_level >= 1);
918 cout <<
"surface_object_with_action::print_generators_on_lines" << endl;
934 int f_v = (verbose_level >= 1);
937 cout <<
"surface_object_with_action::print_elements_on_lines" << endl;
950 int f_print_orbits, std::string &fname_mask,
959 ost <<
"\\section*{Orbits of the automorphism group}" << endl;
960 ost <<
"The automorphism group has order " << go << endl;
961 ost <<
"\\bigskip" << endl;
962 ost <<
"\\subsection*{Orbits on points}" << endl;
969 ost <<
"\\subsection*{Orbits on Eckardt points}" << endl;
971 if (f_print_orbits) {
973 string my_fname_mask;
975 my_fname_mask.assign(fname_mask);
976 my_fname_mask.append(
"_Eckardt_points");
988 ost <<
"\\subsection*{Orbits on Double points}" << endl;
991 ost <<
"\\subsection*{Orbits on points not on lines}" << endl;
998 ost <<
"\\subsection*{Orbits on lines}" << endl;
1000 if (f_print_orbits) {
1002 string my_fname_mask;
1004 my_fname_mask.assign(fname_mask);
1005 my_fname_mask.append(
"_on_lines");
1013 ost <<
"\\bigskip" << endl;
1017 ost <<
"\\bigskip" << endl;
1021 int i, action *default_action,
1022 strong_generators *gens, std::ostream &ost);
1029 int block_width = 10;
1034 ost <<
"\\subsection*{Decomposition scheme of line intersection graph}" << endl;
1035 ost <<
"Decomposition scheme of line intersection graph:" << endl;
1037 Decomp_scheme, nb, nb, block_width);
1042 ost <<
"\\subsection*{Orbits on single sixes}" << endl;
1045 if (f_print_orbits) {
1048 string my_fname_mask;
1050 my_fname_mask.assign(fname_mask);
1051 my_fname_mask.append(
"_single_sixes");
1059 ost <<
"\\subsection*{Orbits on tritangent planes}" << endl;
1061 if (f_print_orbits) {
1063 string my_fname_mask;
1065 my_fname_mask.assign(fname_mask);
1066 my_fname_mask.append(
"_tritangent_planes");
1073 ost <<
"\\subsection*{Orbits on Hesse planes}" << endl;
1075 if (f_print_orbits) {
1077 string my_fname_mask;
1079 my_fname_mask.assign(fname_mask);
1080 my_fname_mask.append(
"_Hesse_planes");
1090 ost <<
"\\subsection*{Orbits on trihedral pairs}" << endl;
1095 ost <<
"\\clearpage" << endl;
1101 int f_v = (verbose_level >= 1);
1106 cout <<
"surface_object_with_action::cheat_sheet_basic" << endl;
1112 ost <<
"The automorphism group has order "
1113 << ago <<
"\\\\" << endl;
1114 ost <<
"The automorphism group is generated by:\\\\" << endl;
1116 cout <<
"surface_object_with_action::cheat_sheet_basic "
1118 "print_generators_tex" << endl;
1124 ost <<
"The stabilizer is generated by the following nice generators:\\\\" << endl;
1129 ost <<
"Orbits on Eckardt points:\\\\" << endl;
1132 ost <<
"\\bigskip" << endl;
1135 ost <<
"Orbits on half double-sixes:\\\\" << endl;
1144 <<
" consists of the following half double sixes:" << endl;
1147 ost <<
"$$" << endl;
1152 ost <<
"$$" << endl;
1156 ost <<
"orbit rep:" << endl;
1157 ost <<
"$$" << endl;
1159 ost <<
"$$" << endl;
1164 ost <<
"\\bigskip" << endl;
1167 cout <<
"surface_object_with_action::cheat_sheet_basic done" << endl;
1172 std::string &label_txt,
1173 std::string &label_tex,
1174 int f_print_orbits, std::string &fname_mask,
1178 int f_v = (verbose_level >= 1);
1182 cout <<
"surface_object_with_action::cheat_sheet" << endl;
1183 cout <<
"surface_object_with_action::cheat_sheet verbose_level = " << verbose_level << endl;
1187 cout <<
"surface_object_with_action::cheat_sheet "
1188 "before SO->print_equation" << endl;
1192 cout <<
"surface_object_with_action::cheat_sheet "
1193 "after SO->print_equation" << endl;
1199 ost <<
"The automorphism group has order "
1200 << ago <<
"\\\\" << endl;
1206 cout <<
"surface_object_with_action::cheat_sheet "
1207 "before SO->print_everything" << endl;
1213 cout <<
"surface_object_with_action::cheat_sheet "
1214 "after SO->print_everything" << endl;
1222 cout <<
"surface_object_with_action::cheat_sheet "
1223 "before print_automorphism_group" << endl;
1229 if (
SO->nb_pts_not_on_lines) {
1232 cout <<
"surface_object_with_action::cheat_sheet "
1233 "before cheat_sheet_quartic_curve" << endl;
1235 cheat_sheet_quartic_curve(ost,
1236 label_txt, label_tex, verbose_level);
1238 cout <<
"surface_object_with_action::cheat_sheet "
1239 "after cheat_sheet_quartic_curve" << endl;
1245 ost <<
"\\clearpage\\subsection*{The Elements of "
1246 "the Automorphism Group}" << endl;
1249 ost <<
"\\clearpage\\subsection*{The Group Table}" << endl;
1251 int block_width = 24;
1259 Table, go, go, block_width);
1263 ost <<
"Too big to print." << endl;
1282 cout <<
"permutation degree is too large, "
1283 "skipping export to magma and GAP" << endl;
1288 cout <<
"surface_object_with_action::cheat_sheet done" << endl;
1296 int f_v = (verbose_level >= 1);
1300 cout <<
"surface_object_with_action::print_automorphism_group_gnerators" << endl;
1305 cout <<
"surface_object_with_action::print_automorphism_group_gnerators "
1306 "the automorphism group is not available" << endl;
1310 ost <<
"The automorphism group is generated by:\\\\" << endl;
1312 cout <<
"surface_object_with_action::cheat_sheet "
1313 "before Aut_gens->print_generators_tex" << endl;
1318 cout <<
"surface_object_with_action::cheat_sheet "
1319 "before Aut_gens->print_generators_in_different_action_tex" << endl;
1326 ost <<
"The stabilizer is generated by the following nice generators:\\\\" << endl;
1334 cout <<
"surface_object_with_action::cheat_sheet "
1335 "projectivity stabilizer" << endl;
1339 ost <<
"The projectivity group has order "
1340 << go <<
"\\\\" << endl;
1341 ost <<
"The projectivity group is generated by:\\\\" << endl;
1343 cout <<
"surface_object_with_action::cheat_sheet "
1344 "before projectivity_group_gens->"
1345 "print_generators_tex" << endl;
1351 ost <<
"The projectivity group in the action on the lines:\\\\" << endl;
1358 ost <<
"The elements of the projectivity group "
1359 "in the action on the lines:\\\\" << endl;
1368 label_group.assign(
"label_txt_proj_grp");
1374 label_group.assign(
"label_txt_proj_grp_on_lines");
1380 label_group.assign(
"label_txt_proj_grp_on_tritangent_planes");
1392 cout <<
"surface_object_with_action::cheat_sheet "
1393 "Sylow subgroups" << endl;
1399 cout <<
"surface_object_with_action::cheat_sheet "
1403 <<
"-Sylow subgroup is generated by:\\\\" << endl;
1408 cout <<
"surface_object_with_action::cheat_sheet "
1409 "idx=" << idx <<
" / " <<
Syl->
nb_primes <<
" making label_group" << endl;
1416 label_group.assign(
"label_txt_proj_grp_syl_");
1418 label_group.append(str);
1421 cout <<
"surface_object_with_action::cheat_sheet "
1422 "idx=" << idx <<
" / " <<
Syl->
nb_primes <<
" label_group=" << label_group << endl;
1426 cout <<
"surface_object_with_action::cheat_sheet "
1427 "idx=" << idx <<
" / " <<
Syl->
nb_primes <<
" before export_group_and_copy_to_latex" << endl;
1435 label_group.assign(
"label_txt_proj_grp_syl_");
1437 label_group.append(str);
1438 label_group.append(
"_on_lines");
1441 cout <<
"surface_object_with_action::cheat_sheet "
1442 "idx=" << idx <<
" / " <<
Syl->
nb_primes <<
" label_group=" << label_group << endl;
1446 cout <<
"surface_object_with_action::cheat_sheet "
1447 "idx=" << idx <<
" / " <<
Syl->
nb_primes <<
" before export_group_and_copy_to_latex" << endl;
1468 int f_v = (verbose_level >= 1);
1472 cout <<
"surface_object_with_action::investigate_surface_and_write_report" << endl;
1481 fname.assign(
"surface_");
1482 fname.append(SC->
prefix);
1483 fname.append(
"_with_group.tex");
1486 label.assign(
"surface_");
1489 label_tex.assign(
"surface_");
1492 fname_mask.assign(
"surface_");
1493 fname_mask.append(SC->
prefix);
1494 fname_mask.append(
"_orbit_%d");
1518 cout <<
"Written file " << fname <<
" of size "
1533 std::string &fname_mask,
1535 std::string &label_tex,
1538 int f_v = (verbose_level >= 1);
1541 cout <<
"surface_object_with_action::investigate_surface_and_write_report2" << endl;
1546 cout <<
"surface_object_with_action::investigate_surface_and_write_report2 before cheat_sheet" << endl;
1548 ost <<
"\\section{The Cubic Surface " << SC->
label_tex <<
" over $\\mathbb F_{" << SC->
F->
q <<
"}$}" << endl;
1558 cout <<
"surface_object_with_action::investigate_surface_and_write_report2 after cheat_sheet" << endl;
1563 ost <<
"\\bigskip" << endl;
1565 ost <<
"\\section{The Finite Field $\\mathbb F_{" << SC->
F->
q <<
"}$}" << endl;
1572 ost <<
"\\setlength{\\parindent}{0pt}" << endl;
1575 if (f_surface_clebsch) {
1578 cout <<
"surface_object_with_action::investigate_surface_and_write_report2 f_surface_clebsch" << endl;
1585 ost <<
"\\bigskip" << endl;
1587 ost <<
"\\section{Points on the surface}" << endl;
1594 ost <<
"\\bigskip" << endl;
1597 ost <<
"\\section{Clebsch maps}" << endl;
1603 ost <<
"\\clearpage" << endl;
1608 ost <<
"\\section{Six-arcs not on a conic}" << endl;
1621 cout <<
"surface_object_with_action::investigate_surface_and_write_report2 !f_surface_clebsch" << endl;
1628 if (f_surface_quartic) {
1631 cout <<
"surface_object_with_action::investigate_surface_and_write_report2 f_surface_quartic" << endl;
1635 ofstream ost_quartics(
"quartics.txt");
1645 cout <<
"surface_object_with_action::investigate_surface_and_write_report2 !f_surface_quartic" << endl;
1654 if (f_surface_codes) {
1657 cout <<
"surface_object_with_action::investigate_surface_and_write_report2 f_surface_codes" << endl;
1660 homogeneous_polynomial_domain *HPD;
1662 HPD =
NEW_OBJECT(homogeneous_polynomial_domain);
1664 HPD->init(SC->
F, 3, 2 ,
1672 A_on_poly->induced_action_on_homogeneous_polynomials(A,
1677 cout <<
"created action A_on_poly" << endl;
1678 A_on_poly->print_info();
1681 longinteger_object full_go;
1686 cout <<
"computing orbits:" << endl;
1693 orbit_transversal *T;
1698 cout <<
"before T->init_from_schreier" << endl;
1700 T->init_from_schreier(
1706 cout <<
"after T->init_from_schreier" << endl;
1708 Sch->print_orbit_reps(cout);
1710 cout <<
"orbit reps:" << endl;
1712 ost <<
"\\section{Orbits on conics}" << endl;
1715 T->print_table_latex(
1718 HPD_callback_print_function2,
1721 HPD_callback_print_function,
1729 cout <<
"surface_object_with_action::investigate_surface_and_write_report2 !f_surface_codes" << endl;
1739 cout <<
"surface_object_with_action::investigate_surface_and_write_report2 done" << endl;
1744 std::string &surface_prefix,
1746 std::ostream &ost_quartics,
1749 int f_v = (verbose_level >= 1);
1754 cout <<
"surface_object_with_action::all_quartic_curves surface_prefix=" << surface_prefix << endl;
1763 ost <<
"\\section{Quartic curve associated with orbit " << pt_orbit
1771 QC->
init(
this, verbose_level);
1775 cout <<
"surface_object_with_action::all_quartic_curves before QC->quartic" << endl;
1777 QC->
quartic(surface_prefix, pt_orbit, f_TDO, verbose_level);
1779 cout <<
"surface_object_with_action::all_quartic_curves after QC->quartic" << endl;
1786 cout <<
"surface_object_with_action::all_quartic_curves before QC->compute_stabilizer" << endl;
1790 cout <<
"surface_object_with_action::all_quartic_curves after QC->compute_stabilizer" << endl;
1795 cout <<
"surface_object_with_action::all_quartic_curves before QC->cheat_sheet_quartic_curve" << endl;
1799 cout <<
"surface_object_with_action::all_quartic_curves after QC->cheat_sheet_quartic_curve" << endl;
1805 cout <<
"surface_object_with_action::all_quartic_curves done" << endl;
1810 std::string &surface_prefix,
1811 std::ostream &ost_quartics_csv,
1814 int f_v = (verbose_level >= 1);
1818 cout <<
"surface_object_with_action::export_all_quartic_curves surface_prefix=" << surface_prefix << endl;
1822 ost_quartics_csv <<
"orbit,curve,pts_on_curve,bitangents,go" << endl;
1825 cout <<
"Quartic curve associated with surface " << surface_prefix
1826 <<
" and with orbit " << pt_orbit
1834 QC->
init(
this, verbose_level);
1838 cout <<
"surface_object_with_action::export_all_quartic_curves before QC->quartic" << endl;
1840 QC->
quartic(surface_prefix, pt_orbit, f_TDO, verbose_level);
1842 cout <<
"surface_object_with_action::export_all_quartic_curves after QC->quartic" << endl;
1851 cout <<
"surface_object_with_action::export_all_quartic_curves before QC->compute_stabilizer" << endl;
1855 cout <<
"surface_object_with_action::export_all_quartic_curves after QC->compute_stabilizer" << endl;
1860 ost_quartics_csv << pt_orbit;
1869 if (i < Surf->Poly4_x123->get_nb_monomials() - 1) {
1873 ost_quartics_csv <<
",\"" << s.str() <<
"\"";
1879 for (i = 0; i < QC->
sz_curve; i++) {
1881 if (i < QC->sz_curve - 1) {
1885 ost_quartics_csv <<
",\"" << s.str() <<
"\"";
1892 if (i < QC->nb_bitangents - 1) {
1896 ost_quartics_csv <<
",\"" << s.str() <<
"\"";
1902 ost_quartics_csv <<
"," << -1;
1905 ost_quartics_csv << endl;
1909 ost_quartics_csv <<
"END" << endl;
1911 cout <<
"surface_object_with_action::export_all_quartic_curves done" << endl;
1917 int f_v = (verbose_level >= 1);
1918 int i, f, P_idx, P_idx_local;
1922 cout <<
"surface_object_with_action::print_full_del_Pezzo" << endl;
1928 ost <<
"Full del Pezzo surfaces:\\\\" << endl;
1931 ost <<
"$$" << endl;
1932 ost <<
"\\begin{array}{|c|c|c|c|c|}" << endl;
1938 cout <<
"surface_object_with_action::print_full_del_Pezzo could not find point" << endl;
1941 ost << i <<
" & " << P_idx <<
" & " << P <<
" & ";
1952 if (!f_deleted[j]) {
1965 ost <<
" \\mbox{is full}\\\\" << endl;
1968 ost <<
" \\mbox{is not full}\\\\" << endl;
1976 ost <<
"\\end{array}" << endl;
1977 ost <<
"$$" << endl;
1980 cout <<
"surface_object_with_action::print_full_del_Pezzo done" << endl;
void latex_table_of_Schlaefli_labeling_of_lines(std::ostream &ost)
void latex_table_of_clebsch_maps(std::ostream &ost)
long int * Lines_in_tritangent_planes
long int * Trihedral_to_Eckardt
void latex_half_double_six(std::ostream &ost, int idx)
ring_theory::homogeneous_polynomial_domain * Poly4_x123
field_theory::finite_field * F
void compute_reduced_set_of_points_not_on_lines_wrt_P(int P_idx, int *&f_deleted, int verbose_level)
long int * Pts_not_on_lines
void print_affine_points_in_source_code(std::ostream &ost)
int test_full_del_pezzo(int P_idx, int *f_deleted, int verbose_level)
void print_equation(std::ostream &ost)
void print_everything(std::ostream &ost, int verbose_level)
long int * Eckardt_points
int * Adj_line_intersection_graph
a particular cubic surface in PG(3,q), given by its equation
void init_equation(surface_domain *Surf, int *eqn, int verbose_level)
surface_object_properties * SOP
void init_with_27_lines(surface_domain *Surf, long int *Lines27, int *eqn, int f_find_double_six_and_rearrange_lines, int verbose_level)
int find_point(long int P, int &idx)
void cheat_sheet(std::ostream &f, int verbose_level)
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 head_easy(std::ostream &ost)
void print_integer_matrix_tex_block_by_block(std::ostream &ost, int *p, int m, int n, int block_width)
void int_set_print_tex(std::ostream &ost, int *v, int len)
void foot(std::ostream &ost)
a class to represent arbitrary precision integers
a permutation group in a fixed action.
void compute_projectivity_subgroup(groups::strong_generators *&projectivity_gens, groups::strong_generators *Aut_gens, int verbose_level)
action * restricted_action(long int *points, int nb_points, int verbose_level)
action * create_induced_action_on_sets(int nb_sets, int set_size, long int *sets, int verbose_level)
groups::strong_generators * Strong_gens
void group_order(ring_theory::longinteger_object &go)
to hold a vector of group elements
groups::schreier * orbits_on_points_schreier(actions::action *A_given, int verbose_level)
void print_tex(std::ostream &ost)
void get_orbit_decomposition_scheme_of_graph(int *Adj, int n, int *&Decomp_scheme, int verbose_level)
void print_and_list_orbits(std::ostream &ost)
void print_and_list_all_orbits_and_stabilizers_with_list_of_elements_tex(std::ostream &ost, actions::action *default_action, strong_generators *gens, int verbose_level)
void print_and_list_orbits_with_original_labels_tex(std::ostream &ost)
void print_and_list_orbit_and_stabilizer_with_list_of_elements_tex(int i, actions::action *default_action, strong_generators *gens, std::ostream &ost)
void make_orbit_trees(std::ostream &ost, std::string &fname_mask, graphics::layered_graph_draw_options *Opt, int verbose_level)
void print_and_list_orbits_sorted_by_length_tex(std::ostream &ost)
void print_and_list_orbits_tex(std::ostream &ost)
a permutation group represented via a stabilizer chain
a strong generating set for a permutation group with respect to a fixed action
void create_group_table(int *&Table, long int &go, int verbose_level)
void export_group_and_copy_to_latex(std::string &label_txt, std::ostream &ost, actions::action *A2, int verbose_level)
void test_if_set_is_invariant_under_given_action(actions::action *A_given, long int *set, int set_sz, int verbose_level)
void print_elements_latex_ost_with_print_point_function(actions::action *A, std::ostream &ost, void(*point_label)(std::stringstream &sstr, long int pt, void *data), void *point_label_data)
sims * create_sims(int verbose_level)
void print_generators_tex()
void print_elements_latex_ost(std::ostream &ost)
void print_generators_tex_with_print_point_function(actions::action *A, std::ostream &ost, void(*point_label)(std::stringstream &sstr, long int pt, void *data), void *point_label_data)
long int group_order_as_lint()
schreier * orbits_on_points_schreier(actions::action *A_given, int verbose_level)
void print_generators_in_different_action_tex(std::ostream &ost, actions::action *A2)
void group_order(ring_theory::longinteger_object &go)
The Sylow structure of a finite group.
void init(sims *S, int verbose_level)
field_theory::finite_field * F
void init_orbits_on_half_double_sixes(int verbose_level)
groups::schreier * Orbits_on_lines
void init_equation(surface_with_action *Surf_A, int *eqn, groups::strong_generators *Aut_gens, int verbose_level)
groups::sylow_structure * Syl
void print_full_del_Pezzo(std::ostream &ost, int verbose_level)
actions::action * A_on_the_lines
void init_orbits_on_trihedral_pairs(int verbose_level)
void cheat_sheet(std::ostream &ost, std::string &label_txt, std::string &label_tex, int f_print_orbits, std::string &fname_mask, graphics::layered_graph_draw_options *Opt, int verbose_level)
void init_orbits_on_Hesse_planes(int verbose_level)
void print_automorphism_group(std::ostream &ost, int f_print_orbits, std::string &fname_mask, graphics::layered_graph_draw_options *Opt, int verbose_level)
actions::action * A_on_pts_not_on_lines
void init_with_group(surface_with_action *Surf_A, long int *Lines, int nb_lines, int *eqn, groups::strong_generators *Aut_gens, int f_find_double_six_and_rearrange_lines, int f_has_nice_gens, data_structures_groups::vector_ge *nice_gens, int verbose_level)
void cheat_sheet_basic(std::ostream &ost, int verbose_level)
void init_orbits_on_Double_points(int verbose_level)
groups::schreier * Orbits_on_single_sixes
groups::schreier * Orbits_on_trihedral_pairs
groups::schreier * Orbits_on_Eckardt_points
void init_with_surface_object(surface_with_action *Surf_A, algebraic_geometry::surface_object *SO, groups::strong_generators *Aut_gens, int f_has_nice_gens, data_structures_groups::vector_ge *nice_gens, int verbose_level)
actions::action * A_on_trihedral_pairs
actions::action * A_on_Double_points
data_structures_groups::vector_ge * nice_gens
void init_orbits_on_Eckardt_points(int verbose_level)
actions::action * A_on_tritangent_planes
void init_orbits_on_tritangent_planes(int verbose_level)
void investigate_surface_and_write_report(graphics::layered_graph_draw_options *Opt, actions::action *A, surface_create *SC, cubic_surfaces_and_arcs::six_arcs_not_on_a_conic *Six_arcs, int verbose_level)
void print_elements_on_lines(std::ostream &ost, groups::strong_generators *Aut_gens, int verbose_level)
actions::action * A_on_points
surface_with_action * Surf_A
algebraic_geometry::surface_object * SO
~surface_object_with_action()
void init_orbits_on_lines(int verbose_level)
void all_quartic_curves(std::string &surface_prefix, std::ostream &ost, std::ostream &ost_quartics, int verbose_level)
void init_surface_object(surface_with_action *Surf_A, algebraic_geometry::surface_object *SO, groups::strong_generators *Aut_gens, int verbose_level)
surface_object_with_action()
groups::strong_generators * projectivity_group_gens
void print_generators_on_lines(std::ostream &ost, groups::strong_generators *Aut_gens, int verbose_level)
actions::action * A_on_Eckardt_points
void export_all_quartic_curves(std::string &surface_prefix, std::ostream &ost_quartics_csv, int verbose_level)
groups::schreier * Orbits_on_tritangent_planes
groups::schreier * Orbits_on_Hesse_planes
void investigate_surface_and_write_report2(std::ostream &ost, graphics::layered_graph_draw_options *Opt, actions::action *A, surface_create *SC, cubic_surfaces_and_arcs::six_arcs_not_on_a_conic *Six_arcs, std::string &fname_mask, std::string &label, std::string &label_tex, int verbose_level)
void init_orbits_on_points(int verbose_level)
groups::schreier * Orbits_on_points_not_on_lines
groups::strong_generators * Aut_gens
actions::action * A_single_sixes
void print_automorphism_group_gnerators(std::ostream &ost, int verbose_level)
groups::schreier * Orbits_on_points
void init_orbits_on_points_not_on_lines(int verbose_level)
algebraic_geometry::surface_domain * Surf
void compute_orbits_of_automorphism_group(int verbose_level)
void compute_projectivity_group(int verbose_level)
groups::schreier * Orbits_on_Double_points
actions::action * A_on_Hesse_planes
classification of six-arcs not on a conic in PG(2,q)
void report_latex(std::ostream &ost)
cubic surfaces in projective space with automorphism group
actions::action * A_on_planes
algebraic_geometry::surface_domain * Surf
to create a cubic surface from a description using class surface_create_description
algebraic_geometry::surface_domain * Surf
field_theory::finite_field * F
construction of a quartic curve from a cubic surface by means of projecting the intersection with the...
void quartic(std::string &surface_prefix, int pt_orbit, int f_TDO, int verbose_level)
void compute_stabilizer(int verbose_level)
void init(cubic_surfaces_in_general::surface_object_with_action *SOA, int verbose_level)
void cheat_sheet_quartic_curve(std::string &surface_prefix, std::ostream &ost, std::ostream &ost_curves, int f_TDO, int verbose_level)
void callback_surface_domain_sstr_line_label(std::stringstream &sstr, long int pt, void *data)
the orbiter library for the classification of combinatorial objects