Orbiter 2022
Combinatorial Objects
tl_geometry.h
Go to the documentation of this file.
1// tl_geometry.h
2//
3// Anton Betten
4//
5// moved here from top_level.h: July 28, 2018
6// top_level started: September 23 2010
7// based on global.h, which was taken from reader.h: 3/22/09
8
9
10#ifndef ORBITER_SRC_LIB_TOP_LEVEL_GEOMETRY_TL_GEOMETRY_H_
11#define ORBITER_SRC_LIB_TOP_LEVEL_GEOMETRY_TL_GEOMETRY_H_
12
13
14namespace orbiter {
15namespace layer5_applications {
16namespace apps_geometry {
17
18
19
20// #############################################################################
21// arc_generator_description.cpp
22// #############################################################################
23
25
26
28
29public:
30
32 poset_classification::poset_classification_control *Control;
33
34 int f_d;
35 int d;
36 // d is the maximum number of points per line
37
38
41 // desired size of the arc
42
44 // if TRUE, ensure that no six points lie on a conic
45
47 int nb_E;
48 //algebraic_geometry::surface_domain *Surf;
49
51
55
58
61 int read_arguments(int argc, std::string *argv, int verbose_level);
62 void print();
63
64
65};
66
67
68// #############################################################################
69// arc_generator.cpp
70// #############################################################################
71
73
74
76
77public:
78
79
82
85
86
87
88 //int f_semilinear;
89
93
94 //action *A;
95 groups::strong_generators *SG;
96
97 poset_classification::poset_with_group_action *Poset;
98
99
100
101 int *line_type; // [PA->P->N_lines]
102
103
104 poset_classification::poset_classification *gen;
105
106
107
108
109
112 void null();
113 void freeself();
114 void main(int verbose_level);
115 void init(
118 groups::strong_generators *SG,
119 int verbose_level);
120 void prepare_generator(int verbose_level);
121 void compute_starter(int verbose_level);
122
124 long int *S, int len, int pt, int nb_E, int verbose_level);
125 int conic_test(long int *S, int len, int pt, int verbose_level);
126 void early_test_func(long int *S, int len,
127 long int *candidates, int nb_candidates,
128 long int *good_candidates, int &nb_good_candidates,
129 int verbose_level);
130 void print(int len, long int *S);
131 void print_set_in_affine_plane(int len, long int *S);
132 void point_unrank(int *v, int rk);
133 int point_rank(int *v);
134 void compute_line_type(long int *set, int len, int verbose_level);
135 void lifting_prepare_function_new(exact_cover *E,
136 int starter_case,
137 long int *candidates, int nb_candidates,
138 groups::strong_generators *Strong_gens,
139 solvers::diophant *&Dio, long int *&col_labels,
140 int &f_ruled_out,
141 int verbose_level);
142 // compute the incidence matrix of tangent lines
143 // versus candidate points
144 // extended by external lines versus candidate points
145 void report(isomorph &Iso, int verbose_level);
146 void report_do_the_work(std::ostream &ost, isomorph &Iso, int verbose_level);
147 void report_decompositions(isomorph &Iso, std::ostream &ost, int orbit,
148 long int *data, int verbose_level);
149 void report_stabilizer(isomorph &Iso, std::ostream &ost, int orbit,
150 int verbose_level);
151};
152
153
154
155
156
157// #############################################################################
158// arc_lifting_simeon.cpp
159// #############################################################################
160
161
163
164
166
167public:
168
170 int q;
171 int d; // largest number of points per line
172 int n; // projective dimension
173 int k; // size of the arc
174 field_theory::finite_field *F;
180
181 actions::action *A;
182 ring_theory::longinteger_object go;
183 int *Elt;
184 int *v;
185 groups::schreier *Sch;
186 poset_classification::poset_with_group_action *Poset;
187 poset_classification::poset_classification *Gen;
188 geometry::projective_space *P;
189
190 actions::action *A2; // action on the lines
191 actions::action *A3; // action on lines restricted to filtered_lines
192
193
196 void init(int q, int d, int n, int k,
197 int verbose_level);
198 void early_test_func(long int *S, int len,
199 long int *candidates, int nb_candidates,
200 long int *good_candidates, int &nb_good_candidates,
201 int verbose_level);
202 void do_covering_problem(data_structures_groups::set_and_stabilizer *SaS);
203
204
205};
206
207
208
209
210
211
212
213// #############################################################################
214// choose_points_or_lines.cpp
215// #############################################################################
216
218
219
221
222public:
223 std::string label;
224 int t0;
225
226 void *data;
227
228 actions::action *A;
229 actions::action *A_lines;
230 actions::action *A2;
231 // = A if f_choose_lines is FALSE
232 // = A_lines if f_choose_lines is TRUE
233
235 // TRUE if we are looking for a set of lines
236 // FALSE if we are looking for a set of points
238 // the size of the set we are looking for
239
241
242
244 // maps the canonical rep to the favorite rep
246 // maps the favorite rep to the canonical rep
247
248
249 int (*check_function)(int len, long int *S, void *data, int verbose_level);
250
251 poset_classification::poset_classification *gen;
252 poset_classification::poset_classification_control *Control;
253 poset_classification::poset_with_group_action *Poset;
254
257
259 int f_iso_test_only; // do not change to favorite
260 long int *favorite;
262
265
266
267
268
269 long int *representative; // [nb_points_or_lines]
270
271 ring_theory::longinteger_object *stab_order;
272 groups::sims *stab;
273 groups::strong_generators *Stab_Strong_gens;
274
275
278 void null();
279 void freeself();
280 void null_representative();
281 void free_representative();
282 void init(const char *label, void *data,
283 actions::action *A, actions::action *A_lines,
284 int f_choose_lines,
286 int (*check_function)(int len, long int *S, void *data,
287 int verbose_level),
288 int t0,
289 int verbose_level);
290 void compute_orbits_from_sims(groups::sims *G, int verbose_level);
291 void compute_orbits(groups::strong_generators *Strong_gens, int verbose_level);
292 void choose_orbit(int orbit_no, int &f_hit_favorite, int verbose_level);
294 int *transporter_inv,
295 long int *the_favorite_representative,
296 int verbose_level);
297 void print_rep();
298 void print_stab();
299 int is_in_rep(int a);
300
301};
302
303// #############################################################################
304// classify_cubic_curves.cpp:
305// #############################################################################
306
307
309
310
312
313public:
314
315 int q;
316 field_theory::finite_field *F; // do not free
317 actions::action *A; // do not free
318
320 algebraic_geometry::cubic_curve *CC; // do not free
321
323
325 int nb; // number of orbits for which the rank is 9
326 int *Idx; // index set of those orbits for which the rank is 9
327
328
329
330 invariant_relations::flag_orbits *Flag_orbits;
331
332 int *Po;
333
335
336 invariant_relations::classification_step *Curves;
337
338
339
342 void null();
343 void freeself();
344 void init(
348 int verbose_level);
349 void compute_starter(int verbose_level);
350 void test_orbits(int verbose_level);
351 void downstep(int verbose_level);
352 void upstep(int verbose_level);
353 void do_classify(int verbose_level);
354 int recognize(int *eqn_in,
355 int *Elt, int &iso_type, int verbose_level);
356 void family1_recognize(int *Iso_type, int verbose_level);
357 void family2_recognize(int *Iso_type, int verbose_level);
358 void family3_recognize(int *Iso_type, int verbose_level);
359 void familyE_recognize(int *Iso_type, int verbose_level);
360 void familyH_recognize(int *Iso_type, int verbose_level);
361 void familyG_recognize(int *Iso_type, int verbose_level);
362 void report(std::ostream &ost, int verbose_level);
363
364};
365
366
367
368
369
370// #############################################################################
371// cubic_curve_action.cpp:
372// #############################################################################
373
375
376
377
379
380public:
381
382 int q;
383 field_theory::finite_field *F; // do not free
384
385 algebraic_geometry::cubic_curve *CC; // do not free
386
387 actions::action *A; // linear group PGGL(3,q)
388 actions::action *A2; // linear group PGGL(3,q) acting on lines
389
390 int *Elt1;
391
392 induced_actions::action_on_homogeneous_polynomials *AonHPD_3_3;
393
394
395
398 void null();
399 void freeself();
400 void init(algebraic_geometry::cubic_curve *CC, actions::action *A, int verbose_level);
401
402};
403
404// #############################################################################
405// hermitian_spreads_classify.cpp
406// #############################################################################
407
409
410
412public:
413 int n;
414 int Q;
415 int len; // = n + 1
416 field_theory::finite_field *F;
417 geometry::hermitian *H;
418
419 long int *Pts;
421 int *v;
423 geometry::projective_space *P;
424 groups::strong_generators *sg;
426 int sz;
427 long int *secants;
429 int *Adj;
430
431 actions::action *A;
432 actions::action *A2;
433 actions::action *A2r;
434
435 poset_classification::poset_classification_control *Control;
436 poset_classification::poset_with_group_action *Poset;
437 poset_classification::poset_classification *gen;
438
439
442 void null();
443 void freeself();
444 void init(int n, int Q, int verbose_level);
445 void read_arguments(int argc, std::string *argv);
446 void init2(int verbose_level);
447 void compute(int depth, int verbose_level);
448 void early_test_func(long int *S, int len,
449 long int *candidates, int nb_candidates,
450 long int *good_candidates, int &nb_good_candidates,
451 int verbose_level);
452};
453
454
455
456
457
458
459
460
461// #############################################################################
462// linear_set_classify.cpp
463// #############################################################################
464
465
466
468
469
470
471
473public:
474 int s; // s divides n
475 int n; // n = s * m
476 int m; // = n / s
477 int q;
478 int Q; // Q = q^s
479 int depth;
485 int (*extra_test_func)(void *, int len, long int *S,
486 void *extra_test_func_data, int verbose_level);
488 int *Basis; // [depth * vector_space_dimension]
490
491 field_theory::finite_field *Fq;
492 field_theory::finite_field *FQ;
493 field_theory::subfield_structure *SubS;
494 geometry::projective_space *P;
495
496
497 // the groups we need:
498
499 actions::action *Aq; // GL(n,q)
500
501 actions::action *AQ; // GL(m, Q)
502
503 actions::action *A_PGLQ; // PGL(m,Q)
504
505 algebra::vector_space *VS;
506 poset_classification::poset_classification_control *Control1;
507 poset_classification::poset_with_group_action *Poset1;
508 poset_classification::poset_classification *Gen;
510
511 // the generators:
512
513 groups::strong_generators *Strong_gens; // generators for GL(m,Q) field reduced into GL(n,q)
514
515 geometry::desarguesian_spread *D; // n, m, s
516
517 int n1; // = s * m1;
518 int m1; // = m + 1
519
520 geometry::desarguesian_spread *D1; // n1, m1, s
521
522 int *spread_embedding; // [D->N]
523
525 int k;
526 int order;
528
529
530
537
538 poset_classification::poset_classification_control *Control_stab;
539 poset_classification::poset_with_group_action *Poset_stab;
540 poset_classification::poset_classification *Gen_stab;
541
542 poset_classification::poset_classification_control *Control2;
543 poset_classification::poset_with_group_action *Poset2;
544 poset_classification::poset_classification *Gen2;
546
549 void null();
550 void freeself();
551 void init(
552 int s, int n, int q,
553 std::string &poly_q, std::string &poly_Q,
554 int depth, int f_identify, int verbose_level);
555 void do_classify(int verbose_level);
556 int test_set(int len, long int *S, int verbose_level);
558 int &nb_nodes, int *&Intersection_dimensions,
559 int verbose_level);
560 void calculate_intersections(int depth, int verbose_level);
561 void read_data_file(int depth, int verbose_level);
562 void print_orbits_at_level(int level);
563 void classify_secondary(int argc, const char **argv,
564 int level, int orbit_at_level,
565 groups::strong_generators *strong_gens,
566 int verbose_level);
567 void init_secondary(int argc, const char **argv,
568 long int *candidates, int nb_candidates,
569 groups::strong_generators *Strong_gens_previous,
570 int verbose_level);
571 void do_classify_secondary(int verbose_level);
572 int test_set_secondary(int len, long int *S, int verbose_level);
573 void compute_stabilizer_of_linear_set(int argc, const char **argv,
574 int level, int orbit_at_level,
575 groups::strong_generators *&strong_gens,
576 int verbose_level);
577 void init_compute_stabilizer(int argc, const char **argv,
578 int level, int orbit_at_level,
579 long int *candidates, int nb_candidates,
580 groups::strong_generators *Strong_gens_previous,
581 groups::strong_generators *&strong_gens,
582 int verbose_level);
583 void do_compute_stabilizer(int level, int orbit_at_level,
584 long int *candidates, int nb_candidates,
585 groups::strong_generators *&strong_gens,
586 int verbose_level);
587 void construct_semifield(int orbit_for_W, int verbose_level);
588
589};
590
591
592
593
594// #############################################################################
595// ovoid_classify_description.cpp
596// #############################################################################
597
598
600
601
603
604public:
605
606
607 poset_classification::poset_classification_control *Control;
608
610 int epsilon; // the type of the quadric (0, 1 or -1)
611 int f_d;
612 int d; // algebraic dimension
613
616 int read_arguments(int argc, std::string *argv,
617 int verbose_level);
618 void print();
619
620};
621
622
623// #############################################################################
624// ovoid_classify.cpp
625// #############################################################################
626
627
629
630
632
633public:
634
636 groups::linear_group *LG;
637
638 int m; // Witt index
639
640 poset_classification::poset_with_group_action *Poset;
641 poset_classification::poset_classification *gen;
642
643
644 actions::action *A;
645
646
647 orthogonal_geometry::orthogonal *O;
648
649
650 int N; // = O->nb_points
651
652 int *u, *v, *w, *tmp1; // vectors of length d
653
654 int nb_sol; // number of solutions so far
655
656
657 geometry::klein_correspondence *K;
660
661 int *Pts; // [N * d]
662 int *Candidates; // [N * d]
663
664
668 groups::linear_group *LG,
669 int &verbose_level);
670 void early_test_func(long int *S, int len,
671 long int *candidates, int nb_candidates,
672 long int *good_candidates, int &nb_good_candidates,
673 int verbose_level);
674 void print(std::ostream &ost, long int *S, int len);
675 void make_graphs(orbiter_kernel_system::orbiter_data_file *ODF,
676 std::string &prefix,
677 int f_split, int split_r, int split_m,
678 int f_lexorder_test,
679 const char *fname_mask,
680 int verbose_level);
681 void make_one_graph(orbiter_kernel_system::orbiter_data_file *ODF,
682 std::string &prefix,
683 int orbit_idx,
684 int f_lexorder_test,
685 graph_theory::colored_graph *&CG,
686 int verbose_level);
687 void create_graph(orbiter_kernel_system::orbiter_data_file *ODF,
688 int orbit_idx,
689 long int *candidates, int nb_candidates,
690 graph_theory::colored_graph *&CG,
691 int verbose_level);
692 void compute_coloring(long int *starter, int starter_size,
693 long int *candidates, int nb_points,
694 int *point_color, int &nb_colors_used, int verbose_level);
695
696};
697
698
699
700
701// #############################################################################
702// polar.cpp
703// #############################################################################
704
705
707
708
709class polar {
710public:
712 int n; // vector space dimension
713 int k;
714 int q;
715 int depth;
716
718
719 actions::action *A; // the orthogonal action
720
721
722
723 groups::matrix_group *Mtx; // only a copy of a pointer, not to be freed
724 orthogonal_geometry::orthogonal *O; // only a copy of a pointer, not to be freed
725 field_theory::finite_field *F; // only a copy of a pointer, not to be freed
726
727 int *tmp_M; // [n * n]
728 int *base_cols; // [n]
729
730 algebra::vector_space *VS;
731 poset_classification::poset_classification_control *Control;
732 poset_classification::poset_with_group_action *Poset;
733 poset_classification::poset_classification *Gen;
734
738
741 groups::strong_generators *Strong_gens;
742
744
745 polar();
746 ~polar();
747 void init_group_by_base_images(int *group_generator_data,
748 int group_generator_size,
749 int f_group_order_target, const char *group_order_target,
750 int verbose_level);
751 void init_group(int *group_generator_data, int group_generator_size,
752 int f_group_order_target, const char *group_order_target,
753 int verbose_level);
754 void init(actions::action *A,
755 orthogonal_geometry::orthogonal *O,
756 int epsilon, int n, int k, field_theory::finite_field *F, int depth,
757 int verbose_level);
758 void init2(int depth, int verbose_level);
759 void compute_orbits(int t0, int verbose_level);
760 void compute_cosets(int depth, int orbit_idx, int verbose_level);
761 void dual_polar_graph(int depth, int orbit_idx,
762 ring_theory::longinteger_object *&Rank_table, int &nb_maximals,
763 int verbose_level);
764 void show_stabilizer(int depth, int orbit_idx, int verbose_level);
765 void test_if_in_perp(long int *S, int len,
766 long int *candidates, int nb_candidates,
767 long int *good_candidates, int &nb_good_candidates,
768 int verbose_level);
769 void test_if_closed_under_cosets(int *S, int len,
770 int *candidates, int nb_candidates,
771 int *good_candidates, int &nb_good_candidates,
772 int verbose_level);
773 void get_stabilizer(int orbit_idx,
774 data_structures_groups::group_container &G,
775 ring_theory::longinteger_object &go_G);
776 void get_orbit_length(int orbit_idx, ring_theory::longinteger_object &length);
777 int get_orbit_length_as_int(int orbit_idx);
778 void orbit_element_unrank(int orbit_idx, long int rank,
779 long int *set, int verbose_level);
780 void orbit_element_rank(int &orbit_idx, long int &rank,
781 long int *set, int verbose_level);
782 void unrank_point(int *v, int rk);
783 int rank_point(int *v);
784 void list_whole_orbit(int depth, int orbit_idx, int f_limit, int limit);
785};
786
787
788
789
790// #############################################################################
791// search_blocking_set.cpp
792// #############################################################################
793
795
796
797
799public:
800 geometry::incidence_structure *Inc; // do not free
801 actions::action *A; // do not free
802 poset_classification::poset_classification_control *Control;
803 poset_classification::poset_with_group_action *Poset;
804 poset_classification::poset_classification *gen;
805
806 data_structures::fancy_set *Line_intersections; // [Inc->nb_cols]
807 long int *blocking_set;
809 int *sz; // [Inc->nb_cols]
810
811 data_structures::fancy_set *active_set;
812 int *sz_active_set; // [Inc->nb_cols + 1]
813
814 std::deque<std::vector<int> > solutions;
819
824 int **save_sz;
825
826
829 void null();
830 void freeself();
831 void init(geometry::incidence_structure *Inc, actions::action *A, int verbose_level);
832 void find_partial_blocking_sets(int depth, int verbose_level);
833 int test_level(int depth, int verbose_level);
834 int test_blocking_set(int len, long int *S, int verbose_level);
835 int test_blocking_set_upper_bound_only(int len, long int *S,
836 int verbose_level);
837 void search_for_blocking_set(int input_no,
838 int level, int f_all, int verbose_level);
839 int recursive_search_for_blocking_set(int input_no,
840 int starter_level, int level, int verbose_level);
841 void save_line_intersection_size(int level);
842 void restore_line_intersection_size(int level);
843};
844
845
846// #############################################################################
847// singer_cycle.cpp
848// #############################################################################
849
851
852
854public:
855 field_theory::finite_field *F;
856 actions::action *A;
857 actions::action *A2;
858 int n;
859 int q;
860 int *poly_coeffs; // of degree n
862 data_structures_groups::vector_ge *nice_gens;
863 groups::strong_generators *SG;
864 ring_theory::longinteger_object target_go;
865 geometry::projective_space *P;
868 groups::schreier *Sch;
873 std::string *line_orbit_label;
877 geometry::incidence_structure *Inc;
879
880 singer_cycle();
882 void null();
883 void freeself();
884 void init(int n, field_theory::finite_field *F, actions::action *A,
885 actions::action *A2, int verbose_level);
886 void init_lines(int verbose_level);
887};
888
889
890
891
892// #############################################################################
893// tensor_classify.cpp
894// #############################################################################
895
897
898
900public:
901 int t0;
902
904 int n;
905 int q;
906
907 field_theory::finite_field *F;
908 actions::action *A;
909 actions::action *A0;
910
911 actions::action *Ar;
913 long int *points;
914
915
916 groups::strong_generators *SG;
917 ring_theory::longinteger_object go;
918 groups::wreath_product *W;
919 algebra::vector_space *VS;
920 poset_classification::poset_classification_control *Control;
921 poset_classification::poset_with_group_action *Poset;
922 poset_classification::poset_classification *Gen;
924 int *v; // [vector_space_dimension]
925
928 void init(
929 field_theory::finite_field *F, groups::linear_group *LG,
930 int verbose_level);
931 void classify_poset(int depth,
932 poset_classification::poset_classification_control *Control,
933 int verbose_level);
935 int verbose_level);
936 void early_test_func(long int *S, int len,
937 long int *candidates, int nb_candidates,
938 long int *good_candidates, int &nb_good_candidates,
939 int verbose_level);
940 void report(int f_poset_classify, int poset_classify_depth,
941 graphics::layered_graph_draw_options *draw_options,
942 int verbose_level);
943};
944
945
946
947
948
949
950
951
952// #############################################################################
953// top_level_geometry_global.cpp
954// #############################################################################
955
956
957
959
960
961
962
964public:
965
970 int intermediate_subset_size,
971 std::string &fname_mask, int nb, std::string &column_label,
972 std::string &fname_out,
973 int verbose_level);
976 groups::strong_generators *SG, std::ostream &ost, std::string &fname_base,
977 int verbose_level);
980 int *Elt, std::ostream &ost, std::string &fname_base,
981 int verbose_level);
982
983};
984
985
986
987}}}
988
989
990#endif /* ORBITER_SRC_LIB_TOP_LEVEL_GEOMETRY_TL_GEOMETRY_H_ */
991
tactical decomposition of an incidence structure with respect to a given group
description of a classification problem of arcs in a geometry
Definition: tl_geometry.h:27
poset_classification::poset_classification_control * Control
Definition: tl_geometry.h:32
classification of arcs in desarguesian projective planes
Definition: tl_geometry.h:75
void compute_line_type(long int *set, int len, int verbose_level)
poset_classification::poset_with_group_action * Poset
Definition: tl_geometry.h:97
void lifting_prepare_function_new(exact_cover *E, int starter_case, long int *candidates, int nb_candidates, groups::strong_generators *Strong_gens, solvers::diophant *&Dio, long int *&col_labels, int &f_ruled_out, int verbose_level)
void report_decompositions(isomorph &Iso, std::ostream &ost, int orbit, long int *data, int verbose_level)
void init(arc_generator_description *Descr, projective_geometry::projective_space_with_action *PA, groups::strong_generators *SG, int verbose_level)
void report_do_the_work(std::ostream &ost, isomorph &Iso, int verbose_level)
int conic_test(long int *S, int len, int pt, int verbose_level)
void early_test_func(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
int test_nb_Eckardt_points(long int *S, int len, int pt, int nb_E, int verbose_level)
projective_geometry::projective_space_with_action * PA
Definition: tl_geometry.h:81
void report_stabilizer(isomorph &Iso, std::ostream &ost, int orbit, int verbose_level)
poset_classification::poset_classification * gen
Definition: tl_geometry.h:104
arc lifting according to Simeon Ball and Ray Hill
Definition: tl_geometry.h:165
poset_classification::poset_with_group_action * Poset
Definition: tl_geometry.h:186
void do_covering_problem(data_structures_groups::set_and_stabilizer *SaS)
poset_classification::poset_classification * Gen
Definition: tl_geometry.h:187
void init(int q, int d, int n, int k, int verbose_level)
void early_test_func(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
classification of objects in projective planes
Definition: tl_geometry.h:220
void choose_orbit(int orbit_no, int &f_hit_favorite, int verbose_level)
poset_classification::poset_classification * gen
Definition: tl_geometry.h:251
poset_classification::poset_with_group_action * Poset
Definition: tl_geometry.h:253
poset_classification::poset_classification_control * Control
Definition: tl_geometry.h:252
void compute_orbits(groups::strong_generators *Strong_gens, int verbose_level)
void init(const char *label, void *data, actions::action *A, actions::action *A_lines, int f_choose_lines, int nb_points_or_lines, int(*check_function)(int len, long int *S, void *data, int verbose_level), int t0, int verbose_level)
int(* check_function)(int len, long int *S, void *data, int verbose_level)
Definition: tl_geometry.h:249
int favorite_orbit_representative(int *transporter, int *transporter_inv, long int *the_favorite_representative, int verbose_level)
invariant_relations::classification_step * Curves
Definition: tl_geometry.h:336
int recognize(int *eqn_in, int *Elt, int &iso_type, int verbose_level)
void init(projective_geometry::projective_space_with_action *PA, cubic_curve_with_action *CCA, arc_generator_description *Descr, int verbose_level)
domain for cubic curves in projective space with automorphism group
Definition: tl_geometry.h:378
void init(algebraic_geometry::cubic_curve *CC, actions::action *A, int verbose_level)
induced_actions::action_on_homogeneous_polynomials * AonHPD_3_3
Definition: tl_geometry.h:392
poset_classification::poset_classification_control * Control
Definition: tl_geometry.h:435
void early_test_func(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
poset_classification::poset_with_group_action * Poset
Definition: tl_geometry.h:436
poset_classification::poset_classification_control * Control2
Definition: tl_geometry.h:542
void init_compute_stabilizer(int argc, const char **argv, int level, int orbit_at_level, long int *candidates, int nb_candidates, groups::strong_generators *Strong_gens_previous, groups::strong_generators *&strong_gens, int verbose_level)
poset_classification::poset_classification * Gen
Definition: tl_geometry.h:508
poset_classification::poset_classification_control * Control_stab
Definition: tl_geometry.h:538
poset_classification::poset_classification * Gen2
Definition: tl_geometry.h:544
void init_secondary(int argc, const char **argv, long int *candidates, int nb_candidates, groups::strong_generators *Strong_gens_previous, int verbose_level)
int(* extra_test_func)(void *, int len, long int *S, void *extra_test_func_data, int verbose_level)
Definition: tl_geometry.h:485
int test_set_secondary(int len, long int *S, int verbose_level)
poset_classification::poset_classification_control * Control1
Definition: tl_geometry.h:506
void init(int s, int n, int q, std::string &poly_q, std::string &poly_Q, int depth, int f_identify, int verbose_level)
poset_classification::poset_classification * Gen_stab
Definition: tl_geometry.h:540
poset_classification::poset_with_group_action * Poset2
Definition: tl_geometry.h:543
poset_classification::poset_with_group_action * Poset_stab
Definition: tl_geometry.h:539
void compute_intersection_types_at_level(int level, int &nb_nodes, int *&Intersection_dimensions, int verbose_level)
void compute_stabilizer_of_linear_set(int argc, const char **argv, int level, int orbit_at_level, groups::strong_generators *&strong_gens, int verbose_level)
void classify_secondary(int argc, const char **argv, int level, int orbit_at_level, groups::strong_generators *strong_gens, int verbose_level)
poset_classification::poset_with_group_action * Poset1
Definition: tl_geometry.h:507
void do_compute_stabilizer(int level, int orbit_at_level, long int *candidates, int nb_candidates, groups::strong_generators *&strong_gens, int verbose_level)
description of a problem of classification of ovoids in orthogonal spaces
Definition: tl_geometry.h:602
poset_classification::poset_classification_control * Control
Definition: tl_geometry.h:607
classification of ovoids in orthogonal spaces
Definition: tl_geometry.h:631
poset_classification::poset_classification * gen
Definition: tl_geometry.h:641
void compute_coloring(long int *starter, int starter_size, long int *candidates, int nb_points, int *point_color, int &nb_colors_used, int verbose_level)
void print(std::ostream &ost, long int *S, int len)
poset_classification::poset_with_group_action * Poset
Definition: tl_geometry.h:640
void create_graph(orbiter_kernel_system::orbiter_data_file *ODF, int orbit_idx, long int *candidates, int nb_candidates, graph_theory::colored_graph *&CG, int verbose_level)
void early_test_func(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
void init(ovoid_classify_description *Descr, groups::linear_group *LG, int &verbose_level)
void make_graphs(orbiter_kernel_system::orbiter_data_file *ODF, std::string &prefix, int f_split, int split_r, int split_m, int f_lexorder_test, const char *fname_mask, int verbose_level)
void make_one_graph(orbiter_kernel_system::orbiter_data_file *ODF, std::string &prefix, int orbit_idx, int f_lexorder_test, graph_theory::colored_graph *&CG, int verbose_level)
the polar space arising from an orthogonal geometry
Definition: tl_geometry.h:709
poset_classification::poset_classification_control * Control
Definition: tl_geometry.h:731
void init_group(int *group_generator_data, int group_generator_size, int f_group_order_target, const char *group_order_target, int verbose_level)
Definition: polar.cpp:117
void init(actions::action *A, orthogonal_geometry::orthogonal *O, int epsilon, int n, int k, field_theory::finite_field *F, int depth, int verbose_level)
Definition: polar.cpp:138
poset_classification::poset_with_group_action * Poset
Definition: tl_geometry.h:732
orthogonal_geometry::orthogonal * O
Definition: tl_geometry.h:724
void compute_cosets(int depth, int orbit_idx, int verbose_level)
Definition: polar.cpp:303
void dual_polar_graph(int depth, int orbit_idx, ring_theory::longinteger_object *&Rank_table, int &nb_maximals, int verbose_level)
Definition: polar.cpp:425
void init2(int depth, int verbose_level)
Definition: polar.cpp:180
void init_group_by_base_images(int *group_generator_data, int group_generator_size, int f_group_order_target, const char *group_order_target, int verbose_level)
Definition: polar.cpp:95
void list_whole_orbit(int depth, int orbit_idx, int f_limit, int limit)
Definition: polar.cpp:1170
void orbit_element_rank(int &orbit_idx, long int &rank, long int *set, int verbose_level)
Definition: polar.cpp:1153
void get_orbit_length(int orbit_idx, ring_theory::longinteger_object &length)
Definition: polar.cpp:1135
void show_stabilizer(int depth, int orbit_idx, int verbose_level)
Definition: polar.cpp:686
poset_classification::poset_classification * Gen
Definition: tl_geometry.h:733
void get_stabilizer(int orbit_idx, data_structures_groups::group_container &G, ring_theory::longinteger_object &go_G)
Definition: polar.cpp:1127
void compute_orbits(int t0, int verbose_level)
Definition: polar.cpp:269
void test_if_closed_under_cosets(int *S, int len, int *candidates, int nb_candidates, int *good_candidates, int &nb_good_candidates, int verbose_level)
Definition: polar.cpp:908
void orbit_element_unrank(int orbit_idx, long int rank, long int *set, int verbose_level)
Definition: polar.cpp:1146
void test_if_in_perp(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
Definition: polar.cpp:851
classification of blocking sets in projective planes
Definition: tl_geometry.h:798
int recursive_search_for_blocking_set(int input_no, int starter_level, int level, int verbose_level)
poset_classification::poset_classification * gen
Definition: tl_geometry.h:804
int test_blocking_set_upper_bound_only(int len, long int *S, int verbose_level)
int test_blocking_set(int len, long int *S, int verbose_level)
void init(geometry::incidence_structure *Inc, actions::action *A, int verbose_level)
void search_for_blocking_set(int input_no, int level, int f_all, int verbose_level)
poset_classification::poset_classification_control * Control
Definition: tl_geometry.h:802
poset_classification::poset_with_group_action * Poset
Definition: tl_geometry.h:803
the Singer cycle in a finite projective geometry
Definition: tl_geometry.h:853
void init(int n, field_theory::finite_field *F, actions::action *A, actions::action *A2, int verbose_level)
data_structures_groups::vector_ge * nice_gens
Definition: tl_geometry.h:862
apps_combinatorics::tactical_decomposition * T
Definition: tl_geometry.h:878
classification of tensors under the wreath product group
Definition: tl_geometry.h:899
void init(field_theory::finite_field *F, groups::linear_group *LG, int verbose_level)
poset_classification::poset_with_group_action * Poset
Definition: tl_geometry.h:921
void early_test_func(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
void report(int f_poset_classify, int poset_classify_depth, graphics::layered_graph_draw_options *draw_options, int verbose_level)
poset_classification::poset_classification * Gen
Definition: tl_geometry.h:922
void classify_poset(int depth, poset_classification::poset_classification_control *Control, int verbose_level)
poset_classification::poset_classification_control * Control
Definition: tl_geometry.h:920
void set_stabilizer_projective_space(projective_geometry::projective_space_with_action *PA, int intermediate_subset_size, std::string &fname_mask, int nb, std::string &column_label, std::string &fname_out, int verbose_level)
void report_decomposition_by_single_automorphism(projective_geometry::projective_space_with_action *PA, int *Elt, std::ostream &ost, std::string &fname_base, int verbose_level)
void report_decomposition_by_group(projective_geometry::projective_space_with_action *PA, groups::strong_generators *SG, std::ostream &ost, std::string &fname_base, int verbose_level)
projective space PG(n,q) with automorphism group PGGL(n+1,q)
to classify spreads of PG(k-1,q) in PG(n-1,q) where k divides n
Definition: spreads.h:106
the orbiter library for the classification of combinatorial objects