14namespace layer4_classification {
15namespace poset_classification {
18static int callback_test_independence_condition(
19 orbit_based_testing *Obt,
20 long int *S,
int len,
void *data,
int verbose_level);
68 int f_v = (verbose_level >= 1);
71 cout <<
"poset_with_group_action::init_subset_lattice" << endl;
76 cout <<
"poset_with_group_action::init_subset_lattice degree of action = " <<
n << endl;
85 cout <<
"poset_with_group_action::init_subset_lattice done" << endl;
95 int f_v = (verbose_level >= 1);
98 cout <<
"poset_with_group_action::init_subspace_lattice" << endl;
110 cout <<
"poset_with_group_action::init_subspace_lattice done" << endl;
121 int f_v = (verbose_level >= 1);
124 cout <<
"poset_with_group_action::init" << endl;
141 cout <<
"poset_with_group_action::init mtx->n != description->dimension" << endl;
154 cout <<
"poset_with_group_action::init action A:" << endl;
158 cout <<
"poset_with_group_action::init action A2:" << endl;
162 cout <<
"poset_with_group_action::init generators for a group of order " <<
go
163 <<
" and degree " <<
A2->
degree << endl;
166 cout <<
"poset_with_group_action::init done" << endl;
171 int independence_value,
174 int f_v = (verbose_level >= 1);
177 cout <<
"poset_with_group_action::add_independence_condition" << endl;
180 cout <<
"poset_with_group_action::init independence_condition value = "
181 << independence_value << endl;
191 cout <<
"poset_with_group_action::add_independence_condition before "
197 independence_value + 1);
203 cout <<
"poset_with_group_action::add_independence_condition before "
204 "Orbit_based_testing->init" << endl;
212 cout <<
"poset_with_group_action::add_independence_condition "
213 "adding callback for testing the "
214 "independence condition" << endl;
217 callback_test_independence_condition,
221 cout <<
"poset_with_group_action::add_independence_condition done" << endl;
228 long int *S,
int len,
void *data,
int verbose_level),
232 int f_v = (verbose_level >= 1);
235 cout <<
"poset_with_group_action::add_testing" << endl;
242 cout <<
"poset_with_group_action::add_testing before "
243 "Orbit_based_testing->init" << endl;
251 cout <<
"poset_with_group_action::add_testing "
252 "adding callback for testing the "
253 "independence condition" << endl;
261 cout <<
"poset_with_group_action::add_testing done" << endl;
266 void (*func)(
long int *S,
int len,
267 long int *candidates,
int nb_candidates,
268 long int *good_candidates,
int &nb_good_candidates,
269 void *data,
int verbose_level),
273 int f_v = (verbose_level >= 1);
276 cout <<
"poset_with_group_action::add_testing_without_group" << endl;
283 cout <<
"poset_with_group_action::add_testing_without_group before "
284 "Orbit_based_testing->init" << endl;
292 cout <<
"poset_with_group_action::add_testing_without_group "
293 "adding callback" << endl;
301 cout <<
"poset_with_group_action::add_testing_without_group done" << endl;
309 cout <<
"poset of subsets of an " <<
n <<
"-element set" << endl;
312 cout <<
"poset of subspaces of F_{" <<
VS->
F->
q <<
"}^{"
315 cout <<
"group action A:" << endl;
317 cout <<
"group action A2:" << endl;
319 cout <<
"group order " <<
go << endl;
323 long int *S,
int len,
324 long int *candidates,
int nb_candidates,
325 long int *good_candidates,
int &nb_good_candidates,
328 int f_v = (verbose_level >= 1);
331 cout <<
"poset_with_group_action::early_test_func" << endl;
335 cout <<
"poset_with_group_action::early_test_func "
336 "before Orbit_based_testing->early_test_"
337 "func_by_using_group" << endl;
341 candidates, nb_candidates,
342 good_candidates, nb_good_candidates,
345 cout <<
"poset_with_group_action::early_test_func "
346 "after Orbit_based_testing->early_test_"
347 "func_by_using_group" << endl;
352 nb_good_candidates = nb_candidates;
355 cout <<
"poset_with_group_action::early_test_func done" << endl;
362 cout <<
"poset_with_group_action::unrank_point !f_subspace_lattice" << endl;
366 cout <<
"poset_with_group_action::unrank_point VS == NULL" << endl;
377 cout <<
"poset_with_group_action::rank_point !f_subspace_lattice" << endl;
381 cout <<
"poset_with_group_action::rank_point VS == NULL" << endl;
390 int k,
long int *&orbit_reps,
int &nb_orbits,
int verbose_level)
392 int f_v = (verbose_level >= 1);
396 cout <<
"poset_with_group_action::orbits_on_k_sets" << endl;
402 cout <<
"poset_with_group_action::orbits_on_k_sets "
403 "done with orbits_on_k_sets_compute" << endl;
406 Gen->get_orbit_representatives(k, nb_orbits,
407 orbit_reps, verbose_level);
411 cout <<
"poset_with_group_action::orbits_on_k_sets "
413 << nb_orbits <<
" orbits on " << k <<
"-sets" << endl;
418 cout <<
"poset_with_group_action::orbits_on_k_sets done" << endl;
424 int k,
int verbose_level)
426 int f_v = (verbose_level >= 1);
431 cout <<
"poset_with_group_action::orbits_on_k_sets_compute" << endl;
444 cout <<
"poset_with_group_action::orbits_on_k_sets_compute calling Gen->init" << endl;
446 Gen->initialize_and_allocate_root_node(
460 Gen->f_print_function =
TRUE;
461 Gen->print_function = print_set;
462 Gen->print_function_data =
this;
467 int schreier_depth = k;
468 int f_use_invariant_subset_if_available =
TRUE;
473 cout <<
"poset_with_group_action::orbits_on_k_sets_compute "
474 "calling generator_main" << endl;
478 f_use_invariant_subset_if_available,
484 cout <<
"poset_with_group_action::orbits_on_k_sets_compute done" << endl;
499static int callback_test_independence_condition(
501 long int *S,
int len,
void *data,
int verbose_level)
503 int f_v = (verbose_level >= 0);
506 cout <<
"callback_test_independence_condition" << endl;
512 S, verbose_level - 1)) {
to check whether any d - 1 elements of a given set are linearly independent
int check_rank_last_two_are_fixed(int len, long int *S, int verbose_level)
void init(field_theory::finite_field *GFq, int m, int n, int d)
finite dimensional vector space over a finite field
long int rank_point(int *v)
void init(field_theory::finite_field *F, int dimension, int verbose_level)
field_theory::finite_field * F
void unrank_point(int *v, long int rk)
interface to system functions
a permutation group in a fixed action.
groups::matrix_group * get_matrix_group()
a matrix group over a finite field in projective, vector space or affine action
field_theory::finite_field * GFq
a strong generating set for a permutation group with respect to a fixed action
void group_order(ring_theory::longinteger_object &go)
maintains a list of test functions which define a G-invariant poset
void init(poset_classification *PC, int max_depth, 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 add_callback_no_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 add_callback(int(*func)(orbit_based_testing *Obt, long int *S, int len, void *data, int verbose_level), void *data, int verbose_level)
to control the behavior of the poset classification algorithm
the poset classification algorithm
description of a poset from the command line
int f_independence_condition
int independence_condition_value
void * print_function_data
algebra::vector_space * VS
poset_with_group_action()
void init(poset_description *description, actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, int verbose_level)
void init_subset_lattice(actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, 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 unrank_point(int *v, long int rk)
orbit_based_testing * Orbit_based_testing
ring_theory::longinteger_object go
void init_subspace_lattice(actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, algebra::vector_space *VS, int verbose_level)
int f_has_orbit_based_testing
long int rank_point(int *v)
void add_testing(int(*func)(orbit_based_testing *Obt, long int *S, int len, void *data, int verbose_level), void *data, int verbose_level)
void add_independence_condition(int independence_value, 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)
poset_classification * orbits_on_k_sets_compute(poset_classification_control *Control, int k, int verbose_level)
groups::strong_generators * Strong_gens
void orbits_on_k_sets(poset_classification_control *Control, int k, long int *&orbit_reps, int &nb_orbits, int verbose_level)
void(* print_function)(std::ostream &ost, int len, long int *S, void *data)
~poset_with_group_action()
void invoke_print_function(std::ostream &ost, int sz, long int *set)
poset_description * description
#define Lint_vec_copy(A, B, C)
the orbiter library for the classification of combinatorial objects