16namespace layer5_applications {
17namespace apps_algebra {
20static long int orbits_on_subspaces_rank_point_func(
int *v,
void *data);
21static void orbits_on_subspaces_unrank_point_func(
int *v,
long int rk,
void *data);
22static void orbits_on_subspaces_early_test_func(
long int *S,
int len,
23 long int *candidates,
int nb_candidates,
24 long int *good_candidates,
int &nb_good_candidates,
25 void *data,
int verbose_level);
52 int f_v = (verbose_level >= 1);
55 cout <<
"orbits_on_subspaces::init" << endl;
65 Control->
depth = depth;
67 cout <<
"orbits_on_subspaces::init "
68 "Control->max_depth=" << Control->
depth << endl;
83 orbits_on_subspaces_rank_point_func,
84 orbits_on_subspaces_unrank_point_func,
90 if (Descr->f_print_generators) {
91 int f_print_as_permutation =
FALSE;
94 int f_do_it_anyway_even_for_big_degree =
TRUE;
95 int f_print_cycles_of_length_one =
TRUE;
97 cout <<
"orbits_on_subspaces::init "
98 "printing generators "
99 "for the group:" << endl;
100 LG->Strong_gens->gens->print(cout,
101 f_print_as_permutation,
103 f_do_it_anyway_even_for_big_degree,
104 f_print_cycles_of_length_one);
114 orbits_on_subspaces_early_test_func,
121 cout <<
"orbits_on_subspaces::init "
130 Control->
depth, verbose_level);
134 int schreier_depth = Control->
depth;
135 int f_use_invariant_subset_if_available =
FALSE;
143 cout <<
"orbits_on_subspaces::init "
144 "calling generator_main" << endl;
152 f_use_invariant_subset_if_available,
158 cout <<
"orbits_on_subspaces::init "
159 "done with generator_main" << endl;
163 cout <<
"orbits_on_subspaces::init we found "
164 << nb_orbits <<
" orbits at depth "
165 << Control->
depth << endl;
175 cout <<
"orbits_on_subspaces::init done" << endl;
186static long int orbits_on_subspaces_rank_point_func(
int *v,
void *data)
205static void orbits_on_subspaces_unrank_point_func(
int *v,
long int rk,
void *data)
207 orbits_on_subspaces *OoS;
208 group_theoretic_activity *G;
214 OoS = (orbits_on_subspaces *) data;
216 gen = OoS->orbits_on_subspaces_PC;
221static void orbits_on_subspaces_early_test_func(
long int *S,
int len,
222 long int *candidates,
int nb_candidates,
223 long int *good_candidates,
int &nb_good_candidates,
224 void *data,
int verbose_level)
228 orbits_on_subspaces *OoS;
229 group_theoretic_activity *G;
231 int f_v = (verbose_level >= 1);
234 OoS = (orbits_on_subspaces *) data;
240 cout <<
"gorbits_on_subspaces_early_test_func" << endl;
241 cout <<
"testing " << nb_candidates <<
" candidates" << endl;
243 nb_good_candidates = 0;
244 for (i = 0; i < nb_candidates; i++) {
245 S[len] = candidates[i];
246 if (G->AG->subspace_orbits_test_set(len + 1, S, verbose_level - 1)) {
247 good_candidates[nb_good_candidates++] = candidates[i];
251 cout <<
"orbits_on_subspaces_early_test_func" << endl;
252 cout <<
"Out of " << nb_candidates <<
" candidates, "
253 << nb_good_candidates <<
" survive" << endl;
finite dimensional vector space over a finite field
void init(field_theory::finite_field *F, int dimension, int verbose_level)
field_theory::finite_field * F
void init_rank_functions(long int(*rank_point_func)(int *v, void *data), void(*unrank_point_func)(int *v, long int rk, void *data), void *data, int verbose_level)
void PG_element_unrank_modified(int *v, int stride, int len, int a)
void PG_element_rank_modified_lint(int *v, int stride, int len, long int &a)
interface to system functions
field_theory::finite_field * F
to control the behavior of the poset classification algorithm
std::string problem_label
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)
actions::action * get_A2()
actions::action * get_A()
int main(int t0, int schreier_depth, int f_use_invariant_subset_if_available, int f_debug, int verbose_level)
int nb_orbits_at_level(int level)
algebra::vector_space * get_VS()
a poset with a group action on it
void init_subspace_lattice(actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, algebra::vector_space *VS, 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)
groups::strong_generators * Subgroup_gens
void orbits_on_poset_post_processing(poset_classification::poset_classification *PC, int depth, int verbose_level)
groups::linear_group * LG
perform an activity associated with a linear group
orbits of a group on subspaces of a vector space
group_theoretic_activity * GTA
poset_classification::poset_with_group_action * orbits_on_subspaces_Poset
poset_classification::poset_classification * orbits_on_subspaces_PC
algebra::vector_space * orbits_on_subspaces_VS
void init(group_theoretic_activity *GTA, poset_classification::poset_classification_control *Control, int depth, int verbose_level)
int * orbits_on_subspaces_base_cols
int * orbits_on_subspaces_M
the orbiter library for the classification of combinatorial objects