Orbiter 2022
Combinatorial Objects
ovoid_classify.cpp
Go to the documentation of this file.
1// ovoid_classify.cpp
2//
3// Anton Betten
4// May 16, 2011
5//
6//
7//
8// pulled out of ovoid: Jul 30, 2018
9//
10
11#include "orbiter.h"
12
13using namespace std;
14
15namespace orbiter {
16namespace layer5_applications {
17namespace apps_geometry {
18
19
20static void ovoid_classify_early_test_func_callback(long int *S, int len,
21 long int *candidates, int nb_candidates,
22 long int *good_candidates, int &nb_good_candidates,
23 void *data, int verbose_level);
24static void callback_ovoid_print_set(std::ostream &ost, int len, long int *S, void *data);
25
26
27
28
30{
31 Descr = NULL;
32 LG = NULL;
33
34 Poset = NULL;
35 gen = NULL;
36 A = NULL;
37 O = NULL;
38
39 u = NULL;
40 v = NULL;
41 w = NULL;
42 tmp1 = NULL;
43
44 K = NULL;
45 color_table = NULL;
46
47 Pts = NULL;
48 Candidates = NULL;
49
50 nb_sol = 0;
51 nb_colors = 0;
52 N = 0;
53 m = 0;
54}
55
57{
58 int f_v = FALSE;
59
60 if (f_v) {
61 cout << "ovoid_classify::~ovoid_classify" << endl;
62 }
63 if (Poset) {
65 }
66 if (A) {
68 }
69 if (K) {
71 }
72 if (u) {
73 FREE_int(u);
74 }
75 if (v) {
76 FREE_int(v);
77 }
78 if (w) {
79 FREE_int(w);
80 }
81 if (tmp1) {
83 }
84 if (color_table) {
86 }
87 if (Pts) {
89 }
90 if (Candidates) {
92 }
93
94 if (f_v) {
95 cout << "ovoid_classify::~ovoid_classify finished" << endl;
96 }
97
98}
99
102 int &verbose_level)
103{
104 int f_v = (verbose_level >= 1);
105 int f_vv = (verbose_level >= 2);
106 //int f_vvv = (verbose_level >= 4);
107
108 //int f_semilinear;
109 //int f_basis = TRUE;
112
115
116 A = LG->A2;
118
119
120 u = NEW_int(Descr->d);
121 v = NEW_int(Descr->d);
122 w = NEW_int(Descr->d);
123 tmp1 = NEW_int(Descr->d);
124
125 int p, h;
126 NT.is_prime_power(LG->F->q, p, h);
127
128#if 0
129 if (h > 1) {
130 f_semilinear = TRUE;
131 }
132 else {
133 f_semilinear = FALSE;
134 }
135#endif
136
137
138 //f_semilinear = TRUE;
139
140
141 //sprintf(prefix, "ovoid_Q%d_%d_%d", epsilon, d - 1, q);
142 //sprintf(prefix_with_directory, "%s", prefix);
143
144 //F->init_override_polynomial(q, override_poly, 0);
145
146#if 0
147 int f_siegel = TRUE;
148 int f_reflection = TRUE;
149 int f_similarity = TRUE;
150 int f_semisimilarity = TRUE;
151 action_global AG;
152 AG.set_orthogonal_group_type(f_siegel, f_reflection,
153 f_similarity, f_semisimilarity);
154
155
156 cout << "ovoid_classify::init "
157 "d=" << Descr->d << endl;
158 cout << "ovoid_classify::init "
159 "f_siegel=" << f_siegel << endl;
160 cout << "ovoid_classify::init "
161 "f_reflection=" << f_reflection << endl;
162 cout << "ovoid_classify::init "
163 "f_similarity=" << f_similarity << endl;
164 cout << "ovoid_classify::init "
165 "f_semisimilarity=" << f_semisimilarity << endl;
166
167
169 TRUE /* f_on_points */,
170 FALSE /* f_on_lines */,
171 FALSE /* f_on_points_and_lines */,
172 f_semilinear, f_basis, verbose_level);
173
174#endif
175
177
178 AO = A->G.AO;
179 O = AO->O;
180
181 N = O->nb_points;
182
183 if (f_vv) {
184 cout << "The finite field is:" << endl;
185 O->F->print();
186 }
187
188 if (f_v) {
189 cout << "nb_points=" << O->nb_points << endl;
190 cout << "nb_lines=" << O->nb_lines << endl;
191 cout << "alpha=" << O->alpha << endl;
192 }
193
194 Pts = NEW_int(N * Descr->d);
195 Candidates = NEW_int(N * Descr->d);
196
197
198
199 //A->Strong_gens->print_generators_even_odd();
200
201#if 0
202
203 if (f_max_depth) {
204 depth = max_depth;
205 }
206 else {
207 if (epsilon == 1) {
208 depth = NT.i_power_j(q, m - 1) + 1;
209 }
210 else if (epsilon == -1) {
211 depth = NT.i_power_j(q, m + 1) + 1;
212 }
213 else if (epsilon == 0) {
214 depth = NT.i_power_j(q, m) + 1;
215 }
216 else {
217 cout << "epsilon must be 0, 1, or -1" << endl;
218 exit(1);
219 }
220 }
221
222 //Control->f_depth = TRUE;
223 //Control->depth = depth;
224
225
226 if (f_v) {
227 cout << "depth = " << depth << endl;
228 }
229#endif
230
233 A->Strong_gens,
234 verbose_level);
235
237 ovoid_classify_early_test_func_callback,
238 this /* void *data */,
239 verbose_level);
240
242 Poset->print_function = callback_ovoid_print_set;
243 Poset->print_function_data = (void *) this;
244
245#if 0
247 depth /* sz */,
248 verbose_level - 1);
249#endif
250
251
252
253#if 0
254 //sprintf(gen->fname_base, "ovoid_Q%d_%d_%d", epsilon, n, q);
255
256 if (f_v) {
257 cout << "fname_base = " << gen->fname_base << endl;
258 }
259#endif
260
261
262
263 if (Descr->epsilon == 1 && Descr->d == 6) {
264 if (f_v) {
265 cout << "allocating Klein correspondence" << endl;
266 }
268
269 if (f_v) {
270 cout << "before K->init" << endl;
271 }
272 int i, j, c, fxy;
273 int B[8];
274 int pivots[2] = {2,3};
275
276 K->init(LG->F, O, verbose_level);
278 nb_colors = Gg.nb_AG_elements(2, LG->F->q);
279 O->unrank_point(u, 1, 0, 0);
280 for (i = 0; i < N; i++) {
281 O->unrank_point(v, 1, i, 0);
282 fxy = O->evaluate_bilinear_form(u, v, 1);
283 if (i && fxy != 0) {
284 j = K->point_on_quadric_to_line(i, 0 /* verbose_level */);
285 K->P3->Grass_lines->unrank_lint_here(B, j, 0 /* verbose_level */);
287 FALSE /* f_special */,
288 TRUE /* f_complete */,
289 pivots,
290 2 /*nb_pivots*/,
291 2 /*m*/, 4 /* n*/,
292 0 /*verbose_level*/);
293 if (B[2] != 1 || B[3] != 0 || B[6] != 0 || B[7] != 1) {
294 cout << "The shape of B is wrong" << endl;
295 exit(1);
296 }
297 c = Gg.AG_element_rank(LG->F->q, B, 1, 2);
298 }
299 else {
300 c = -1;
301 }
302 color_table[i] = c;
303 }
304 cout << "nb_colors = " << nb_colors << endl;
305 cout << "color table:" << endl;
306 for (i = 0; i < N; i++) {
307 cout << i << " / " << N << " : ";
308 Int_vec_print(cout, v, Descr->d);
309
310 O->unrank_point(v, 1, i, 0);
311 fxy = O->evaluate_bilinear_form(u, v, 1);
312 if (i && fxy != 0) {
313 j = K->point_on_quadric_to_line(i, 0 /* verbose_level */);
314 K->P3->Grass_lines->unrank_lint_here(B, j, 0 /* verbose_level */);
316 FALSE /* f_special */,
317 TRUE /* f_complete */,
318 pivots,
319 2 /*nb_pivots*/,
320 2 /*m*/, 4 /* n*/,
321 0 /*verbose_level*/);
322 cout << " : " << endl;
323 Int_matrix_print(B, 2, 4);
324 }
325 cout << " : " << color_table[i] << endl;
326 }
327
328 }
329 if (f_v) {
330 cout << "init finished" << endl;
331 }
332}
333
334
335
336void ovoid_classify::early_test_func(long int *S, int len,
337 long int *candidates, int nb_candidates,
338 long int *good_candidates, int &nb_good_candidates,
339 int verbose_level)
340{
341 int f_v = (verbose_level >= 1);
342 int f_vv = (verbose_level >= 2);
343 int i, j;
344 int *v1, *v2;
345 int fxy;
346
347 if (f_v) {
348 cout << "ovoid_classify::early_test_func checking set ";
349 Lint_vec_print(cout, S, len);
350 cout << endl;
351 cout << "candidate set of size "
352 << nb_candidates << ":" << endl;
353 Lint_vec_print(cout, candidates, nb_candidates);
354 cout << endl;
355 if (f_vv) {
356 for (i = 0; i < nb_candidates; i++) {
357 O->unrank_point(u, 1, candidates[i],
358 0/*verbose_level - 4*/);
359 cout << "candidate " << i << "="
360 << candidates[i] << ": ";
361 Int_vec_print(cout, u, Descr->d);
362 cout << endl;
363 }
364 }
365 }
366 for (i = 0; i < len; i++) {
367 O->unrank_point(Pts + i * Descr->d, 1, S[i], 0/*verbose_level - 4*/);
368 }
369 for (i = 0; i < nb_candidates; i++) {
370 O->unrank_point(Candidates + i * Descr->d, 1, candidates[i],
371 0/*verbose_level - 4*/);
372 }
373
374 if (len == 0) {
375 Lint_vec_copy(candidates, good_candidates, nb_candidates);
376 nb_good_candidates = nb_candidates;
377 }
378 else {
379 nb_good_candidates = 0;
380
381 if (f_vv) {
382 cout << "ovoid_classify::early_test_func "
383 "before testing" << endl;
384 }
385 for (j = 0; j < nb_candidates; j++) {
386
387
388 if (f_vv) {
389 cout << "ovoid_generator::early_test_func "
390 "testing " << j << " / "
391 << nb_candidates << endl;
392 }
393
394 v1 = Pts + (len - 1) * Descr->d;
395 v2 = Candidates + j * Descr->d;
396
397
398 fxy = O->evaluate_bilinear_form(v1, v2, 1);
399
400
401 if (fxy) {
402 good_candidates[nb_good_candidates++] = candidates[j];
403 }
404 } // next j
405 } // else
406}
407
408void ovoid_classify::print(ostream &ost, long int *S, int len)
409{
410 int i;
411
412 for (i = 0; i < len; i++) {
413 for (i = 0; i < len; i++) {
414 O->unrank_point(u, 1, S[i], 0);
415 Int_vec_print(ost, u, Descr->d - 1);
416 ost << endl;
417 }
418 }
419}
420
422 std::string &prefix,
423 int f_split, int split_r, int split_m,
424 int f_lexorder_test,
425 const char *fname_mask,
426 int verbose_level)
427{
428 int orbit_idx;
429 int f_v = (verbose_level >= 1);
430 int f_v3 = (verbose_level >= 3);
431 string fname_graph;
432 char str[1000];
433 int level;
435
436 if (f_v) {
437 cout << "ovoid_classify::make_graphs" << endl;
438 }
439
440 level = ODF->set_sizes[0];
441
442 for (orbit_idx = 0; orbit_idx < ODF->nb_cases; orbit_idx++) {
443
444 if (f_split) {
445 if ((orbit_idx % split_m) == split_r) {
446 continue;
447 }
448 }
449 cout << orbit_idx << " / " << ODF->nb_cases << " : ";
450 Lint_vec_print(cout, ODF->sets[orbit_idx],
451 ODF->set_sizes[orbit_idx]);
452 cout << " : " << ODF->Ago_ascii[orbit_idx]
453 << " : " << ODF->Aut_ascii[orbit_idx] << endl;
454
455 sprintf(str, fname_mask, orbit_idx);
456 fname_graph.assign(str);
457
458 long int *candidates;
459 int nb_candidates;
460
461#if 0
462 generator_read_candidates_of_orbit(
463 candidates_fname, orbit_idx /* orbit_at_level */,
464 candidates, nb_candidates, 0 /* verbose_level */);
465#endif
466
467 cout << "ovoid_classify::make_graphs before read_candidates_"
468 "for_one_orbit_from_file prefix=" << prefix << endl;
470 level,
471 orbit_idx,
472 level - 1 /* level_of_candidates_file */,
473 ODF->sets[orbit_idx],
474 ovoid_classify_early_test_func_callback,
475 this,
476 candidates,
477 nb_candidates,
478 verbose_level);
479
480
481
482 cout << "With " << nb_candidates << " live points: ";
483 Lint_vec_print(cout, candidates, nb_candidates);
484 cout << endl;
485
486
487
488 if (strcmp(ODF->Ago_ascii[orbit_idx], "1") != 0) {
489
490
491 int max_starter;
492
493
496
498 SG->init(A);
500 ODF->Aut_ascii[orbit_idx], 0 /* verbose_level */);
501 SG->group_order(go);
502
503 max_starter = ODF->sets[orbit_idx]
504 [ODF->set_sizes[orbit_idx] - 1];
505
506 if (f_v) {
507 cout << "max_starter=" << max_starter << endl;
508 }
509
510
511
512 if (f_lexorder_test) {
513 int nb_candidates2;
514
515 if (f_v) {
516 cout << "ovoid_classify::make_graphs "
517 "Case " << orbit_idx << " / "
518 << ODF->nb_cases
519 << " Before lexorder_test" << endl;
520 }
521 A->lexorder_test(candidates, nb_candidates,
522 nb_candidates2,
523 SG->gens, max_starter, 0 /*verbose_level - 3*/);
524 if (f_v) {
525 cout << "ovoid_classify::make_graphs "
526 "After lexorder_test nb_candidates="
527 << nb_candidates2 << " eliminated "
528 << nb_candidates - nb_candidates2
529 << " candidates" << endl;
530 }
531 nb_candidates = nb_candidates2;
532 }
533 }
534
535
536
537
538
539
540
542
543 create_graph(ODF,
544 orbit_idx,
545 candidates, nb_candidates,
546 CG,
547 verbose_level);
548
549 CG->save(fname_graph, 0);
550
551 if (f_v3) {
552 CG->print();
553 //CG->print_points_and_colors();
554 }
555
556 FREE_OBJECT(CG);
557 FREE_lint(candidates);
558
559 }
560 if (f_v) {
561 cout << "ovoid_classify::make_graphs done" << endl;
562 }
563}
564
566 std::string &prefix,
567 int orbit_idx,
568 int f_lexorder_test,
570 int verbose_level)
571{
572 int f_v = (verbose_level >= 1);
573 int level;
575
576 if (f_v) {
577 cout << "ovoid_classify::make_one_graph" << endl;
578 }
579
580 level = ODF->set_sizes[0];
581
582
583 long int *candidates;
584 int nb_candidates;
585
586
587 cout << "ovoid_classify::make_one_graph before read_candidates_"
588 "for_one_orbit_from_file prefix=" << prefix << endl;
590 level, orbit_idx, level - 1 /* level_of_candidates_file */,
591 ODF->sets[orbit_idx],
592 ovoid_classify_early_test_func_callback,
593 this,
594 candidates,
595 nb_candidates,
596 verbose_level);
597
598
599
600 cout << "With " << nb_candidates << " live points." << endl;
601#if 0
602 if (f_v3) {
603 int_vec_print(cout, candidates, nb_candidates);
604 cout << endl;
605 }
606#endif
607
608
609 if (strcmp(ODF->Ago_ascii[orbit_idx], "1") != 0) {
610
611
612 int max_starter;
613
614
617
619 SG->init(A);
620 SG->decode_ascii_coding(ODF->Aut_ascii[orbit_idx],
621 0 /* verbose_level */);
622 SG->group_order(go);
623
624 max_starter = ODF->sets[orbit_idx][ODF->set_sizes[orbit_idx] - 1];
625
626 if (f_v) {
627 cout << "max_starter=" << max_starter << endl;
628 }
629
630
631
632 if (f_lexorder_test) {
633 int nb_candidates2;
634
635 if (f_v) {
636 cout << "ovoid_classify::make_graphs Case " << orbit_idx
637 << " / " << ODF->nb_cases
638 << " Before lexorder_test" << endl;
639 }
640 A->lexorder_test(candidates, nb_candidates, nb_candidates2,
641 SG->gens, max_starter, 0 /*verbose_level - 3*/);
642 if (f_v) {
643 cout << "ovoid_classify::make_graphs After "
644 "lexorder_test nb_candidates=" << nb_candidates2
645 << " eliminated " << nb_candidates - nb_candidates2
646 << " candidates" << endl;
647 }
648 nb_candidates = nb_candidates2;
649 }
650 }
651
652
653
654
655
656
657
658
659 create_graph(ODF,
660 orbit_idx,
661 candidates, nb_candidates,
662 CG,
663 verbose_level);
664
665
666#if 0
667 if (f_v3) {
668 CG->print();
669 //CG->print_points_and_colors();
670 }
671#endif
672
673 FREE_lint(candidates);
674
675
676 if (f_v) {
677 cout << "ovoid_classify::make_one_graph done" << endl;
678 }
679}
680
682 int orbit_idx,
683 long int *candidates, int nb_candidates,
685 int verbose_level)
686{
687 int f_v = (verbose_level >= 1);
688 long int i, j, k;
689 int fxy;
690 int nb_points = nb_candidates;
691 int nb_colors = 1;
692 int starter_size;
693 int *point_color = NULL;
694 int *Pts;
695 long int L;
696 int nb_colors_used;
697
698 if (f_v) {
699 cout << "ovoid_classify::create_graph for orbit_idx = "
700 << orbit_idx << " nb_points = " << nb_points << endl;
701 }
702
703 starter_size = ODF->set_sizes[orbit_idx];
704
706
707 Pts = NEW_int(nb_points * Descr->d);
708 for (i = 0; i < nb_points; i++) {
709 O->unrank_point(Pts + i * Descr->d, 1, candidates[i], 0);
710 }
711
712 L = ((long int) nb_points * ((long int) nb_points - 1)) >> 1;
713
715 Bitvec->allocate(L);
716
717 k = 0;
718 for (i = 0; i < nb_points; i++) {
719 for (j = i + 1; j < nb_points; j++, k++) {
720 fxy = O->evaluate_bilinear_form(Pts + i * Descr->d, Pts + j * Descr->d, 1);
721 if (fxy != 0) {
722 Bitvec->m_i(k, 1);
723 }
724 }
725 }
726
727 point_color = NEW_int(nb_points);
728 for (i = 0; i < nb_points; i++) {
729 point_color[i] = 0;
730 }
731
732 if (Descr->epsilon == 1 && Descr->d == 6) {
733 compute_coloring(ODF->sets[orbit_idx], starter_size,
734 candidates, nb_points, point_color,
735 nb_colors_used, verbose_level);
736 // check if coloring is proper:
737 k = 0;
738 for (i = 0; i < nb_points; i++) {
739 for (j = i + 1; j < nb_points; j++, k++) {
740 if (Bitvec->s_i(k)) {
741 if (point_color[i] == point_color[j]) {
742 cout << "the coloring is not proper" << endl;
743 cout << "point " << i << " has color "
744 << point_color[i] << endl;
745 cout << "point " << j << " has color "
746 << point_color[j] << endl;
747 exit(1);
748 }
749 }
750 }
751 }
752 }
753 else {
754 nb_colors_used = nb_colors;
755 }
756
757 char str[1000];
758
759 sprintf(str, "graph_ovoid_%d_%d_%d",
760 LG->F->q, starter_size, orbit_idx);
761
762 string label, label_tex;
763 label.assign(str);
764 label_tex.assign(str);
765
767
768 CG->init(nb_points, nb_colors_used, 1,
769 point_color,
770 Bitvec, TRUE /* f_ownership_of_bitvec */,
771 label, label_tex,
772 verbose_level - 2);
773 // the adjacency becomes part of the colored_graph object
774
775 Lint_vec_copy(candidates, CG->points, nb_candidates);
776 CG->init_user_data(ODF->sets[orbit_idx],
777 starter_size, verbose_level - 2);
778
779 CG->fname_base.assign(label);
780
781 FREE_int(Pts);
782 FREE_int(point_color);
783 // don't free bitvector_adjacency,
784 // it has become part of the graph object
785 if (f_v) {
786 cout << "ovoid_classify::create_graph done" << endl;
787 }
788}
789
791 long int *starter, int starter_size,
792 long int *candidates, int nb_points,
793 int *point_color, int &nb_colors_used,
794 int verbose_level)
795{
796 int f_v (verbose_level >= 1);
797 int i, j, c, pos;
799
800 if (f_v) {
801 cout << "ovoid_classify::compute_coloring" << endl;
802 }
803 if (starter_size < 1) {
804 cout << "starter_size < 1" << endl;
805 exit(1);
806 }
807 if (starter[0] != 0) {
808 cout << "starter[0] != 0" << endl;
809 exit(1);
810 }
811 int *colors;
812 int *color_pos;
813
814 colors = NEW_int(nb_colors);
815 color_pos = NEW_int(nb_colors);
816 cout << "starter:";
817 Lint_vec_print(cout, starter, starter_size);
818 cout << endl;
819 for (i = 1; i < starter_size; i++) {
820 c = color_table[starter[i]];
821 colors[i - 1] = c;
822 if (c == -1) {
823 cout << "c == -1 for starter[i]" << endl;
824 exit(1);
825 }
826 }
827 Sorting.int_vec_heapsort(colors, starter_size - 1);
828 cout << "colors:";
829 Int_vec_print(cout, colors, starter_size - 1);
830 cout << endl;
831 nb_colors_used = nb_colors - (starter_size - 1);
832 orbiter_kernel_system::Orbiter->Int_vec->complement(colors, nb_colors, starter_size - 1);
833 for (i = 0; i < nb_colors; i++) {
834 c = colors[i];
835 color_pos[c] = i;
836 }
837 for (i = 0; i < nb_points; i++) {
838 j = candidates[i];
839 c = color_table[j];
840 if (c == -1) {
841 cout << "c == -1" << endl;
842 exit(1);
843 }
844 pos = color_pos[c];
845 if (pos < starter_size - 1) {
846 cout << "pos < starter_size - 1" << endl;
847 exit(1);
848 }
849 point_color[i] = pos - (starter_size - 1);
850 }
851 FREE_int(colors);
852 FREE_int(color_pos);
853 if (f_v) {
854 cout << "ovoid_classify::compute_coloring done" << endl;
855 }
856}
857
858
859static void ovoid_classify_early_test_func_callback(long int *S, int len,
860 long int *candidates, int nb_candidates,
861 long int *good_candidates, int &nb_good_candidates,
862 void *data, int verbose_level)
863{
864 ovoid_classify *Gen = (ovoid_classify *) data;
865 int f_v = (verbose_level >= 1);
866
867 if (f_v) {
868 cout << "ovoid_classify_early_test_func_callback for set ";
869 Lint_vec_print(cout, S, len);
870 cout << endl;
871 }
872 Gen->early_test_func(S, len,
873 candidates, nb_candidates,
874 good_candidates, nb_good_candidates,
875 verbose_level - 2);
876 if (f_v) {
877 cout << "ovoid_classify_early_test_func_callback done" << endl;
878 }
879}
880
881static void callback_ovoid_print_set(ostream &ost, int len, long int *S, void *data)
882{
883 ovoid_classify *Gen = (ovoid_classify *) data;
884
885 //print_vector(ost, S, len);
886 Gen->print(ost, S, len);
887}
888
889
890
891
892}}}
893
compact storage of 0/1-data as bitvectors
a collection of functions related to sorted vectors
various functions related to geometries
Definition: geometry.h:721
long int AG_element_rank(int q, int *v, int stride, int len)
void unrank_lint_here(int *Mtx, long int rk, int verbose_level)
Definition: grassmann.cpp:269
the Klein correspondence between lines in PG(3,q) and points on the Klein quadric
Definition: geometry.h:1353
void init(field_theory::finite_field *F, orthogonal_geometry::orthogonal *O, int verbose_level)
long int point_on_quadric_to_line(long int point_rk, int verbose_level)
void init_user_data(long int *data, int data_size, int verbose_level)
void save(std::string &fname, int verbose_level)
void init(int nb_points, int nb_colors, int nb_colors_per_vertex, int *colors, data_structures::bitvector *Bitvec, int f_ownership_of_bitvec, std::string &label, std::string &label_tex, int verbose_level)
int Gauss_int_with_given_pivots(int *A, int f_special, int f_complete, int *pivots, int nb_pivots, int m, int n, int verbose_level)
void read_candidates_for_one_orbit_from_file(std::string &prefix, int level, int orbit_at_level, int level_of_candidates_file, long int *S, void(*early_test_func_callback)(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, void *data, int verbose_level), void *early_test_func_callback_data, long int *&candidates, int &nb_candidates, int verbose_level)
Definition: file_io.cpp:254
void unrank_point(int *v, int stride, long int rk, int verbose_level)
a class to represent arbitrary precision integers
Definition: ring_theory.h:366
groups::strong_generators * Strong_gens
Definition: actions.h:130
void init_orthogonal_group(int epsilon, int n, field_theory::finite_field *F, int f_on_points, int f_on_lines, int f_on_points_and_lines, int f_semilinear, int f_basis, int verbose_level)
void lexorder_test(long int *set, int set_sz, int &set_sz_after_test, data_structures_groups::vector_ge *gens, int max_starter, int verbose_level)
Definition: action.cpp:2438
creates a linear group from command line arguments using linear_group_description
Definition: groups.h:244
a strong generating set for a permutation group with respect to a fixed action
Definition: groups.h:1703
void decode_ascii_coding(char *ascii_coding, int verbose_level)
data_structures_groups::vector_ge * gens
Definition: groups.h:1708
void group_order(ring_theory::longinteger_object &go)
void initialize_and_allocate_root_node(poset_classification_control *PC_control, poset_with_group_action *Poset, int depth, int verbose_level)
void init_subset_lattice(actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, int verbose_level)
void add_testing_without_group(void(*func)(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, void *data, int verbose_level), void *data, int verbose_level)
void(* print_function)(std::ostream &ost, int len, long int *S, void *data)
description of a problem of classification of ovoids in orthogonal spaces
Definition: tl_geometry.h:602
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)
#define Lint_vec_copy(A, B, C)
Definition: foundations.h:694
#define FREE_int(p)
Definition: foundations.h:640
#define NEW_OBJECT(type)
Definition: foundations.h:638
#define Lint_vec_print(A, B, C)
Definition: foundations.h:686
#define FREE_OBJECT(p)
Definition: foundations.h:651
#define NEW_int(n)
Definition: foundations.h:625
#define Int_matrix_print(A, B, C)
Definition: foundations.h:707
#define TRUE
Definition: foundations.h:231
#define FALSE
Definition: foundations.h:234
#define FREE_lint(p)
Definition: foundations.h:642
#define Int_vec_print(A, B, C)
Definition: foundations.h:685
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects
induced_actions::action_on_orthogonal * AO