20namespace layer4_classification {
115 int *subspace_by_rank,
int k,
int n,
116 int f_has_desired_pivots,
int *desired_pivots,
117 int f_has_rank_functions,
void *rank_unrank_data,
118 int (*rank_vector_callback)(
int *v,
int n,
119 void *data,
int verbose_level),
120 void (*unrank_vector_callback)(
int rk,
int *v,
int n,
121 void *data,
int verbose_level),
122 void (*compute_image_of_vector_callback)(
int *v,
int *w,
123 int *Elt,
void *data,
int verbose_level),
124 void *compute_image_of_vector_callback_data,
128 int f_v = (verbose_level >= 1);
131 cout <<
"orbit_of_subspaces::init" << endl;
162 cout <<
"orbit_of_subspaces::init before compute" << endl;
166 cout <<
"orbit_of_subspaces::init after compute" << endl;
170 cout <<
"orbit_of_subspaces::init printing the orbit" << endl;
175 cout <<
"orbit_of_subspaces::init done" << endl;
183 long int *subspace_by_rank,
int k,
int n,
184 int f_has_desired_pivots,
int *desired_pivots,
185 int f_has_rank_functions,
void *rank_unrank_data,
186 long int (*rank_vector_lint_callback)(
int *v,
int n,
187 void *data,
int verbose_level),
188 void (*unrank_vector_lint_callback)(
long int rk,
int *v,
int n,
189 void *data,
int verbose_level),
190 void (*compute_image_of_vector_callback)(
int *v,
int *w,
191 int *Elt,
void *data,
int verbose_level),
192 void *compute_image_of_vector_callback_data,
196 int f_v = (verbose_level >= 1);
199 cout <<
"orbit_of_subspaces::init_lint" << endl;
230 cout <<
"orbit_of_subspaces::init_lint before compute" << endl;
234 cout <<
"orbit_of_subspaces::init_lint after compute" << endl;
238 cout <<
"orbit_of_subspaces::init_lint printing the orbit" << endl;
243 cout <<
"orbit_of_subspaces::init_lint done" << endl;
250 int f_v = (verbose_level >= 1);
254 cout <<
"orbit_of_subspaces::rank_vector" << endl;
257 cout <<
"orbit_of_subspaces::rank_vector "
258 "!f_has_rank_functions" << endl;
261 r = (*rank_vector_callback)(v,
n,
264 cout <<
"orbit_of_subspaces::rank_vector done" << endl;
271 int f_v = (verbose_level >= 1);
275 cout <<
"orbit_of_subspaces::rank_vector_lint" << endl;
278 cout <<
"orbit_of_subspaces::rank_vector_lint "
279 "!f_has_rank_functions" << endl;
282 r = (*rank_vector_lint_callback)(v,
n,
285 cout <<
"orbit_of_subspaces::rank_vector_lint done" << endl;
292 int f_v = (verbose_level >= 1);
295 cout <<
"orbit_of_subspaces::unrank_vector" << endl;
298 cout <<
"orbit_of_subspaces::unrank_vector "
299 "!f_has_rank_functions" << endl;
302 (*unrank_vector_callback)(rk, v,
n,
305 cout <<
"orbit_of_subspaces::unrank_vector done" << endl;
311 int f_v = (verbose_level >= 1);
314 cout <<
"orbit_of_subspaces::unrank_vector_lint" << endl;
317 cout <<
"orbit_of_subspaces::unrank_vector_lint "
318 "!f_has_rank_functions" << endl;
321 (*unrank_vector_lint_callback)(rk, v,
n,
324 cout <<
"orbit_of_subspaces::unrank_vector_lint done" << endl;
329 int subspace_idx,
int *subspace_basis,
int verbose_level)
344 int *subspace_basis,
int verbose_level)
373 int *rk,
int *subspace_basis,
int verbose_level)
377 for (i = 0; i <
k; i++) {
384 long int *rk,
int *subspace_basis,
int verbose_level)
388 for (i = 0; i <
k; i++) {
395 int *rk,
int *subspace_basis,
int verbose_level)
399 for (i = 0; i <
k; i++) {
406 long int *rk,
int *subspace_basis,
int verbose_level)
410 for (i = 0; i <
k; i++) {
419 int f_v = (verbose_level >= 1);
420 int f_vv = (verbose_level >= 2);
423 cout <<
"orbit_of_subspaces::rref" << endl;
427 cout <<
"orbit_of_subspaces::rref before:" << endl;
429 cout <<
"desired_pivots:";
442 cout <<
"orbit_of_subspaces::rref after:" << endl;
448 cout <<
"orbit_of_subspaces::rref "
449 "before Gauss_easy" << endl;
454 cout <<
"orbit_of_subspaces::rref done" << endl;
459 int *subspace,
int *rk,
int verbose_level)
461 int f_v = (verbose_level >= 1);
464 cout <<
"orbit_of_subspaces::rref_and_rank" << endl;
466 rref(subspace, verbose_level - 1);
467 rank(rk, subspace, verbose_level - 1);
469 cout <<
"orbit_of_subspaces::rref_and_rank done" << endl;
474 int *subspace,
long int *rk,
int verbose_level)
476 int f_v = (verbose_level >= 1);
479 cout <<
"orbit_of_subspaces::rref_and_rank_lint" << endl;
481 rref(subspace, verbose_level - 1);
482 rank_lint(rk, subspace, verbose_level - 1);
484 cout <<
"orbit_of_subspaces::rref_and_rank_lint done" << endl;
491 int *image_subspace,
int *Elt,
int verbose_level)
493 int f_v = (verbose_level >= 1);
496 cout <<
"orbit_of_subspaces::map_a_subspace" << endl;
498 map_a_basis(subspace + 1 +
k,
499 image_subspace + 1 +
k, Elt, verbose_level - 1);
500 rref_and_rank_and_hash(image_subspace, verbose_level - 2);
502 cout <<
"orbit_of_subspaces::map_a_subspace done" << endl;
508 int *image_basis,
int *Elt,
int verbose_level)
510 int f_v = (verbose_level >= 1);
514 cout <<
"orbit_of_subspaces::map_a_subspace" << endl;
516 for (i = 0; i <
k; i++) {
517 (*compute_image_of_vector_callback)(basis + i *
n,
518 image_basis + i *
n, Elt,
523 cout <<
"orbit_of_subspaces::map_a_subspace done" << endl;
533 cout <<
"orbit_of_subspaces::print_orbit "
534 "We found an orbit of length " <<
used_length << endl;
545 for (j = 0; j <
k; j++) {
547 int_vec_print(cout, v,
n);
559 int &idx, uint32_t &h,
int verbose_level)
569 map<uint32_t, int>::iterator itr, itr1, itr2;
574 for (itr = itr1; itr != itr2; ++itr) {
594 int f_v = (verbose_level >= 1);
595 int f_vv = (verbose_level >= 2);
603 cout <<
"orbit_of_subspaces::compute" << endl;
606 cout <<
"orbit_of_subspaces::compute "
624 cout <<
"orbit_of_subspaces::compute "
625 "init Subspaces[0]" << endl;
638 cout <<
"which equals" << endl;
654 cout <<
"after RREF:" << endl;
672 Hashing.insert(pair<uint32_t, int>(h, 0));
683 cout <<
"Q_len = " << Q_len
690 for (i = 1; i < Q_len; i++) {
698 for (j = 0; j <
gens->
len; j++) {
700 cout <<
"applying generator " << j << endl;
716 cout <<
"reallocating to length " << al2 << endl;
721 long int **Subspaces2;
779 <<
" Q_len=" << Q_len
798 cout <<
"orbit_of_subspaces::compute found an orbit of length "
805 cout <<
"orbit_of_subspaces::compute done" << endl;
810 int *transporter,
int verbose_level)
814 int f_v = (verbose_level >= 1);
819 cout <<
"orbit_of_subspaces::get_transporter" << endl;
835 cout <<
"orbit_of_subspaces::get_transporter "
836 "idx1 != position_of_original_subspace" << endl;
844 cout <<
"orbit_of_subspaces::get_transporter done" << endl;
849 int *subspace_ranks,
int &idx,
int verbose_level)
851 int f_v = (verbose_level >= 1);
856 cout <<
"orbit_of_subspaces::find_subspace" << endl;
859 unrank(subspace_ranks,
Mtx3, verbose_level - 2);
866 cout <<
"orbit_of_subspaces::find_subspace "
870 cout <<
"orbit_of_subspaces::find_subspace done" << endl;
876 long int *subspace_ranks,
int &idx,
int verbose_level)
878 int f_v = (verbose_level >= 1);
883 cout <<
"orbit_of_subspaces::find_subspace_lint" << endl;
894 cout <<
"orbit_of_subspaces::find_subspace_lint "
899 cout <<
"orbit_of_subspaces::find_subspace_lint done" << endl;
905 int *Elt,
int verbose_level)
907 int f_v = (verbose_level >= 1);
909 int len, r1, r2, pt1, pt2;
910 int *E1, *E2, *E3, *E4, *E5;
918 cout <<
"orbit_of_subspaces::get_random_schreier_generator" << endl;
937 cout <<
"r2=" << r2 << endl;
940 cout <<
"random coset " << r1 <<
", random generator " << r2 << endl;
956 cout <<
"orbit_of_subspaces::get_random_schreier_generator "
957 "image space is not found in the orbit" << endl;
970 if (search_data(new_basis, pt3)) {
975 cout <<
"testing: n e w subspace is at position " << pt3 << endl;
979 cout <<
"orbit_of_subspaces::get_random_schreier_generator "
980 "(testing) image space is not found in the orbit" << endl;
985 cout <<
"orbit_of_subspaces::get_random_schreier_generator "
986 "pt3 != position_of_original_subspace" << endl;
1003 cout <<
"orbit_of_subspaces::get_random_schreier_generator "
1013 int f_v = (verbose_level >= 1);
1018 cout <<
"orbit_of_subspaces::generators_for_stabilizer_"
1019 "of_orbit_rep" << endl;
1029 cout <<
"orbit_of_subspaces::generators_for_stabilizer_of_"
1030 "orbit_rep found a stabilizer group of order "
1031 << stab_order << endl;
1036 gens->init_from_sims(Stab, verbose_level);
1040 cout <<
"orbit_of_subspaces::generators_for_stabilizer_of_"
1041 "orbit_rep done" << endl;
1052 int f_v = (verbose_level >= 1);
1053 int f_vv = (verbose_level >= 2);
1054 int f_vvv = (verbose_level >= 3);
1055 int f_v4 = (verbose_level >= 4);
1059 cout <<
"orbit_of_subspaces::compute_stabilizer" << endl;
1065 int len, r, cnt = 0, f_added, drop_out_level, image;
1071 cout <<
"orbit_of_subspaces::compute_stabilizer computing "
1072 "stabilizer inside a group of order " << go
1082 cout <<
"orbit_of_subspaces::compute_stabilizer orbit length "
1083 "does not divide group order" << endl;
1087 cout <<
"orbit_of_subspaces::compute_stabilizer expecting group "
1088 "of order " << target_go << endl;
1091 Stab->
init(default_action, verbose_level - 2);
1095 if (D.
compare(cur_go, target_go) == 0) {
1098 if (cnt % 2 || Stab->
nb_gen[0] == 0) {
1101 cout <<
"orbit_of_subspaces::compute_stabilizer created "
1102 "random Schreier generator" << endl;
1110 cout <<
"orbit_of_subspaces::compute_stabilizer created "
1111 "random schreier generator from sims" << endl;
1118 if (Stab->
strip(E1, residue, drop_out_level, image,
1121 cout <<
"orbit_of_subspaces::compute_stabilizer "
1122 "element strips through" << endl;
1124 cout <<
"residue:" << endl;
1134 cout <<
"orbit_of_subspaces::compute_stabilizer "
1135 "element needs to be inserted at level = "
1136 << drop_out_level <<
" with image " << image << endl;
1146 if ((f_vv && f_added) || f_vvv) {
1147 cout <<
"iteration " << cnt
1148 <<
" the n e w group order is " << cur_go
1149 <<
" expecting a group of order " << target_go << endl;
1156 cout <<
"orbit_of_subspaces::compute_stabilizer finished" << endl;
a catch-all container class for everything related to data structures
uint32_t int_vec_hash(int *data, int len)
uint32_t lint_vec_hash(long int *data, int len)
a collection of functions related to sorted vectors
int lint_vec_compare(long int *p, long int *q, int len)
int int_vec_compare(int *p, int *q, int len)
linear_algebra::linear_algebra * Linear_algebra
int Gauss_easy(int *A, int m, int n)
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)
interface to system functions
int random_integer(int p)
domain to compute with objects of type longinteger
int compare(longinteger_object &a, longinteger_object &b)
void integral_division_by_int(longinteger_object &a, int b, longinteger_object &q, int &r)
a class to represent arbitrary precision integers
a permutation group in a fixed action.
void element_print(void *elt, std::ostream &ost)
void element_mult(void *a, void *b, void *ab, int verbose_level)
void element_invert(void *a, void *av, int verbose_level)
void element_one(void *elt, int verbose_level)
void element_move(void *a, void *b, int verbose_level)
to hold a vector of group elements
void init(actions::action *A, int verbose_level)
a permutation group represented via a stabilizer chain
void init(actions::action *A, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void init_trivial_group(int verbose_level)
void add_generator_at_level(int *elt, int lvl, int verbose_level)
void random_schreier_generator(int *Elt, int verbose_level)
int strip(int *elt, int *residue, int &drop_out_level, int &image, int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
void(* unrank_vector_lint_callback)(long int rk, int *v, int n, void *data, int verbose_level)
void(* unrank_vector_callback)(int rk, int *v, int n, void *data, int verbose_level)
long int(* rank_vector_lint_callback)(int *v, int n, void *data, int verbose_level)
int find_subspace(int *subspace_ranks, int &idx, int verbose_level)
void rank_subspace(int *subspace_basis, int verbose_level)
void init_lint(actions::action *A, actions::action *A2, field_theory::finite_field *F, long int *subspace_by_rank, int k, int n, int f_has_desired_pivots, int *desired_pivots, int f_has_rank_functions, void *rank_unrank_data, long int(*rank_vector_lint_callback)(int *v, int n, void *data, int verbose_level), void(*unrank_vector_lint_callback)(long int rk, int *v, int n, void *data, int verbose_level), void(*compute_image_of_vector_callback)(int *v, int *w, int *Elt, void *data, int verbose_level), void *compute_image_of_vector_callback_data, data_structures_groups::vector_ge *gens, int verbose_level)
int(* rank_vector_callback)(int *v, int n, void *data, int verbose_level)
groups::strong_generators * stabilizer_orbit_rep(ring_theory::longinteger_object &full_group_order, int verbose_level)
int position_of_original_subspace
int find_subspace_lint(long int *subspace_ranks, int &idx, int verbose_level)
int rank_vector(int *v, int verbose_level)
void unrank_subspace(int subspace_idx, int *subspace_basis, int verbose_level)
void * compute_image_of_vector_callback_data
void rank(int *rk, int *subspace_basis, int verbose_level)
void unrank_lint(long int *rk, int *subspace_basis, int verbose_level)
void(* compute_image_of_vector_callback)(int *v, int *w, int *Elt, void *data, int verbose_level)
void compute_stabilizer(actions::action *default_action, ring_theory::longinteger_object &go, groups::sims *&Stab, int verbose_level)
void init(actions::action *A, actions::action *A2, field_theory::finite_field *F, int *subspace, int k, int n, int f_has_desired_pivots, int *desired_pivots, int f_has_rank_functions, void *rank_unrank_data, int(*rank_vector_callback)(int *v, int n, void *data, int verbose_level), void(*unrank_vector_callback)(int rk, int *v, int n, void *data, int verbose_level), void(*compute_image_of_vector_callback)(int *v, int *w, int *Elt, void *data, int verbose_level), void *compute_image_of_vector_callback_data, data_structures_groups::vector_ge *gens, int verbose_level)
void unrank(int *rk, int *subspace_basis, int verbose_level)
int rank_hash_and_find(int *subspace, int &idx, uint32_t &h, int verbose_level)
void rref_and_rank(int *subspace, int *rk, int verbose_level)
void map_a_subspace(int *basis, int *image_basis, int *Elt, int verbose_level)
void get_transporter(int idx, int *transporter, int verbose_level)
void get_random_schreier_generator(int *Elt, int verbose_level)
void unrank_vector(int rk, int *v, int verbose_level)
void rank_lint(long int *rk, int *subspace_basis, int verbose_level)
void rref_and_rank_lint(int *subspace, long int *rk, int verbose_level)
std::multimap< uint32_t, int > Hashing
void unrank_vector_lint(long int rk, int *v, int verbose_level)
data_structures_groups::vector_ge * gens
long int rank_vector_lint(int *v, int verbose_level)
long int ** Subspaces_lint
long int * subspace_by_rank_lint
void rref(int *subspace, int verbose_level)
field_theory::finite_field * F
void compute(int verbose_level)
#define Lint_vec_copy(A, B, C)
#define Lint_vec_print(A, B, C)
#define Int_matrix_print(A, B, C)
#define Int_vec_copy(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects