16namespace layer5_applications {
17namespace applications_in_algebraic_geometry {
18namespace cubic_surfaces_and_arcs {
58 int f_v = (verbose_level >= 1);
61 cout <<
"surface_create_by_arc_lifting::init" << endl;
76 snprintf(str, 1000,
"Arc%d",
arc_idx);
82 cout <<
"surface_create_by_arc_lifting::init extending arc "
97 cout <<
"surface_create_by_arc_lifting::init extending arc "
108 cout <<
"surface_create_by_arc_lifting::init "
109 "before AL->create_surface_and_group" << endl;
113 cout <<
"surface_create_by_arc_lifting::init "
114 "after AL->create_surface_and_group" << endl;
120 magma_fname.assign(
"surface_q");
122 magma_fname.append(str);
123 magma_fname.append(
"_iso");
125 magma_fname.append(
"_group.magma");
131 cout <<
"written file " << magma_fname <<
" of size "
146 cout <<
"surface_create_by_arc_lifting::init "
147 "before SOA->init_with_27_lines" << endl;
157 cout <<
"surface_create_by_arc_lifting::init "
158 "after SOA->init_with_27_lines" << endl;
166 cout <<
"The automorphism group of the surface has order "
167 << ago <<
"\\\\" << endl;
183 cout <<
"surface_create_by_arc_lifting::init "
184 "arc " <<
arc_label <<
" yields a surface with "
185 <<
AL->
Web->
E->
nb_E <<
" Eckardt points and a stabilizer "
186 "of order " << go <<
" with "
188 <<
" orbits on single sixes" << endl;
198 cout <<
"surface_create_by_arc_lifting::init "
199 "performing isomorph rejection" << endl;
208 cout <<
"surface_create_by_arc_lifting::init "
215 Six_arcs->Gen->gen->identify(Arc, 6, transporter,
222 if (!Sorting.int_vec_search(Six_arcs->Not_on_conic_idx,
223 Six_arcs->nb_arcs_not_on_conic, orbit_at_level, idx)) {
224 cout <<
"could not find orbit" << endl;
238 cout <<
"arc " <<
arc_label <<
" yields a surface with "
240 <<
" Eckardt points and a stabilizer of order "
243 <<
" orbits on single sixes";
244 cout <<
" orbit " << orbit_idx <<
" yields an arc which "
255 cout <<
"surface_create_by_arc_lifting::init done" << endl;
262 int f_v = (verbose_level >= 1);
265 cout <<
"surface_create_by_arc_lifting::report_summary" << endl;
273 ost <<
"The equation of the surface is" << endl;
276 cout <<
"surface_create_by_arc_lifting::report_summary "
277 "before AL->report_equation" << endl;
281 cout <<
"surface_create_by_arc_lifting::report_summary "
282 "after AL->report_equation" << endl;
286 ost <<
"Extension of arc " <<
arc_idx
292 ost <<
"arc " <<
arc_idx <<
" yields a surface with "
293 <<
AL->
Web->
E->
nb_E <<
" Eckardt points and a "
294 "stabilizer of order " << ago <<
" with "
296 <<
" orbits on single sixes\\\\" << endl;
300 cout <<
"surface_create_by_arc_lifting::report_summary "
301 "before SOA->SO->print_Eckardt_points" << endl;
305 cout <<
"surface_create_by_arc_lifting::report_summary "
306 "after SOA->SO->print_Eckardt_points" << endl;
316 int f_v = (verbose_level >= 1);
319 cout <<
"surface_create_by_arc_lifting::report" << endl;
326 ost <<
"The equation of the surface is" << endl;
329 cout <<
"surface_create_by_arc_lifting::report "
330 "before AL->report_equation" << endl;
334 cout <<
"surface_create_by_arc_lifting::report "
335 "after AL->report_equation" << endl;
339 ost <<
"Extension of arc " <<
arc_idx
345 ost <<
"arc " <<
arc_idx <<
" yields a surface with "
346 <<
AL->
Web->
E->
nb_E <<
" Eckardt points and a "
347 "stabilizer of order " << ago <<
" with "
349 <<
" orbits on single sixes\\\\" << endl;
353 set_and_stabilizer *The_arc;
361 ost <<
"Arc " <<
arc_idx <<
" / "
365 The_arc->print_set_tex(ost);
368 SCA->
Surf_A->F->display_table_of_projective_points(ost,
369 The_arc->data, 6, 3);
372 ost <<
"The arc-stabilizer is the following group:\\\\" << endl;
373 The_arc->Strong_gens->print_generators_tex(ost);
385 cout <<
"surface_create_by_arc_lifting::report "
386 "before report_properties_simple" << endl;
390 cout <<
"surface_create_by_arc_lifting::report "
391 "after report_properties_simple" << endl;
395 ost <<
"The nine lines in the selected trihedral pair are:" << endl;
405 cout <<
"surface_create_by_arc_lifting::report "
406 "before SOA->print_automorphism_group" << endl;
412 fname_mask.assign(
"orbit_half_double_sixes_q");
414 fname_mask.append(str);
415 fname_mask.append(
"_iso_");
417 fname_mask.append(str);
418 fname_mask.append(
"_%d");
425 ost <<
"arc " <<
arc_label <<
" yields a surface with "
426 <<
AL->
Web->
E->
nb_E <<
" Eckardt points and a "
427 "stabilizer of order " << ago <<
" with "
429 <<
" orbits on single sixes\\\\" << endl;
436 cout <<
"arc " <<
arc_label <<
" yields a surface with "
438 <<
" Eckardt points and a stabilizer of order "
441 <<
" orbits on single sixes \\\\" << endl;
442 cout <<
" orbit " << orbit_idx <<
" yields an arc which is "
443 "isomorphic to arc " <<
Other_arc_idx[orbit_idx] <<
"\\\\" << endl;
453 cout <<
"surface_create_by_arc_lifting::report done" << endl;
void report_properties_simple(std::ostream &ost, int verbose_level)
void print_Eckardt_points(std::ostream &ost)
surface_object_properties * SOP
void identify_lines(long int *lines, int nb_lines, int *line_idx, int verbose_level)
void print_nine_lines_latex(std::ostream &ost, long int *nine_lines, int *nine_lines_idx)
options for drawing an object of type layered_graph
a collection of functions related to file io
long int file_size(std::string &fname)
a class to represent arbitrary precision integers
void export_permutation_group_to_magma(std::string &fname, actions::action *A2, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
data_structures_groups::set_and_stabilizer * get_set_and_stabilizer(int level, int orbit_at_level, int verbose_level)
void get_set_by_level(int level, int node, long int *set)
an instance of a cubic surface together with its stabilizer
void print_automorphism_group(std::ostream &ost, int f_print_orbits, std::string &fname_mask, graphics::layered_graph_draw_options *Opt, int verbose_level)
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)
groups::schreier * Orbits_on_single_sixes
algebraic_geometry::surface_object * SO
cubic_surfaces_in_general::surface_clebsch_map * Clebsch
std::string arc_label_short
void report(std::ostream &ost, graphics::layered_graph_draw_options *Opt, int verbose_level)
surface_classify_using_arc * SCA
~surface_create_by_arc_lifting()
void init(int arc_idx, surface_classify_using_arc *SCA, int verbose_level)
void report_summary(std::ostream &ost, int verbose_level)
surface_create_by_arc_lifting()
cubic_surfaces_in_general::surface_object_with_action * SOA
a Clebsch map associated with a cubic surface and a choice of half double six
void init(surface_object_with_action *SOA, int orbit_idx, int verbose_level)
void report(std::ostream &ost, int verbose_level)
classification of cubic surfaces using nonconial six-arcs as substructures
six_arcs_not_on_a_conic * Six_arcs
cubic_surfaces_in_general::surface_with_action * Surf_A
creates a cubic surface from a 6-arc in a plane using trihedral pairs
void report_equation(std::ostream &ost)
void create_surface_and_group(cubic_surfaces_in_general::surface_with_action *Surf_A, long int *Arc6, int verbose_level)
void report(std::ostream &ost, int verbose_level)
algebraic_geometry::web_of_cubic_curves * Web
trihedral_pair_with_action * Trihedral_pair
groups::strong_generators * Aut_gens
void report_specific_arc_basic(std::ostream &ost, int arc_idx)
void report_specific_arc(std::ostream &ost, int arc_idx)
apps_geometry::arc_generator * Gen
void recognize(long int *arc6, int *transporter, int &orbit_not_on_conic_idx, int verbose_level)
projective_geometry::projective_space_with_action * PA
poset_classification::poset_classification * gen
field_theory::finite_field * F
#define Lint_vec_print(A, B, C)
#define NEW_OBJECTS(type, n)
the orbiter library for the classification of combinatorial objects