Orbiter 2022
Combinatorial Objects
surfaces_general.h
Go to the documentation of this file.
1/*
2 * surfaces_general.h
3 *
4 * Created on: Jun 26, 2021
5 * Author: betten
6 */
7
8#ifndef SRC_LIB_TOP_LEVEL_SURFACES_SURFACES_GENERAL_SURFACES_GENERAL_H_
9#define SRC_LIB_TOP_LEVEL_SURFACES_SURFACES_GENERAL_SURFACES_GENERAL_H_
10
11
12
13namespace orbiter {
14namespace layer5_applications {
15namespace applications_in_algebraic_geometry {
16namespace cubic_surfaces_in_general {
17
18
19// #############################################################################
20// cubic_surface_activity_description.cpp
21// #############################################################################
22
24
25
27public:
28
30
32
34
36
38
40
42
44
48 int argc, std::string *argv,
49 int verbose_level);
50 void print();
51
52};
53
54// #############################################################################
55// cubic_surface_activity.cpp
56// #############################################################################
57
59
60
62public:
63
66
67
70 void init(
71 cubic_surfaces_in_general::cubic_surface_activity_description *Cubic_surface_activity_description,
72 surface_create *SC, int verbose_level);
73 void perform_activity(int verbose_level);
74};
75
76
77
78
79// #############################################################################
80// surface_clebsch_map.cpp
81// #############################################################################
82
84
85
87public:
88
90
92 int f, l, hds;
93
94 algebraic_geometry::clebsch_map *Clebsch_map;
95
96
99 void report(std::ostream &ost, int verbose_level);
100 void init(surface_object_with_action *SOA, int orbit_idx, int verbose_level);
101
102};
103
104
105// #############################################################################
106// surface_create.cpp
107// #############################################################################
108
109
111
112
114
115public:
117
118 std::string prefix;
119 std::string label_txt;
120 std::string label_tex;
121
123
124 int q;
125 field_theory::finite_field *F;
126
128
129 algebraic_geometry::surface_domain *Surf;
130
132
133 algebraic_geometry::surface_object *SO;
134
136 groups::strong_generators *Sg;
138 data_structures_groups::vector_ge *nice_gens;
139
140
141
142
145 void null();
146 void freeself();
149 int verbose_level);
152 int verbose_level);
153 void create_surface_from_description(int verbose_level);
154 void override_group(std::string &group_order_text,
155 int nb_gens, std::string &gens_text, int verbose_level);
156 void create_Eckardt_surface(int a, int b, int verbose_level);
157 void create_surface_G13(int a, int verbose_level);
158 void create_surface_F13(int a, int verbose_level);
159 void create_surface_bes(int a, int c, int verbose_level);
160 void create_surface_general_abcd(int a, int b, int c, int d, int verbose_level);
161 void create_surface_by_coefficients(std::string &coefficients_text,
162 std::vector<std::string> &select_double_six_string,
163 int verbose_level);
164 void create_surface_by_coefficient_vector(int *coeffs20,
165 std::vector<std::string> &select_double_six_string,
166 int verbose_level);
167 void create_surface_by_rank(std::string &rank_text, int defining_q,
168 std::vector<std::string> &select_double_six_string,
169 int verbose_level);
171 std::vector<std::string> &select_double_six_string,
172 int verbose_level);
174 std::string &arc_lifting_text,
175 int verbose_level);
177 std::string &arc_lifting_text,
178 std::string &arc_lifting_two_lines_text,
179 int verbose_level);
181 int k, int l, int m, int n,
182 int verbose_level);
184 std::string &name_of_formula,
185 std::string &name_of_formula_tex,
186 std::string &managed_variables,
187 std::string &equation_text,
188 std::string &equation_parameters,
189 std::string &equation_parameters_tex,
190 std::vector<std::string> &select_double_six_string,
191 int verbose_level);
193 std::string &by_double_six_label,
194 std::string &by_double_six_label_tex,
195 std::string &by_double_six_text,
196 int verbose_level);
198 std::string &given_label,
199 std::string &given_label_tex,
200 int verbose_level);
202 std::vector<std::string> &transform_coeffs,
203 std::vector<int> &f_inverse_transform,
204 int verbose_level);
205 void compute_group(
207 int verbose_level);
208
209};
210
211
212// #############################################################################
213// surface_create_description.cpp
214// #############################################################################
215
216
217
219
220
222
223public:
224
225 int f_q;
226 int q;
227
229 std::string label_txt;
230
232 std::string label_tex;
233
235 std::string label_for_summary;
236
238 int iso;
240 std::string coefficients_text;
241
243 std::string rank_text;
245
249
252
255
259
265
267 std::string arc_lifting_text;
269
271 std::vector<std::string> select_double_six_string;
272
278
279
284 std::string equation_text;
287
288
293
297
302
303 std::vector<std::string> transform_coeffs;
304 std::vector<int> f_inverse_transform;
305
306
307
310 void null();
311 void freeself();
312 int read_arguments(int argc, std::string *argv,
313 int verbose_level);
314 void print();
315 int get_q();
316};
317
318
319// #############################################################################
320// surface_domain_high_level.cpp
321// #############################################################################
322
323
325
326
328
329public:
330
331
334
337 surface_create_description *Surface_Descr,
338 std::string &sweep_fname,
339 int verbose_level);
342 surface_create_description *Surface_Descr,
343 std::string &sweep_fname,
344 int verbose_level);
347 surface_create_description *Surface_Descr,
348 std::string &sweep_fname,
349 int verbose_level);
350 void do_sweep_4_27(
352 surface_create_description *Surface_Descr,
353 std::string &sweep_fname,
354 int verbose_level);
355
356
359 poset_classification::poset_classification_control *Control,
361 int verbose_level);
363 field_theory::finite_field *F,
365 poset_classification::poset_classification_control *Control,
366 algebraic_geometry::surface_domain *&Surf, surface_with_action *&Surf_A,
368 int verbose_level);
369 void do_study_surface(field_theory::finite_field *F, int nb, int verbose_level);
372 poset_classification::poset_classification_control *Control_six_arcs,
373 int f_test_nb_Eckardt_points, int nb_E,
374 int verbose_level);
377 poset_classification::poset_classification_control *Control1,
378 poset_classification::poset_classification_control *Control2,
379 poset_classification::poset_classification_control *Control_six_arcs,
380 int f_test_nb_Eckardt_points, int nb_E,
381 int verbose_level);
382 void do_six_arcs(
384 poset_classification::poset_classification_control *Control_six_arcs,
385 int f_filter_by_nb_Eckardt_points, int nb_Eckardt_points,
386 int verbose_level);
389 std::string &fname_csv, int defining_q,
390 int column_offset,
391 int verbose_level);
394 std::string &fname_csv, int defining_q,
395 int verbose_level);
396 void report_singular_surfaces(std::ostream &ost,
397 struct cubic_surface_data_set *Data, int nb_orbits, int verbose_level);
398 void report_non_singular_surfaces(std::ostream &ost,
399 struct cubic_surface_data_set *Data, int nb_orbits, int verbose_level);
400 void report_surfaces_by_lines(std::ostream &ost,
401 struct cubic_surface_data_set *Data, data_structures::tally &T, int verbose_level);
402 void do_create_surface_reports(std::string &field_orders_text, int verbose_level);
403 void do_create_surface_atlas(int q_max, int verbose_level);
404 void do_create_surface_atlas_q_e(int q_max,
405 struct table_surfaces_field_order *T, int nb_e, int *Idx, int nb,
406 std::string &fname_report_tex,
407 int verbose_level);
408 void do_create_dickson_atlas(int verbose_level);
409 void make_fname_surface_report_tex(std::string &fname, int q, int ocn);
410 void make_fname_surface_report_pdf(std::string &fname, int q, int ocn);
411
412};
413
414
415// #############################################################################
416// surface_object_with_action.cpp
417// #############################################################################
418
419
421
422
424
425public:
426
427 int q;
428 field_theory::finite_field *F; // do not free
429
430 algebraic_geometry::surface_domain *Surf; // do not free
432
433 algebraic_geometry::surface_object *SO; // do not free
434 groups::strong_generators *Aut_gens;
435 // generators for the automorphism group
436
438 data_structures_groups::vector_ge *nice_gens;
439
440 groups::strong_generators *projectivity_group_gens;
441 groups::sylow_structure *Syl;
442
443 actions::action *A_on_points;
444 actions::action *A_on_Eckardt_points;
445 actions::action *A_on_Double_points;
446 actions::action *A_on_the_lines;
447 actions::action *A_single_sixes;
448 actions::action *A_on_tritangent_planes;
449 actions::action *A_on_Hesse_planes;
450 actions::action *A_on_trihedral_pairs;
451 actions::action *A_on_pts_not_on_lines;
452
453
454 groups::schreier *Orbits_on_points;
455 groups::schreier *Orbits_on_Eckardt_points;
456 groups::schreier *Orbits_on_Double_points;
457 groups::schreier *Orbits_on_lines;
458 groups::schreier *Orbits_on_single_sixes;
460 groups::schreier *Orbits_on_Hesse_planes;
461 groups::schreier *Orbits_on_trihedral_pairs;
463
464
465
468 void null();
469 void freeself();
471 groups::strong_generators *Aut_gens, int verbose_level);
473 long int *Lines, int nb_lines, int *eqn,
474 groups::strong_generators *Aut_gens,
475 int f_find_double_six_and_rearrange_lines,
476 int f_has_nice_gens,
477 data_structures_groups::vector_ge *nice_gens,
478 int verbose_level);
480 algebraic_geometry::surface_object *SO,
481 groups::strong_generators *Aut_gens,
482 int f_has_nice_gens,
483 data_structures_groups::vector_ge *nice_gens,
484 int verbose_level);
486 algebraic_geometry::surface_object *SO,
487 groups::strong_generators *Aut_gens, int verbose_level);
488 void compute_projectivity_group(int verbose_level);
489 void compute_orbits_of_automorphism_group(int verbose_level);
490 void init_orbits_on_points(int verbose_level);
491 void init_orbits_on_Eckardt_points(int verbose_level);
492 void init_orbits_on_Double_points(int verbose_level);
493 void init_orbits_on_lines(int verbose_level);
494 void init_orbits_on_half_double_sixes(int verbose_level);
495 void init_orbits_on_tritangent_planes(int verbose_level);
496 void init_orbits_on_Hesse_planes(int verbose_level);
497 void init_orbits_on_trihedral_pairs(int verbose_level);
498 void init_orbits_on_points_not_on_lines(int verbose_level);
500 std::ostream &ost,
501 groups::strong_generators *Aut_gens,
502 int verbose_level);
504 std::ostream &ost,
505 groups::strong_generators *Aut_gens,
506 int verbose_level);
507 void print_automorphism_group(std::ostream &ost,
508 int f_print_orbits, std::string &fname_mask,
509 graphics::layered_graph_draw_options *Opt,
510 int verbose_level);
511 void cheat_sheet_basic(std::ostream &ost, int verbose_level);
512 void cheat_sheet(std::ostream &ost,
513 std::string &label_txt,
514 std::string &label_tex,
515 int f_print_orbits, std::string &fname_mask,
516 graphics::layered_graph_draw_options *Opt,
517 int verbose_level);
518 void print_automorphism_group_gnerators(std::ostream &ost, int verbose_level);
520 graphics::layered_graph_draw_options *Opt,
521 actions::action *A,
522 surface_create *SC,
524 int verbose_level);
526 std::ostream &ost,
527 graphics::layered_graph_draw_options *Opt,
528 actions::action *A,
529 surface_create *SC,
531 std::string &fname_mask,
532 std::string &label,
533 std::string &label_tex,
534 int verbose_level);
536 std::string &surface_prefix,
537 std::ostream &ost,
538 std::ostream &ost_quartics,
539 int verbose_level);
541 std::string &surface_prefix,
542 std::ostream &ost_quartics_csv,
543 int verbose_level);
544 void print_full_del_Pezzo(std::ostream &ost, int verbose_level);
545};
546
547// #############################################################################
548// surface_study.cpp
549// #############################################################################
550
552
554public:
555 int q;
556 int nb;
557 int *rep;
558 std::string prefix;
559 field_theory::finite_field *F;
560 algebraic_geometry::surface_domain *Surf;
561
563
564 int *data;
567 std::string stab_order;
568
569 actions::action *A;
570 actions::action *A2;
571 groups::sims *S;
572 long int *Lines;
573 int *coeff;
574
576
577 data_structures_groups::set_and_stabilizer *SaS;
578
579
580 // line orbits:
583 int *orbit;
585
586
587 // orbit_on_lines:
588 actions::action *A_on_lines;
589 groups::schreier *Orb;
591
592 // for study_find_eckardt_points:
593 int *Adj;
594 int *R;
596 long int *Double_pts;
598 long int *Eckardt_pts;
600
601
602 void init(field_theory::finite_field *F, int nb, int verbose_level);
603 void study_intersection_points(int verbose_level);
604 void study_line_orbits(int verbose_level);
605 void study_group(int verbose_level);
606 void study_orbits_on_lines(int verbose_level);
607 void study_find_eckardt_points(int verbose_level);
608 void study_surface_with_6_eckardt_points(int verbose_level);
609};
610
611
612
613
614
615// #############################################################################
616// surface_with_action.cpp
617// #############################################################################
618
620
621
622
624
625public:
626
627
629
631
632 algebraic_geometry::surface_domain *Surf; // do not free
633
634 actions::action *A; // linear group PGGL(4,q)
635
636 actions::action *A_wedge; // linear group PGGL(4,q)
637
638
639 actions::action *A2; // linear group PGGL(4,q) acting on lines
640 actions::action *A_on_planes; // linear group PGGL(4,q) acting on planes
641
642 int *Elt1;
643
644 induced_actions::action_on_homogeneous_polynomials *AonHPD_3_4;
645
646
648
650 long int *regulus; // [regulus_size]
651 int regulus_size; // q + 1
652
653
656 void null();
657 void freeself();
658 void init(algebraic_geometry::surface_domain *Surf,
660 int f_recoordinatize,
661 int verbose_level);
662 long int apply_null_polarity(
663 long int a, int verbose_level);
664 long int apply_polarity(
665 long int a, int *Polarity36, int verbose_level);
667 long int *skew_hexagon,
668 std::vector<std::vector<long int> > &Double_sixes,
669 int verbose_level);
671 std::string &label_for_printing,
672 long int *skew_hexagon,
673 int *Polarity36,
674 std::vector<std::vector<long int> > &Double_sixes,
675 int verbose_level);
677 long int *three_skew_lines, long int *&regulus, long int *&opp_regulus, int &regulus_sz,
678 int verbose_level);
680 long int *five_lines, long int transversal_line,
681 long int *double_six, int verbose_level);
683 long int *five_lines, long int transversal_line,
684 long int *double_six, int verbose_level);
685 void report_basics(std::ostream &ost);
686 void report_double_triplets(std::ostream &ost);
687 void report_double_triplets_detailed(std::ostream &ost);
688 void create_surface(
689 surface_create_description *Surface_Descr,
690 surface_create *&SC,
691 int verbose_level);
693 surface_create_description *Surface_Descr,
694 int f_has_control_six_arcs,
695 poset_classification::poset_classification_control *Control_six_arcs,
696 int verbose_level);
697 void test_group(
698 surface_create *SC,
699 int verbose_level);
701 surface_create *SC,
702 int f_has_control_six_arcs,
703 poset_classification::poset_classification_control *Control_six_arcs,
704 int verbose_level);
706 surface_create *SC,
708 int verbose_level);
709 void export_points(
710 surface_create *SC,
711 int verbose_level);
712 void do_report(
713 surface_create *SC,
714 int verbose_level);
715 void sweep_4_15_lines(
716 surface_create_description *Surface_Descr,
717 std::string &sweep_fname,
718 int verbose_level);
720 surface_create_description *Surface_Descr,
721 std::string &sweep_fname,
722 int verbose_level);
723 void sweep_6_9_lines(
724 surface_create_description *Surface_Descr,
725 std::string &sweep_fname,
726 int verbose_level);
727 void sweep_4_27(
728 surface_create_description *Surface_Descr,
729 std::string &sweep_fname,
730 int verbose_level);
731 void table_of_cubic_surfaces(int verbose_level);
732 void table_of_cubic_surfaces_export_csv(long int *Table,
733 int nb_cols,
734 int q, int nb_cubic_surfaces,
735 surface_create **SC,
736 int verbose_level);
737 void table_of_cubic_surfaces_export_sql(long int *Table,
738 int nb_cols,
739 int q, int nb_cubic_surfaces,
740 surface_create **SC,
741 int verbose_level);
742
743};
744
745
746
747}}}}
748
749
750
751
752
753#endif /* SRC_LIB_TOP_LEVEL_SURFACES_SURFACES_GENERAL_SURFACES_GENERAL_H_ */
void do_sweep_4_15_lines(projective_geometry::projective_space_with_action *PA, surface_create_description *Surface_Descr, std::string &sweep_fname, int verbose_level)
void do_sweep_F_beta_9_lines(projective_geometry::projective_space_with_action *PA, surface_create_description *Surface_Descr, std::string &sweep_fname, int verbose_level)
void classify_surfaces_with_double_sixes(projective_geometry::projective_space_with_action *PA, poset_classification::poset_classification_control *Control, cubic_surfaces_and_double_sixes::surface_classify_wedge *&SCW, int verbose_level)
void do_classify_surfaces_through_arcs_and_two_lines(projective_geometry::projective_space_with_action *PA, poset_classification::poset_classification_control *Control_six_arcs, int f_test_nb_Eckardt_points, int nb_E, int verbose_level)
void report_surfaces_by_lines(std::ostream &ost, struct cubic_surface_data_set *Data, data_structures::tally &T, int verbose_level)
void do_cubic_surface_properties_analyze(projective_geometry::projective_space_with_action *PA, std::string &fname_csv, int defining_q, int verbose_level)
void do_create_surface_atlas_q_e(int q_max, struct table_surfaces_field_order *T, int nb_e, int *Idx, int nb, std::string &fname_report_tex, int verbose_level)
void report_non_singular_surfaces(std::ostream &ost, struct cubic_surface_data_set *Data, int nb_orbits, int verbose_level)
void do_six_arcs(projective_geometry::projective_space_with_action *PA, poset_classification::poset_classification_control *Control_six_arcs, int f_filter_by_nb_Eckardt_points, int nb_Eckardt_points, int verbose_level)
void prepare_surface_classify_wedge(field_theory::finite_field *F, projective_geometry::projective_space_with_action *PA, poset_classification::poset_classification_control *Control, algebraic_geometry::surface_domain *&Surf, surface_with_action *&Surf_A, cubic_surfaces_and_double_sixes::surface_classify_wedge *&SCW, int verbose_level)
void do_cubic_surface_properties(projective_geometry::projective_space_with_action *PA, std::string &fname_csv, int defining_q, int column_offset, int verbose_level)
void do_sweep_4_27(projective_geometry::projective_space_with_action *PA, surface_create_description *Surface_Descr, std::string &sweep_fname, int verbose_level)
void do_classify_surfaces_through_arcs_and_trihedral_pairs(projective_geometry::projective_space_with_action *PA, poset_classification::poset_classification_control *Control1, poset_classification::poset_classification_control *Control2, poset_classification::poset_classification_control *Control_six_arcs, int f_test_nb_Eckardt_points, int nb_E, int verbose_level)
void report_singular_surfaces(std::ostream &ost, struct cubic_surface_data_set *Data, int nb_orbits, int verbose_level)
void do_sweep_6_9_lines(projective_geometry::projective_space_with_action *PA, surface_create_description *Surface_Descr, std::string &sweep_fname, int verbose_level)
void init_equation(surface_with_action *Surf_A, int *eqn, groups::strong_generators *Aut_gens, 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 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)
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)
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 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)
void export_all_quartic_curves(std::string &surface_prefix, std::ostream &ost_quartics_csv, int verbose_level)
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)
a Clebsch map associated with a cubic surface and a choice of half double six
void init(cubic_surfaces_in_general::cubic_surface_activity_description *Cubic_surface_activity_description, surface_create *SC, int verbose_level)
void sweep_4_27(surface_create_description *Surface_Descr, std::string &sweep_fname, int verbose_level)
void create_surface_and_do_report(surface_create_description *Surface_Descr, int f_has_control_six_arcs, poset_classification::poset_classification_control *Control_six_arcs, int verbose_level)
void create_regulus_and_opposite_regulus(long int *three_skew_lines, long int *&regulus, long int *&opp_regulus, int &regulus_sz, int verbose_level)
void sweep_6_9_lines(surface_create_description *Surface_Descr, std::string &sweep_fname, int verbose_level)
void sweep_F_beta_9_lines(surface_create_description *Surface_Descr, std::string &sweep_fname, int verbose_level)
void complete_skew_hexagon_with_polarity(std::string &label_for_printing, long int *skew_hexagon, int *Polarity36, std::vector< std::vector< long int > > &Double_sixes, int verbose_level)
void table_of_cubic_surfaces_export_csv(long int *Table, int nb_cols, int q, int nb_cubic_surfaces, surface_create **SC, int verbose_level)
void init(algebraic_geometry::surface_domain *Surf, projective_geometry::projective_space_with_action *PA, int f_recoordinatize, int verbose_level)
int create_double_six_from_five_lines_with_a_common_transversal(long int *five_lines, long int transversal_line, long int *double_six, int verbose_level)
void create_surface(surface_create_description *Surface_Descr, surface_create *&SC, int verbose_level)
void create_surface_object_with_action(surface_create *SC, surface_object_with_action *&SoA, int verbose_level)
int create_double_six_safely(long int *five_lines, long int transversal_line, long int *double_six, int verbose_level)
void sweep_4_15_lines(surface_create_description *Surface_Descr, std::string &sweep_fname, int verbose_level)
void complete_skew_hexagon(long int *skew_hexagon, std::vector< std::vector< long int > > &Double_sixes, int verbose_level)
void table_of_cubic_surfaces_export_sql(long int *Table, int nb_cols, int q, int nb_cubic_surfaces, surface_create **SC, int verbose_level)
void report_with_group(surface_create *SC, int f_has_control_six_arcs, poset_classification::poset_classification_control *Control_six_arcs, int verbose_level)
to create a cubic surface from a description using class surface_create_description
void apply_transformations(std::vector< std::string > &transform_coeffs, std::vector< int > &f_inverse_transform, int verbose_level)
void create_surface_by_double_six(std::string &by_double_six_label, std::string &by_double_six_label_tex, std::string &by_double_six_text, int verbose_level)
void create_surface_by_coefficients(std::string &coefficients_text, std::vector< std::string > &select_double_six_string, int verbose_level)
void create_surface_by_rank(std::string &rank_text, int defining_q, std::vector< std::string > &select_double_six_string, int verbose_level)
void create_surface_by_skew_hexagon(std::string &given_label, std::string &given_label_tex, int verbose_level)
void compute_group(projective_geometry::projective_space_with_action *PA, int verbose_level)
void override_group(std::string &group_order_text, int nb_gens, std::string &gens_text, int verbose_level)
void create_surface_from_catalogue(int iso, std::vector< std::string > &select_double_six_string, int verbose_level)
void create_surface_by_equation(std::string &name_of_formula, std::string &name_of_formula_tex, std::string &managed_variables, std::string &equation_text, std::string &equation_parameters, std::string &equation_parameters_tex, std::vector< std::string > &select_double_six_string, int verbose_level)
void init_with_data(surface_create_description *Descr, surface_with_action *Surf_A, int verbose_level)
void create_surface_by_coefficient_vector(int *coeffs20, std::vector< std::string > &select_double_six_string, int verbose_level)
void create_surface_by_arc_lifting_with_two_lines(std::string &arc_lifting_text, std::string &arc_lifting_two_lines_text, int verbose_level)
void init(surface_create_description *Descr, surface_with_action *Surf_A, int verbose_level)
projective space PG(n,q) with automorphism group PGGL(n+1,q)
three skew lines in PG(3,q), used to classify spreads
Definition: spreads.h:24
the orbiter library for the classification of combinatorial objects