11namespace layer5_applications {
12namespace apps_combinatorics {
76 int f_v = (verbose_level >= 1);
80 cout <<
"regular_ls_classify::init_and_run" << endl;
81 cout <<
"regular_ls_classify::init_and_run "
83 cout <<
"regular_ls_classify::init_basic starter_size=" <<
Descr->
starter_size << endl;
88 cout <<
"regular_ls_classify::init_and_run please use option -control" << endl;
104 cout <<
"regular_ls_classify::init_and_run before init_group" << endl;
108 cout <<
"regular_ls_classify::init_and_run after init_group" << endl;
112 cout <<
"regular_ls_classify::init_and_run before init_action_on_k_subsets" << endl;
116 cout <<
"regular_ls_classify::init_and_run after init_action_on_k_subsets" << endl;
120 cout <<
"regular_ls_classify::init_and_run before init_generator" << endl;
127 cout <<
"regular_ls_classify::init_and_run after init_generator" << endl;
133 int f_use_invariant_subset_if_available =
TRUE;
138 cout <<
"regular_ls_classify::init_and_run "
139 "calling gen->main" << endl;
143 f_use_invariant_subset_if_available,
147 cout <<
"regular_ls_classify::init_and_run "
148 "after gen->main" << endl;
153 cout <<
"regular_ls_classify::init_and_run done" << endl;
159 int f_v = (verbose_level >= 1);
162 cout <<
"regular_ls_classify::init_group" << endl;
166 cout <<
"regular_ls_classify::init_group "
167 "creating symmetric group of degree " <<
Descr->
m << endl;
170 int f_no_base =
FALSE;
176 cout <<
"regular_ls_generator::init_group done" << endl;
181 int k,
int verbose_level)
183 int f_v = (verbose_level >= 1);
186 cout <<
"regular_ls_classify::init_action_on_k_subsets" << endl;
192 cout <<
"regular_ls_classify::init_action_on_k_subsets "
193 "creating action on k-subsets for k=" << k << endl;
201 cout <<
"regular_ls_classify::init_action_on_k_subsets "
202 "before A2->induced_action_override_sims" << endl;
206 cout <<
"regular_ls_classify::init_action_on_k_subsets "
216 int f_v = (verbose_level >= 1);
220 cout <<
"regular_ls_classify::init_generator" << endl;
250 cout <<
"regular_ls_classify::init_generator done" << endl;
256 long int *candidates,
int nb_candidates,
257 long int *good_candidates,
int &nb_good_candidates,
261 int f_v = (verbose_level >= 1);
262 int f_vv = (verbose_level >= 2);
268 cout <<
"regular_ls_classify::early_test_func checking set ";
271 cout <<
"candidate set of size " << nb_candidates <<
":" << endl;
281 cout <<
"pairs initially:" << endl;
282 int_vec_print(cout,
pairs,
m2);
287 for (i = 0; i < len; i++) {
290 for (a = 0; a <
Descr->
k; a++) {
292 for (b = a + 1; b <
Descr->
k; b++) {
300 cout <<
"pairs after adding in the chosen sets, pairs=" << endl;
306 nb_good_candidates = 0;
308 for (j = 0; j < nb_candidates; j++) {
312 cout <<
"Testing candidate " << j <<
" = "
313 << candidates[j] << endl;
320 cout <<
"Testing candidate " << j <<
" = "
321 << candidates[j] <<
" = ";
325 for (a = 0; a <
Descr->
k; a++) {
330 for (b = a + 1; b <
Descr->
k; b++) {
345 cout <<
"Testing candidate " << j <<
" = "
346 << candidates[j] <<
" is good" << endl;
348 good_candidates[nb_good_candidates++] = candidates[j];
357 for (i = 0; i < len; i++) {
365 long int *candidates,
int nb_candidates,
371 int f_v = (verbose_level >= 1);
372 int f_vv = (verbose_level >= 2);
373 int i, a, h1, h2, p, idx;
375 int nb_open_rows, nb_open_pairs;
379 cout <<
"regular_ls_classify::lifting_prepare_function_new "
380 "nb_candidates=" << nb_candidates << endl;
393 cout <<
"pairs initially:" << endl;
394 int_vec_print(cout,
pairs,
m2);
402 for (h1 = 0; h1 <
Descr->
k; h1++) {
404 for (h2 = h1 + 1; h2 <
Descr->
k; h2++) {
413 for (i = 0; i <
Descr->
m; i++) {
424 for (i = 0; i <
m2; i++) {
433 col_labels =
NEW_lint(nb_candidates);
444 cout <<
"regular_ls_classify::lifting_prepare_function_new "
445 "after lexorder test" << endl;
446 cout <<
"regular_ls_classify::lifting_prepare_function_new "
447 "nb_candidates=" << nb_candidates << endl;
457 nb_rows = nb_open_rows + nb_open_pairs;
458 nb_cols = nb_candidates;
461 Dio->
open(nb_rows, nb_cols);
463 Dio->
sum = nb_needed;
465 for (i = 0; i < nb_open_rows; i++) {
470 for (i = 0; i < nb_open_pairs; i++) {
472 Dio->
RHS[nb_open_rows + i] = 1;
480 for (i = 0; i < nb_candidates; i++) {
486 for (h1 = 0; h1 <
Descr->
k; h1++) {
489 cout <<
"regular_ls_classify::lifting_prepare_function_new "
490 "row_sum[v1[h1]] == Descr->r" << endl;
494 Dio->
Aij(idx, i) = 1;
496 for (h2 = h1 + 1; h2 <
Descr->
k; h2++) {
499 cout <<
"regular_ls_classify::lifting_prepare_function_new "
504 Dio->
Aij(nb_open_rows + idx, i) = 1;
512 cout <<
"regular_ls_classify::lifting_prepare_function_new "
532 Gen->
print(ost, S, len);
536 long int *candidates,
int nb_candidates,
537 long int *good_candidates,
int &nb_good_candidates,
538 void *data,
int verbose_level)
541 int f_v = (verbose_level >= 1);
544 cout <<
"regular_ls_classify_early_test_function for set ";
549 candidates, nb_candidates,
550 good_candidates, nb_good_candidates,
553 cout <<
"regular_ls_classify_early_test_function done" << endl;
559 long int *candidates,
int nb_candidates,
565 int f_v = (verbose_level >= 1);
569 cout <<
"regular_ls_classify_lifting_prepare_function_new "
570 "nb_candidates=" << nb_candidates << endl;
574 candidates, nb_candidates, Strong_gens,
575 Dio, col_labels, f_ruled_out,
580 cout <<
"regular_ls_classify_lifting_prepare_function_new "
581 "nb_rows=" << Dio->
m <<
" nb_cols=" << Dio->
n << endl;
585 cout <<
"regular_ls_classify_lifting_prepare_function_new "
a collection of combinatorial functions
void unrank_k_subset(int rk, int *set, int n, int k)
int ij2k(int i, int j, int n)
void mone(int *v, long int len)
data_structures::int_vec * Int_vec
interface to system functions
diophantine systems of equations (i.e., linear systems over the integers)
void fill_coefficient_matrix_with(int a)
void set_x_max_constant(int a)
diophant_equation_type * type
void set_x_min_constant(int a)
a permutation group in a fixed action.
void init_symmetric_group(int degree, int f_no_base, int verbose_level)
groups::strong_generators * Strong_gens
void induced_action_on_k_subsets(action &old_action, int k, int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
data_structures_groups::vector_ge * gens
exact cover problems arising with the lifting of combinatorial objects
void lexorder_test(long int *live_blocks2, int &nb_live_blocks2, data_structures_groups::vector_ge *stab_gens, int verbose_level)
to control the behavior of the poset classification algorithm
the poset classification algorithm
void initialize_and_allocate_root_node(poset_classification_control *PC_control, poset_with_group_action *Poset, int depth, int verbose_level)
int main(int t0, int schreier_depth, int f_use_invariant_subset_if_available, int f_debug, int verbose_level)
a poset with a group action on it
void * print_function_data
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)
a description of a class of regular linear spaces from the command line
poset_classification::poset_classification_control * Control
classification of regular linear spaces
poset_classification::poset_classification * gen
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
void init_generator(poset_classification::poset_classification_control *Control, groups::strong_generators *Strong_gens, int verbose_level)
induced_actions::action_on_k_subsets * Aonk
void print(std::ostream &ost, long int *S, int len)
void init_action_on_k_subsets(int onk, int verbose_level)
regular_linear_space_description * Descr
void init_group(int verbose_level)
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 init_and_run(regular_linear_space_description *Descr, int verbose_level)
#define Lint_vec_copy(A, B, C)
#define Int_vec_zero(A, B)
#define Lint_vec_print(A, B, C)
#define Int_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
void regular_ls_classify_early_test_function(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 regular_ls_classify_print_set(ostream &ost, int len, long int *S, void *data)
void regular_ls_classify_lifting_prepare_function_new(exact_cover *EC, 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)
the orbiter library for the classification of combinatorial objects
induced_actions::action_on_k_subsets * on_k_subsets