19namespace layer4_classification {
22static int orbit_of_equations_compare_func(
void *a,
void *b,
void *data);
82 int f_v = (verbose_level >= 1);
85 cout <<
"orbit_of_equations::init" << endl;
94 cout <<
"orbit_of_equations::init nb_monomials = " <<
nb_monomials << endl;
102 cout <<
"orbit_of_equations::init computing orbit of ";
107 cout <<
"orbit_of_equations::init before compute_orbit" << endl;
111 cout <<
"orbit_of_equations::init after compute_orbit" << endl;
115 cout <<
"orbit_of_equations::init printing the orbit" << endl;
120 cout <<
"orbit_of_equations::init done" << endl;
125 int *Elt,
int verbose_level)
127 int f_v = (verbose_level >= 1);
130 cout <<
"orbit_of_equations::map_an_equation" << endl;
133 cout <<
"orbit_of_equations::map_an_equation object_in=";
138 cout <<
"orbit_of_equations::map_an_equation Elt=" << endl;
142 Elt, object_in + 1, object_out + 1, verbose_level - 2);
145 cout <<
"orbit_of_equations::map_an_equation object_out=";
151 cout <<
"orbit_of_equations::map_an_equation before reduction_function" << endl;
155 cout <<
"orbit_of_equations::map_an_equation after reduction_function" << endl;
159 cout <<
"orbit_of_equations::map_an_equation before F->PG_element_normalize_from_front" << endl;
164 cout <<
"orbit_of_equations::map_an_equation after F->PG_element_normalize_from_front" << endl;
167 cout <<
"orbit_of_equations::map_an_equation done" << endl;
175 cout <<
"orbit_of_equations::print_orbit We found an orbit of "
191 int f_v = (verbose_level >= 1);
192 int f_vv = (verbose_level >= 2);
193 int f_vvv = (verbose_level >= 3);
201 cout <<
"orbit_of_equations::compute_orbit" << endl;
204 cout <<
"orbit_of_equations::compute_orbit sz=" <<
sz << endl;
216 cout <<
"orbit_of_equations::compute_orbit init Equations[0]" << endl;
230 cout <<
"orbit_of_equations::compute_orbit Q_len = "
231 << Q_len <<
" : used_length=" <<
used_length <<
" : ";
236 for (i = 1; i < Q_len; i++) {
246 cout <<
"orbit_of_equations::compute_orbit "
247 "applying generator " << j << endl;
255 cout <<
"orbit_of_equations::compute_orbit "
256 "before search_data" << endl;
260 cout <<
"orbit_of_equations::compute_orbit "
261 "image object is already in the list, "
262 "at position " << idx << endl;
267 cout <<
"orbit_of_equations::compute_orbit "
268 "Found a n e w object : ";
283 cout <<
"orbit_of_equations::compute_orbit "
284 "reallocating to length " << al2 << endl;
328 if (
prev[i] >= 0 &&
prev[i] >= idx) {
332 for (i = 0; i < Q_len; i++) {
339 cout <<
"orbit_of_equations::compute_orbit "
344 cout <<
"orbit_of_equations::compute_orbit "
345 "storing n e w equation at position "
360 cout <<
"orbit_of_equations::compute_orbit found an orbit "
369 cout <<
"orbit_of_equations::compute_orbit done" << endl;
374 int *transporter,
int verbose_level)
378 int f_v = (verbose_level >= 1);
383 cout <<
"orbit_of_equations::get_transporter" << endl;
399 cout <<
"orbit_of_equations::get_transporter "
400 "idx1 != position_of_original_object" << endl;
408 cout <<
"orbit_of_equations::get_transporter done" << endl;
413 int *Elt,
int verbose_level)
415 int f_v = (verbose_level >= 1);
417 int len, r1, r2, pt1, pt2, pt3;
418 int *E1, *E2, *E3, *E4, *E5;
424 cout <<
"orbit_of_equations::get_random_schreier_generator" << endl;
443 cout <<
"r2=" << r2 << endl;
446 cout <<
"random coset " << r1
447 <<
", random generator " << r2 << endl;
459 cout <<
"n e w object is at position " << pt2 << endl;
463 cout <<
"orbit_of_equations::get_random_schreier_generator "
464 "image space is not found in the orbit" << endl;
477 cout <<
"testing: n e w object is at position " << pt3 << endl;
481 cout <<
"orbit_of_equations::get_random_schreier_generator "
482 "(testing) image space is not found in the orbit" << endl;
487 cout <<
"orbit_of_equations::get_random_schreier_generator "
488 "pt3 != position_of_original_subspace" << endl;
505 cout <<
"orbit_of_equations::get_random_schreier_generator "
511 int *canonical_equation,
512 int *transporter_to_canonical_form,
517 int f_v = (verbose_level >= 1);
521 cout <<
"orbit_of_equations::get_canonical_form" << endl;
527 cout <<
"orbit_of_equations::get_canonical_form before stabilizer_any_point" << endl;
530 full_group_order, idx, 0 );
532 cout <<
"orbit_of_equations::get_canonical_form after stabilizer_any_point" << endl;
537 cout <<
"orbit_of_equations::get_canonical_form before get_transporter" << endl;
541 cout <<
"orbit_of_equations::get_canonical_form after get_transporter" << endl;
546 cout <<
"orbit_of_equations::get_canonical_form done" << endl;
553 int f_v = (verbose_level >= 1);
558 cout <<
"orbit_of_equations::stabilizer_orbit_rep" << endl;
562 cout <<
"orbit_of_equations::stabilizer_orbit_rep before stabilizer_orbit_rep_work" << endl;
567 cout <<
"orbit_of_equations::stabilizer_orbit_rep after stabilizer_orbit_rep_work" << endl;
574 cout <<
"orbit_of_equations::stabilizer_orbit_rep "
575 "found a stabilizer group of order "
576 << stab_order << endl;
585 cout <<
"orbit_of_equations::stabilizer_orbit_rep done" << endl;
596 int f_v = (verbose_level >= 1);
597 int f_vv = (verbose_level >= 2);
598 int f_vvv = (verbose_level >= 3);
599 int f_v4 = (verbose_level >= 4);
603 cout <<
"orbit_of_equations::stabilizer_orbit_rep_work" << endl;
609 int len, r, cnt = 0, f_added, drop_out_level, image;
615 cout <<
"orbit_of_equations::stabilizer_orbit_rep_work computing "
616 "stabilizer inside a group of order " << go <<
" in action ";
625 cout <<
"orbit_of_equations::stabilizer_orbit_rep_work orbit length "
626 "does not divide group order" << endl;
630 cout <<
"orbit_of_equations::stabilizer_orbit_rep_work expecting "
631 "group of order " << target_go << endl;
634 Stab->
init(default_action, verbose_level - 2);
638 if (D.
compare(cur_go, target_go) == 0) {
641 if (cnt % 2 || Stab->
nb_gen[0] == 0) {
644 cout <<
"orbit_of_equations::stabilizer_orbit_rep_work "
645 "created random Schreier generator" << endl;
653 cout <<
"orbit_of_equations::stabilizer_orbit_rep_work "
654 "created random schreier generator from sims"
662 if (Stab->
strip(E1, residue, drop_out_level, image,
665 cout <<
"orbit_of_equations::stabilizer_orbit_rep_work "
666 "element strips through" << endl;
668 cout <<
"residue:" << endl;
678 cout <<
"orbit_of_equations::stabilizer_orbit_rep_work "
679 "element needs to be inserted at level = "
680 << drop_out_level <<
" with image " << image << endl;
690 if ((f_vv && f_added) || f_vvv) {
691 cout <<
"iteration " << cnt
692 <<
" the n e w group order is " << cur_go
693 <<
" expecting a group of order " << target_go << endl;
700 cout <<
"orbit_of_equations::stabilizer_orbit_rep_work finished" << endl;
709 int f_v = (verbose_level >= 1);
713 int *transporter_inv;
716 cout <<
"orbit_of_equations::stabilizer_any_point" << endl;
723 full_group_order, 0 );
726 transporter_inv, 0 );
739 cout <<
"orbit_of_equations::stabilizer_any_point "
740 "before gens->init_generators_for_the_conjugate_group_aGav" << endl;
743 transporter, verbose_level);
745 cout <<
"orbit_of_equations::stabilizer_any_point "
746 "after gens->init_generators_for_the_conjugate_group_aGav" << endl;
753 cout <<
"orbit_of_equations::stabilizer_any_point done" << endl;
762 int f_v = (verbose_level >= 1);
770 cout <<
"orbit_of_equations::search_data" << endl;
773 cout <<
"The equation is:";
781 orbit_of_equations_compare_func,
786 cout <<
"orbit_of_equations::search_data we found the equation at " << idx << endl;
792 cout <<
"orbit_of_equations::search_data we did not find the equation" << endl;
797 cout <<
"orbit_of_equations::search_data done" << endl;
806 int f_v = (verbose_level >= 1);
813 cout <<
"orbit_of_equations::search_data" << endl;
816 cout <<
"The data set is:";
821 orbit_of_equations_compare_func,
826 cout <<
"orbit_of_equations::search_data we found the equation at " << idx << endl;
832 cout <<
"orbit_of_equations::search_data we did not find the equation" << endl;
837 cout <<
"orbit_of_equations::search_data done" << endl;
856static int orbit_of_equations_compare_func(
void *a,
void *b,
void *data)
860 int *p = (
int *) data;
864 for (i = 0; i < n; i++) {
a collection of functions related to sorted vectors
int vec_search(void **v, int(*compare_func)(void *a, void *b, void *data), void *data_for_compare, int len, void *a, int &idx, int verbose_level)
void PG_element_normalize_from_front(int *v, int stride, int len)
a collection of functions related to file io
void int_matrix_write_csv(std::string &fname, int *M, int m, int n)
interface to system functions
int random_integer(int p)
void print_equation_simple(std::ostream &ost, int *coeffs)
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)
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 init(actions::action *A)
void init_generators_for_the_conjugate_group_aGav(strong_generators *SG, int *Elt_a, int verbose_level)
void init_from_sims(groups::sims *S, int verbose_level)
data_structures_groups::vector_ge * gens
induced action on the set of homogeneous polynomials over a finite field
ring_theory::homogeneous_polynomial_domain * HPD
void compute_image_int_low_level(int *Elt, int *input, int *output, int verbose_level)
groups::strong_generators * stabilizer_orbit_rep(ring_theory::longinteger_object &full_group_order, int verbose_level)
int search_equation(int *eqn, int &idx, int verbose_level)
induced_actions::action_on_homogeneous_polynomials * AonHPD
void get_canonical_form(int *canonical_equation, int *transporter_to_canonical_form, groups::strong_generators *&gens_stab_of_canonical_equation, ring_theory::longinteger_object &full_group_order, int verbose_level)
int search_data(int *data, int &idx, int verbose_level)
void(* print_function)(int *object, int sz, void *print_function_data)
void save_csv(std::string &fname, int verbose_level)
void map_an_equation(int *object_in, int *object_out, int *Elt, int verbose_level)
void * print_function_data
void get_random_schreier_generator(int *Elt, int verbose_level)
field_theory::finite_field * F
int position_of_original_object
void stabilizer_orbit_rep_work(actions::action *default_action, ring_theory::longinteger_object &go, groups::sims *&Stab, int verbose_level)
groups::strong_generators * stabilizer_any_point(ring_theory::longinteger_object &full_group_order, int idx, int verbose_level)
void(* reduction_function)(int *object, void *reduction_function_data)
void * reduction_function_data
void get_transporter(int idx, int *transporter, int verbose_level)
void init(actions::action *A, field_theory::finite_field *F, induced_actions::action_on_homogeneous_polynomials *AonHPD, groups::strong_generators *SG, int *coeff_in, int verbose_level)
groups::strong_generators * SG
void compute_orbit(int *coeff, int verbose_level)
#define Int_vec_copy(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects