15namespace layer5_applications {
16namespace apps_combinatorics {
30 std::string &problem_label,
35 int f_v = (verbose_level >= 1);
38 cout <<
"combinatorics_global::create_design_table" << endl;
43 cout <<
"combinatorics_global::create_design_table design:" << endl;
50 cout <<
"The stabilizer is generated by:" << endl;
61 cout <<
"combinatorics_global::create_design_table before T->init" << endl;
68 cout <<
"combinatorics_global::create_design_table after T->init" << endl;
74 cout <<
"combinatorics_global::create_design_table done" << endl;
81 std::string &problem_label,
86 int f_v = (verbose_level >= 1);
89 cout <<
"combinatorics_global::load_design_table" << endl;
103 cout <<
"combinatorics_global::load_design_table design:" << endl;
104 cout <<
"$$" << endl;
107 cout <<
"$$" << endl;
110 cout <<
"The stabilizer is generated by:" << endl;
121 cout <<
"combinatorics_global::load_design_table before T->init_from_file" << endl;
126 Gens, verbose_level);
128 cout <<
"combinatorics_global::load_design_table after T->init_from_file" << endl;
132 cout <<
"combinatorics_global::load_design_table done" << endl;
140 std::string &input_prefix,
141 std::string &design_tables_prefix,
142 std::string &group_label,
143 std::string &group_order,
144 std::string &generators_data,
152 cout <<
"computing orbit:" << endl;
153 SetOrb->init(DC->A, DC->A2,
154 DC->set, DC->sz, DC->A->Strong_gens->gens,
156 cout <<
"computing orbit done" << endl;
163 int f_lexorder_test =
TRUE;
168 sprintf(str,
"LS_%s", DC->prefix);
169 base_fname.assign(str);
172 input_prefix, base_fname,
175 design_tables_prefix,
181 LS->init_designs(SetOrb, verbose_level);
185 if (f_read_classification) {
186 cout <<
"reading classification at level "
187 << read_classification_level << endl;
189 orbit_transversal *T;
192 read_classification_level, verbose_level);
194 cout <<
"computing and reporting ago distribution:" << endl;
196 T->report_ago_distribution(cout);
200 else if (f_lift_this) {
201 cout <<
"lifting a given set" << endl;
206 int_vec_scan(lift_this_set, lift_starter, lift_starter_sz);
207 cout <<
"lift_starter = ";
208 int_vec_print(cout, lift_starter, lift_starter_sz);
215 cout <<
"lifting a given set with a given group" << endl;
219 long int *lift_starter;
223 lint_vec_scan(lift_this_with_group_set, lift_starter, lift_starter_sz);
225 cout <<
"lift_starter = ";
226 lint_vec_print(cout, lift_starter, lift_starter_sz);
236 cout <<
"gens_data = ";
241 nb_elements = gens_data_sz / A->make_element_size;
243 strong_generators *SG;
244 vector_ge *nice_gens;
249 cout <<
"before SG->init_from_data_with_target_go_ascii" << endl;
250 SG->init_from_data_with_target_go_ascii(A,
252 nb_elements, A->make_element_size,
258 strong_generators *gens_N;
263 string fname_magma_prefix;
265 sprintf(str,
"%s_normalizer", A->label);
266 fname_magma_prefix.assign(str);
268 if (!A->f_has_sims) {
269 cout <<
"A does not have sims" << endl;
273 H = SG->create_sims(verbose_level - 2);
274 A->normalizer_using_MAGMA(fname_magma_prefix,
275 G, H, gens_N, verbose_level);
276 cout <<
"generators for the normalizer are:" << endl;
277 gens_N->print_generators_tex(cout);
281 orbit_length = SG->group_order_as_lint();
283 cout <<
"The group is generated by the following strong generating set:" << endl;
284 SG->print_elements_latex_ost(cout);
286 long int *Large_sets;
289 long int *lift_starter = NULL;
290 string solution_file_name;
291 solution_file_name.assign(
"");
293 LS->process_starter_case(lift_starter, 0 ,
295 group_label, orbit_length,
296 FALSE , solution_file_name,
297 Large_sets, nb_large_sets,
300 cout <<
"processing starter case done" << endl;
305 cout <<
"lifting a given set with a given group done" << endl;
308 else if (f_lift_case) {
309 cout <<
"lifting a single case" << endl;
311 set_and_stabilizer *Rep;
314 lift_case_level, lift_case, verbose_level);
316 cout <<
"the set in case " << lift_case <<
" is:" << endl;
317 Rep->print_set_tex(cout);
320 cout <<
"The designs are:" << endl;
321 for (i = 0; i < Rep->sz; i++) {
325 cout << i <<
" & " << a <<
" & ";
330 cout <<
"The blocks of the designs are:" << endl;
335 for (i = 0; i < Rep->sz; i++) {
339 cout <<
"design " << i <<
" is " << a <<
" has the following blocks:" << endl;
344 cout <<
"block " << j <<
" is " << b <<
" : ";
345 int_vec_print(cout, block, LS->
DC->
k);
353 cout <<
"strong generators are:" << endl;
354 Rep->Strong_gens->print_generators_tex();
356 cout <<
"The elements are:" << endl;
357 Rep->Strong_gens->print_elements_ost(cout);
359 sylow_structure *Syl;
362 cout <<
"creating Sims:" << endl;
363 S = Rep->Strong_gens->create_sims(0 );
366 cout <<
"creating Sylow structure:" << endl;
371 cout <<
"processing starter case with full stabilizer:" << endl;
372 LS->process_starter_case(Rep, Rep->Strong_gens, verbose_level);
373 cout <<
"processing starter case done" << endl;
377 for (sylow_select = 0; sylow_select < Syl->nb_primes; sylow_select++) {
379 if (f_sylow_select) {
380 if (Syl->primes[sylow_select] != sylow_select_prime) {
381 cout <<
"skipping this prime because of -sylow_select" << endl;
385 cout <<
"processing starter case with Sylow subgroup "
386 << sylow_select <<
" / " << Syl->nb_primes <<
" of stabilizer, "
387 "for p=" << Syl->primes[sylow_select] << endl;
389 char group_label[1000];
392 orbit_length = Syl->primes[sylow_select];
393 sprintf(prefix,
"Case_%d_", lift_case);
394 sprintf(group_label,
"Syl_%d", Syl->primes[sylow_select]);
396 long int *Large_sets;
399 strong_generators *SG1;
401 if (f_cyclic_subgroup_with_n_fixpoints) {
402 cout <<
"finding cyclic subgroup with n fixpoints, for n = "
403 << cyclic_subgroup_with_n_fixpoints << endl;
404 SG1 = Syl->Sub[sylow_select].SG->find_cyclic_subgroup_with_exactly_n_fixpoints(
405 cyclic_subgroup_with_n_fixpoints, A, verbose_level);
408 SG1 = Syl->Sub[sylow_select].SG;
410 cout <<
"considering the group generated by:" << endl;
411 SG1->print_generators_tex();
412 LS->process_starter_case(Rep->data, Rep->sz, SG1,
413 prefix, group_label, orbit_length,
414 f_read_solution_file, solution_file_name,
415 Large_sets, nb_large_sets,
418 cout <<
"processing starter case done" << endl;
419 if (f_read_solution_file) {
420 cout <<
"We found " << nb_large_sets <<
" large sets" << endl;
428 cout <<
"classification of subsets of size " << depth << endl;
429 LS->
gen->depth = depth;
440 cout <<
"combinatorics_global::lift_design done" << endl;
449void combinatorics_global::Hill_cap56(
450 char *fname,
int &nb_Pts,
long int *&Pts,
453 int f_v = (verbose_level >= 1);
454 int f_vv = (verbose_level >= 2);
455 int epsilon, n, q, w, i;
465 cout <<
"combinatorics_global::Hill_cap" << endl;
479 cout <<
"Hill_cap before init_orthogonal" << endl;
485 f_semilinear =
FALSE;
492 cout <<
"f_semilinear=" << f_semilinear << endl;
506 cout <<
"Hill_cap created action:" << endl;
517 cout <<
"after init_orthogonal" << endl;
529 cout <<
"after init_projective_group" << endl;
533 cout <<
"Hill_cap before P.init" << endl;
535 P->
init(A, O, epsilon, n, w, F, w, verbose_level - 2);
537 cout <<
"Hill_cap before P.init2" << endl;
539 P->
init2(w, verbose_level - 2);
541 cout <<
"Hill_cap before P.compute_orbits" << endl;
548 <<
" orbits at depth " << w << endl;
559 cout <<
"Hill_cap before P.dual_polar_graph" << endl;
564 cout <<
"there are " << nb_lines <<
" lines" << endl;
565 for (i = 0; i < nb_lines; i++) {
566 cout << setw(5) << i <<
" : " << Rank_lines[i] << endl;
571 cout <<
"Hill_cap before Grass.init" << endl;
573 Grass.
init(n, w, F, 0 );
575 cout <<
"there are " << nb_lines
576 <<
" lines, generator matrices are:" << endl;
577 for (i = 0; i < nb_lines; i++) {
579 cout << setw(5) << i <<
" : " << Rank_lines[i] <<
":" << endl;
595 cout <<
"found a group of order " << go << endl;
599 cout <<
"Hill_cap finding an element of order 7" << endl;
602 cout <<
"an element of order 7 is:" << endl;
611 cout <<
"Hill_cap computing orbits on points" << endl;
614 Orb->
init(P->
A, verbose_level - 2);
618 cout <<
"Hill_cap the orbits on points are:" << endl;
636 pt_coords =
NEW_int(nb_pts * n);
640 for (i = 0; i < nb_pts; i++) {
643 cout <<
"point coordinates:" << endl;
646 cout <<
"evaluating quadratic form:" << endl;
647 for (i = 0; i < nb_pts; i++) {
649 cout << setw(3) << i <<
" : " << a << endl;
652 int i1, i2, i3, i4, i5, i6, i7, i8, ii;
663 for (i1 = 0; i1 < N; i1++) {
665 append_orbit_and_adjust_size(Orb, i1, set, sz[1]);
669 if (!Gg.
test_if_arc(F, pt_coords, set, sz[1], n, verbose_level)) {
672 for (i2 = i1 + 1; i2 < N; i2++) {
674 append_orbit_and_adjust_size(Orb, i2, set, sz[2]);
675 if (!Gg.
test_if_arc(F, pt_coords, set, sz[2], n, verbose_level)) {
678 for (i3 = i2 + 1; i3 < N; i3++) {
680 append_orbit_and_adjust_size(Orb, i3, set, sz[3]);
681 if (!Gg.
test_if_arc(F, pt_coords, set, sz[3], n, verbose_level)) {
684 for (i4 = i3 + 1; i4 < N; i4++) {
686 append_orbit_and_adjust_size(Orb, i4, set, sz[4]);
687 if (!Gg.
test_if_arc(F, pt_coords, set, sz[4], n, verbose_level)) {
690 for (i5 = i4 + 1; i5 < N; i5++) {
692 append_orbit_and_adjust_size(Orb, i5, set, sz[5]);
693 if (!Gg.
test_if_arc(F, pt_coords, set, sz[5], n, verbose_level)) {
696 for (i6 = i5 + 1; i6 < N; i6++) {
698 append_orbit_and_adjust_size(Orb, i6, set, sz[6]);
699 if (!Gg.
test_if_arc(F, pt_coords, set, sz[6], n, verbose_level)) {
702 for (i7 = i6 + 1; i7 < N; i7++) {
704 append_orbit_and_adjust_size(Orb, i7, set, sz[7]);
705 if (!Gg.
test_if_arc(F, pt_coords, set, sz[7], n, verbose_level)) {
708 for (i8 = i7 + 1; i8 < N; i8++) {
710 append_orbit_and_adjust_size(Orb, i8, set, sz[8]);
711 if (!Gg.
test_if_arc(F, pt_coords, set, sz[8], n, verbose_level)) {
716 cout <<
"error, the size of the arc is not 56" << endl;
719 for (ii = 0; ii < sz[8]; ii++) {
722 Sets[nb_sol * 56 + ii] = rk;
726 cout <<
"solution " << nb_sol <<
", a set of size " << sz[8] <<
" : ";
727 cout << i1 <<
"," << i2 <<
"," << i3 <<
"," << i4 <<
"," << i5 <<
"," << i6 <<
"," << i7 <<
"," << i8 << endl;
733 solution(w, n, A, O, pt_coords,
734 set, sz[8], Rank_lines, nb_lines, verbose_level);
746 cout <<
"there are " << nb_sol <<
" solutions" << endl;
747 cout <<
"out of " << Combi.
int_n_choose_k(N, 8) <<
" possibilities" << endl;
750 for (i = 0; i < nb_sol; i++) {
751 cout <<
"Solution " << i <<
":" << endl;
752 for (j = 0; j < 56; j++) {
753 cout << Sets[i * 56 + j] <<
" ";
759 cout <<
"error, no solution" << endl;
765 for (j = 0; j < 56; j++) {
766 Pts[j] = Sets[0 * 56 + j];
768 sprintf(fname,
"Hill_cap_56.txt");
780 int idx,
int *set,
int &sz)
787 for (i = 0; i < len; i++) {
788 set[sz++] = Orb->
orbit[f + i];
794void combinatorics_global::classify_objects_using_nauty(
797 std::string &output_fname,
800 int f_v = (verbose_level >= 1);
805 int nb_objects_to_test;
807 vector<vector<long int>> Reps;
811 cout <<
"combinatorics_global::classify_objects_using_nauty" << endl;
816 cout <<
"combinatorics_global::classify_objects_using_nauty "
817 "before count_number_of_objects_to_test" << endl;
819 nb_objects_to_test = Data->count_number_of_objects_to_test(
830 int partition_class_size = -1;
832 for (input_idx = 0; input_idx < Data->
nb_inputs; input_idx++) {
834 cout <<
"combinatorics_global::classify_objects_using_nauty input "
839 if (Data->input_type[input_idx] == INPUT_TYPE_FILE_OF_DESIGNS) {
841 cout <<
"combinatorics_global::classify_objects_using_nauty "
842 "input " << input_idx <<
" / " << Data->
nb_inputs
843 <<
" from file " << Data->input_string[input_idx]
847 if (N_points == -1) {
848 N_points = Data->input_data1[input_idx];
849 design_b = Data->input_data2[input_idx];
850 design_k = Data->input_data3[input_idx];
851 partition_class_size = Data->input_data4[input_idx];
854 if (Data->input_data1[input_idx] != N_points) {
855 cout <<
"combinatorics_global::classify_objects_using_nauty N_points is not constant" << endl;
858 if (Data->input_data2[input_idx] != design_b) {
859 cout <<
"combinatorics_global::classify_objects_using_nauty design_b is not constant" << endl;
862 if (Data->input_data3[input_idx] != design_k) {
863 cout <<
"combinatorics_global::classify_objects_using_nauty design_k is not constant" << endl;
868 handle_input_file(CB, nb_objects_to_test, t0,
869 Data->input_string[input_idx], input_idx, Data->
nb_inputs,
870 N_points, design_b, design_k, partition_class_size,
875 cout <<
"combinatorics_global::classify_objects_using_nauty "
876 "input " << input_idx <<
" / " << Data->
nb_inputs
877 <<
" from file " << Data->input_string[input_idx]
878 <<
" finished" << endl;
882 cout <<
"combinatorics_global::classify_objects_using_nauty unknown input type" << endl;
887 cout <<
"combinatorics_global::classify_objects_using_nauty distribution of automorphism group orders of new isomorphism types after file "
888 << input_idx <<
" / " << Data->
nb_inputs <<
" is:" << endl;
902 for (t = 0; t < nb_test_perm; t++) {
907 cout <<
"combinatorics_global::classify_objects_using_nauty testing permutation " << test_perm[t] << endl;
908 scan_permutation_from_string(test_perm[t],
909 perm, degree, verbose_level);
910 cout <<
"the permutation is:" << endl;
911 for (i = 0; i < degree; i++) {
912 cout << i <<
" -> " << perm[i] << endl;
917 if (N_points == -1) {
918 cout <<
"N_points == -1" << endl;
927 cout <<
"saving" << endl;
928 cout <<
"combinatorics_global::classify_objects_using_nauty allocating set of sets of size " << Reps.size() <<
" each of size " << design_b << endl;
929 SoS->init_basic_constant_size(N_points, Reps.size(), design_b, 0 );
931 for (i = 0; i < Reps.size(); i++) {
932 vector<long int> rep;
935 for (j = 0; j < design_b; j++) {
936 SoS->Sets[i][j] = rep[j];
940 SoS->save_constant_size_csv(output_fname, verbose_level);
944 cout <<
"combinatorics_global::classify_objects_using_nauty "
945 "before compute_and_print_ago_distribution" << endl;
948 compute_and_print_ago_distribution(cout, CB, verbose_level);
951 cout <<
"combinatorics_global::classify_objects_using_nauty "
952 "after compute_and_print_ago_distribution" << endl;
956 cout <<
"classify_objects_using_nauty before CB->finalize" << endl;
966 cout <<
"combinatorics_global::classify_objects_using_nauty done" << endl;
975 int nb_objects_to_test,
int t0,
976 std::string &fname,
int input_file_idx,
int nb_input_files,
977 int N_points,
int design_b,
int design_k,
int partition_class_size,
978 long int *Ago, std::vector<std::vector<long int>> &Reps,
981 int f_v = (verbose_level >= 1);
982 int f_vv = (verbose_level >= 2);
983 int f_vvv = (verbose_level >= 3);
987 int nb_classes = design_b / partition_class_size;
991 cout <<
"combinatorics_global::handle_input_file fname=" << fname << endl;
1003 cout <<
"N_points=" << N_points << endl;
1004 cout <<
"design_b=" << design_b << endl;
1005 cout <<
"design_k=" << design_k << endl;
1006 cout <<
"partition_class_size=" << partition_class_size << endl;
1007 cout <<
"nb_classes=" << nb_classes << endl;
1008 cout <<
"combinatorics_global::handle_input_file Reading the file " << fname << endl;
1013 fname, verbose_level);
1016 cout <<
"Read the file " << fname << endl;
1023 cout <<
"combinatorics_global::handle_input_file processing "
1024 << SoS->
nb_sets <<
" objects" << endl;
1027 for (h = 0; h < SoS->
nb_sets; h++) {
1030 cout <<
"Input set " << h <<
" / " << SoS->
nb_sets <<
", "
1031 << input_file_idx <<
" / " << nb_input_files <<
":" << endl;
1034 long int *the_set_in;
1039 the_set_in = SoS->
Sets[h];
1043 if (set_size_in != design_b) {
1044 cout <<
"handle_input_file "
1045 "set_size_in != design_b" << endl;
1052 if (f_vv || ((h % 1024) == 0)) {
1053 cout <<
"combinatorics_global::handle_input_file "
1054 "The input set " << h <<
" / " << SoS->
nb_sets <<
", "
1055 << input_file_idx <<
" / " << nb_input_files <<
" : "
1056 <<
" has size " << set_size_in <<
":" << endl;
1060 cout <<
"combinatorics_global::handle_input_file "
1061 "The input set is:" << endl;
1075 N_points, design_b, design_k, partition_class_size,
1085 fname_input.assign(fname);
1086 ST.chop_off_extension(fname_input);
1087 sprintf(str,
"_input_%d.csv", h);
1088 fname_input.append(str);
1089 Fio.int_matrix_write_csv(fname_input, Inc->
M, Inc->
nb_rows, Inc->
nb_cols);
1120 string fname_output;
1125 fname_output.assign(fname);
1126 ST.chop_off_extension(fname_output);
1127 sprintf(str,
"_output_%d.csv", h);
1128 fname_output.append(str);
1129 Fio.int_matrix_write_csv(fname_output, Inc_out->
M, Inc_out->
nb_rows, Inc_out->
nb_cols);
1142 cout <<
"combinatorics_global::handle_input_file input set " << h <<
" found at position " << idx
1143 <<
", corresponding to input object " << CB->
Type_rep[idx]
1144 <<
" and hence is skipped" << endl;
1149 cout <<
"combinatorics_global::handle_input_file new isomorphism type: ";
1153 vector<long int> rep;
1156 for (i = 0; i < set_size_in; i++) {
1157 rep.push_back(the_set_in[i]);
1159 Reps.push_back(rep);
1177 cout <<
" --- New isomorphism type! input set " << h
1178 <<
" / " << SoS->
nb_sets <<
", " << input_file_idx <<
" / " << nb_input_files <<
" : "
1179 <<
" The n e w number of "
1180 "isomorphism types is " << CB->
nb_types <<
" go=" << go << endl;
1188 cout <<
"combinatorics_global::handle_input_file after input set " << h <<
" / "
1189 << SoS->
nb_sets <<
", " << input_file_idx <<
" / " << nb_input_files
1191 <<
" isomorphism types of objects" << endl;
1199 cout <<
"combinatorics_global::handle_input_file fname=" << fname <<
", "
1200 << input_file_idx <<
" / " << nb_input_files <<
" done" << endl;
1206void combinatorics_global::process_object(
1210 int nb_objects_to_test,
1211 int &f_found,
int &idx,
1216 int f_v = (verbose_level >= 1);
1219 cout <<
"process_object n=" << CB->
n << endl;
1223 cout <<
"process_object "
1224 "before IG->set_stabilizer_and_canonical_form" << endl;
1236 cout <<
"process_object "
1237 "after IG->set_stabilizer_and_canonical_form" << endl;
1244 cout <<
"generators for the automorphism group are:" << endl;
1250 cout <<
"process_object CB->n == 0, calling CB->init with "
1257 cout <<
"process_object before CB->search_and_add_if_new" << endl;
1258 cout <<
"canonical_form=";
1259 IG->print_canonical_form(cout);
1268 cout <<
"process_object done" << endl;
a collection of combinatorial functions
long int int_n_choose_k(int n, int k)
long int get_allocated_length()
classification of 0/1 matrices using canonical forms
void search_and_add_if_new(uchar *data, void *extra_data, int &f_found, int &idx, int verbose_level)
void init(int N, int rep_len, int verbose_level)
void print(std::ostream &ost, std::vector< int > &v)
void scan(std::string &s, int *&v, int &len)
void matrix_print(long int *p, int m, int n)
void init_from_file(int &underlying_set_size, std::string &fname, int verbose_level)
void PG_element_rank_modified(int *v, int stride, int len, int &a)
void finite_field_init(int q, int f_without_tables, int verbose_level)
various functions related to geometries
int test_if_arc(field_theory::finite_field *Fq, int *pt_coords, int *set, int set_sz, int k, int verbose_level)
int Witt_index(int epsilon, int k)
to rank and unrank subspaces of a fixed dimension in F_q^n
void unrank_longinteger(ring_theory::longinteger_object &rk, int verbose_level)
void init(int n, int k, field_theory::finite_field *F, int verbose_level)
interface for various incidence geometries
void init_large_set(long int *blocks, int N_points, int design_b, int design_k, int partition_class_size, int *&partition, int verbose_level)
basic number theoretic functions
a collection of functions related to file io
interface to create latex output files
void lint_set_print_tex(std::ostream &ost, long int *v, int len)
data_structures::lint_vec * Lint_vec
data_structures::int_vec * Int_vec
interface to system functions
void time_check_delta(std::ostream &ost, int dt)
an orthogonal geometry O^epsilon(n,q)
field_theory::finite_field * F
void unrank_point(int *v, int stride, long int rk, int verbose_level)
int evaluate_quadratic_form(int *v, int stride)
a class to represent arbitrary precision integers
a permutation group in a fixed action.
void element_print_quick(void *elt, std::ostream &ost)
groups::strong_generators * Strong_gens
void init_projective_group(int n, field_theory::finite_field *F, int f_semilinear, int f_basis, int f_init_sims, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
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 group_order(ring_theory::longinteger_object &go)
to represent an incidence structure and its group
void init(geometry::incidence_structure *Inc, int *partition, int verbose_level)
void set_stabilizer_and_canonical_form(int f_compute_canonical_form, geometry::incidence_structure *&Inc_out, int verbose_level)
data_structures::bitvector * canonical_form
to hold a vector of group elements
Schreier trees for orbits of groups on points.
void print_and_list_orbits(std::ostream &ost)
void compute_all_point_orbits(int verbose_level)
void init_single_generator(int *elt, int verbose_level)
void init(actions::action *A, int verbose_level)
a permutation group represented via a stabilizer chain
void group_order(ring_theory::longinteger_object &go)
void random_element_of_order(int *elt, int order, int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
void print_generators_tex()
induced action on the orthogonal geometry
orthogonal_geometry::orthogonal * O
orbit of sets using a Schreier tree, used in packing::make_spread_table
void create_design_table(design_create *DC, std::string &problem_label, design_tables *&T, groups::strong_generators *Gens, int verbose_level)
void load_design_table(design_create *DC, std::string &problem_label, design_tables *&T, groups::strong_generators *Gens, int verbose_level)
to create a known design using a description from class design_create_description
void unrank_block_in_PG_2_q(int *block, int rk, int verbose_level)
groups::strong_generators * Sg
a set of designs to be used for a large set
void init_from_file(actions::action *A, actions::action *A2, long int *initial_set, int design_size, std::string &label, groups::strong_generators *Strong_generators, int verbose_level)
void init(actions::action *A, actions::action *A2, long int *initial_set, int design_size, std::string &label, groups::strong_generators *Strong_generators, int verbose_level)
classification of large sets of designs
void read_classification_single_case(data_structures_groups::set_and_stabilizer *&Rep, int level, int case_nr, int verbose_level)
void init(design_create *DC, design_tables *T, int verbose_level)
void read_classification(data_structures_groups::orbit_transversal *&T, int level, int verbose_level)
design_tables * Design_table
void compute(int verbose_level)
poset_classification::poset_classification * gen
the polar space arising from an orthogonal geometry
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)
void dual_polar_graph(int depth, int orbit_idx, ring_theory::longinteger_object *&Rank_table, int &nb_maximals, int verbose_level)
void init2(int depth, int verbose_level)
void compute_orbits(int t0, int verbose_level)
#define Lint_vec_print(A, B, C)
#define Int_vec_print_integer_matrix_width(A, B, C, D, E, F)
#define Int_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects
induced_actions::action_on_orthogonal * AO