10#ifndef ORBITER_SRC_LIB_GROUP_ACTIONS_GROUPS_GROUPS_H_
11#define ORBITER_SRC_LIB_GROUP_ACTIONS_GROUPS_GROUPS_H_
15namespace layer3_group_actions {
31 field_theory::finite_field *
F1;
32 field_theory::finite_field *
F2;
73 data_structures::page_storage *
Elts;
84 void element_mult(
int *A,
int *B,
int *AB,
int verbose_level);
92 void make_element(
int *Elt,
int *data,
int verbose_level);
96 int &size,
int &nb_gens,
int verbose_level);
113 field_theory::finite_field *
Fq;
127 void init(field_theory::finite_field *
Fq,
133 int f_switch,
int *mtx2x2_T,
int *mtx2x2_S,
int *Elt,
136 int *mtx4x4,
int *mtx5x5,
int verbose_level);
138 int *E4,
int *E5,
int verbose_level);
140 int *E4,
int &f_switch,
int *E2_a,
int *E2_b,
143 int &f_switch,
int *E2_a,
int *E2_b,
int *E4,
179 field_theory::finite_field *
F;
249 field_theory::finite_field *
F;
288 std::string &subgroup_fname,
289 std::string &subgroup_label,
292 std::string &subgroup_label,
293 std::string &subgroup_order_text,
294 int nb_subgroup_generators,
295 int *subgroup_generators_data,
298 void report(std::ostream &fp,
int f_sylow,
int f_group_table,
299 int f_conjugacy_classes_and_normalizers,
300 graphics::layered_graph_draw_options *LG_Draw_options,
303 graphics::layered_graph_draw_options *O,
304 int f_sylow,
int f_group_table,
int f_classes,
364 field_theory::finite_field *
GFq;
367 algebra::gl_classes *
C;
387 data_structures::page_storage *
Elts;
417 int *v,
int *A,
int *vA,
int verbose_level);
419 int *v,
int *A,
int *vA,
int verbose_level);
421 int *v,
int *A,
int *vA,
int verbose_level);
423 int *coeff_in,
int *coeff_out, algebraic_geometry::surface_domain *Surf,
429 void GL_mult(
int *A,
int *B,
int *AB,
int verbose_level);
447 void (*point_label)(std::stringstream &sstr,
int pt,
void *
data),
448 void *point_label_data);
461 orthogonal_geometry::orthogonal *O,
465 int f_semisimilarity,
466 int *Elt,
int verbose_level);
468 sims *S,
int *&Sol,
int &cnt,
469 int f_path_select,
int select_value,
476 long int *base,
int *transversal_length,
479 int &size,
int &nb_gens,
int verbose_level);
523 long int *set,
int set_sz,
int go,
int l,
524 std::vector<int> &Idx,
527 long int *set,
int set_sz,
int go,
528 long int *orbit_type,
531 void report_type(std::ostream &ost,
long int *orbit_type,
long int goi);
533 long int *&compact_type,
long int *&row_labels,
long int *&col_labels,
int &m,
int &n);
542 int (*test_function)(
long int *orbit,
int orbit_length,
void *data),
543 void *test_function_data,
549 int (*test_function)(
long int *orbit,
int orbit_length,
void *data),
550 void *test_function_data,
559 int (*test_function)(
long int *orbit1,
int orbit_length1,
long int *orbit2,
int orbit_length2,
void *data),
560 void *test_function_data,
564 graph_theory::colored_graph *&CG,
566 long int *filter_by_set,
567 int filter_by_set_size,
570 int f_has_user_data,
long int *user_data,
int user_data_size,
571 int f_has_colors,
int number_colors,
int *color_table,
572 int (*test_function)(
long int *orbit1,
int orbit_length1,
long int *orbit2,
int orbit_length2,
void *data),
573 void *test_function_data,
576 graph_theory::colored_graph *&CG,
580 int f_has_user_data,
long int *user_data,
int user_data_size,
581 int f_has_colors,
int number_colors,
int *color_table,
582 int (*test_function)(
long int *orbit1,
int orbit_length1,
long int *orbit2,
int orbit_length2,
void *data),
583 void *test_function_data,
589 long int *extracted_set,
594 long int *orbits_idx,
595 long int *extracted_set,
598 graph_theory::colored_graph *&CG,
602 int f_has_user_data,
long int *user_data,
int user_data_size,
603 int (*test_function)(
long int *orbit1,
int orbit_length1,
long int *orbit2,
int orbit_length2,
void *data),
604 void *test_function_data,
605 data_structures::set_of_sets *my_orbits_classified,
608 graph_theory::colored_graph *&CG,
611 int nb_orbit_lengths,
613 int f_has_user_data,
long int *user_data,
int user_data_size,
614 int (*test_function)(
long int *orbit1,
int orbit_length1,
long int *orbit2,
int orbit_length2,
void *data),
615 void *test_function_data,
616 data_structures::set_of_sets *my_orbits_classified,
619 data_structures::set_of_sets *&Orbit_invariant,
620 int (*evaluate_orbit_invariant_function)(
int a,
int i,
int j,
void *evaluate_data,
int verbose_level),
621 void *evaluate_data,
int verbose_level);
624 void report(std::ostream &ost,
int verbose_level);
625 void report_quick(std::ostream &ost,
int verbose_level);
661 std::string &subgroup_label,
662 std::string &subgroup_order_text,
663 int nb_subgroup_generators,
664 std::string &subgroup_generators_label,
701 int argc, std::string *argv,
738 data_structures::page_storage *
Elts;
746 int page_length_log,
int verbose_level);
747 void init(
int degree,
int page_length_log,
int verbose_level);
748 void init_data(
int page_length_log,
int verbose_level);
750 int base_length,
int *base,
int page_length_log,
755 void mult(
int *A,
int *B,
int *AB);
756 void copy(
int *A,
int *B);
757 void invert(
int *A,
int *Ainv);
760 void print(
int *Elt, std::ostream &ost);
763 void (*point_label)(std::stringstream &sstr,
long int pt,
void *data),
764 void *point_label_data);
769 void make_element(
int *Elt,
int *data,
int verbose_level);
804 data_structures::page_storage *
PS;
821 void element_mult(
int *A,
int *B,
int *AB,
int verbose_level);
909 int idx_deleted_generator,
912 int **old_images,
int verbose_level);
916 int idx_generator_to_delete,
int verbose_level);
925 int *elt,
int **old_images,
926 int idx_generator_to_delete,
int verbose_level);
928 int *elt,
int **old_images,
int verbose_level);
932 long int get_image(
long int i,
int gen_idx,
int verbose_level);
939 int &orbit_idx,
int *Elt,
int verbose_level);
941 int &orbit_idx,
int *Elt,
int verbose_level);
942 void coset_rep(
int j,
int verbose_level);
953 int *prefered_reps,
int nb_prefered_reps,
956 long int *preferred_labels,
int verbose_level);
958 long int *subset,
int verbose_level);
960 int len,
long int *subset,
int verbose_level);
963 int pt,
int max_depth,
int verbose_level);
966 int *Elt,
int verbose_level);
971 int *Elt,
int orbit_no,
978 int *intersection_cnt);
980 int *subset,
int verbose_level);
982 int len,
long int *subset,
int verbose_level);
984 int &nb_orbits_on_subset,
int *&orbit_perm,
int *&orbit_perm_inv);
986 data_structures::partitionstack &S,
int verbose_level);
990 int orbit_idx,
int verbose_level);
993 ring_theory::longinteger_object &full_group_order,
997 ring_theory::longinteger_object &full_group_order,
int pt,
1000 ring_theory::longinteger_object &full_group_order,
1001 int orbit_idx,
int verbose_level);
1003 ring_theory::longinteger_object &full_group_order,
1009 ring_theory::longinteger_object &full_group_order,
1010 int orbit_idx,
int verbose_level);
1012 ring_theory::longinteger_object &go,
1015 void get_orbit(
int orbit_idx,
long int *set,
int &len,
1018 int *orbit_count,
int verbose_level);
1020 int *orbit_count,
int verbose_level);
1022 void get_orbit_reps(
int *&Reps,
int &nb_reps,
int verbose_level);
1028 int &nb_orbit_lengths);
1032 int *Adj,
int n,
int *&Decomp_scheme,
int verbose_level);
1034 int *&point_list,
int &point_list_length);
1040 int gen_hdl_first,
int nb_gen,
1050 int (*compute_orbit_invariant_callback)(
schreier *Sch,
1051 int orbit_idx,
void *data,
int verbose_level),
1052 void *compute_orbit_invariant_data,
1054 void print_TDA(std::ostream &ost, geometry::object_with_canonical_form *OwCF,
1055 combinatorics::classification_of_objects_report_options *Report_options,
1058 combinatorics::encoded_combinatorial_object *Enc,
1062 void latex(std::string &fname);
1068 void print(std::ostream &ost);
1076 std::string &fname_mask,
1077 graphics::layered_graph_draw_options *Opt,
1084 void (*print_point)(std::ostream &ost,
int pt,
void *data),
1088 void print_tables(std::ostream &ost,
int f_with_cosetrep);
1095 void print_orbit(std::ostream &ost,
int orbit_no);
1101 ring_theory::longinteger_object &full_group_order,
1105 ring_theory::longinteger_object &full_group_order,
1113 std::ostream &ost,
int f_tex,
1115 ring_theory::longinteger_object &full_group_order);
1117 std::ostream &ost,
int f_tex,
1122 int orbit_no,
int f_truncate,
int max_length);
1125 void (*print_point)(std::ostream &ost,
int pt,
void *data),
1130 int orbit_no,
long int *point_labels);
1135 std::string &fname_mask,
1138 graphics::layered_graph_draw_options *Opt,
1139 int f_has_point_labels,
long int *point_labels,
1142 graphics::layered_graph_draw_options *Opt,
1144 int f_has_point_labels,
long int *point_labels,
1147 graphics::layered_graph_draw_options *Opt,
1148 int *weight,
int *placement_x,
int max_depth,
1150 int f_has_point_labels,
long int *point_labels,
1153 graphics::mp_graphics &G,
1154 graphics::layered_graph_draw_options *Opt,
1155 int parent_x,
int parent_y,
int *weight,
1156 int *placement_x,
int max_depth,
int i,
int last,
1160 graphics::mp_graphics &G,
1161 graphics::layered_graph_draw_options *Opt,
1162 int parent_x,
int parent_y,
int *weight,
1163 int *placement_x,
int max_depth,
int i,
int last,
1164 int f_has_point_labels,
long int *point_labels,
1168 int left,
int right,
int i,
int last);
1172 void print_path(std::ostream &ost,
int *path,
int l);
1205 ring_theory::longinteger_object
tgo;
1213 int *Elt,
void *data,
int verbose_level);
1225 int *Elt,
int verbose_level);
1250 int *Elt,
int verbose_level),
1344 int *Elt1, *Elt2, *Elt3, *Elt4;
1345 int *strip1, *strip2;
1347 int *eltrk1, *eltrk2, *eltrk3;
1351 int *schreier_gen, *schreier_gen1;
1398 void group_order(ring_theory::longinteger_object &go);
1424 void element_unrank(ring_theory::longinteger_object &a,
int *elt,
1426 void element_unrank(ring_theory::longinteger_object &a,
int *elt);
1433 void element_rank(ring_theory::longinteger_object &a,
int *elt);
1441 void coset_rep(
int *Elt,
int i,
int j,
int verbose_level);
1450 int *&Path,
int *&Label,
1452 void coset_rep_inv(
int *Elt,
int i,
int j,
int verbose_level_le);
1460 int *tl,
int verbose_level);
1464 long int elt_rk,
int *perm,
int verbose_level);
1469 void get_orbit(
int orbit_idx, std::vector<int> &Orb,
int verbose_level);
1486 int target_length,
int verbose_level);
1487 int strip_and_add(
int *elt,
int *residue,
int verbose_level);
1490 int strip(
int *elt,
int *residue,
int &drop_out_level,
1491 int &image,
int verbose_level);
1499 int lvl,
int verbose_level);
1506 ring_theory::longinteger_object &target_go,
1509 ring_theory::longinteger_object &target_go,
1510 int f_override_choose_next_base_point,
1512 int *Elt,
int verbose_level),
1516 int f_target_go, ring_theory::longinteger_object *target_go,
1517 int f_override_choose_next_base_point,
1519 int *Elt,
int verbose_level),
1528 void (*choose_random_generator_for_subgroup)(
1529 sims *G,
int *Elt,
int verbose_level),
1534 int *C,
int verbose_level);
1536 int *Gen_idx,
int nb_gens,
int *N,
long int &N_go,
1539 int *Order,
int *Residue,
int verbose_level);
1551 int *orders,
int nb,
int verbose_level);
1553 int *tl,
int verbose_level);
1558 int *coset_reps,
int nb_cosets,
1562 int *coset_reps,
int nb_cosets,
1565 int *Elt_gens,
int nb_gens,
int subgroup_index,
1569 sims &S,
int pt,
int verbose_level);
1576 int pt,
int verbose_level);
1584 int f_overshooting_OK,
int verbose_level);
1587 long int *set,
int size,
int verbose_level);
1590 int *Elt,
int nb_fixpoints,
actions::action *A_given,
int verbose_level);
1592 int &len,
int &sz,
int verbose_level);
1596 int &nb_elements,
int verbose_level);
1600 int *element_ranks,
int verbose_level);
1602 int ord_ab,
int &a,
int &b,
int &nb_trials,
1605 int &nb_trials,
int verbose_level);
1607 int ord,
int &nb_trials,
int max_trials,
1610 int *Elt,
int &e,
int &nb_trials,
int verbose_level);
1612 int *word,
int *Elt,
int verbose_level);
1616 int *&Adj,
long int &n,
1622 int *&class_size,
int *&class_rep,
1626 long int mult_by_rank(
long int rk_a,
long int rk_b,
int verbose_level);
1632 int *Elt_b,
int *Elt_bv,
int verbose_level);
1634 int *Zuppos,
int &nb_zuppos,
int verbose_level);
1636 int *
subgroup,
int subgroup_sz,
int *
gens,
int &nb_gens,
1639 int *group,
int &group_sz,
1653 void print(
int verbose_level);
1678 char *fname,
int verbose_level);
1681 void report(std::ostream &ost,
1682 std::string &prefix,
1683 graphics::layered_graph_draw_options *LG_Draw_options,
1719 char *ascii_coding,
int verbose_level);
1724 std::vector<int> &gen_handle,
1725 std::vector<int> &
tl,
1728 int nb_gen,
int verbose_level);
1730 sims *parent_group_S,
int *data,
1735 int nb_elements,
int elt_size,
1736 int *transversal_length,
1741 int nb_elements,
int elt_size,
1742 const char *ascii_target_go,
1747 int data_gens_size,
int nb_gens,
1748 ring_theory::longinteger_object &target_go,
1753 std::string &go_text,
1757 int pt,
int &orbit_idx,
1758 ring_theory::longinteger_object &full_group_order,
1761 int orbit_idx, ring_theory::longinteger_object &full_group_order,
1770 int *data,
int index,
1776 const char *subgroup_order_text,
sims *S,
1777 int *&subgroup_gens_idx,
int &nb_subgroup_gens,
1780 int nb_subgroup_gens,
1781 const char *subgroup_order_text,
1785 int nb_subgroup_gens,
1787 std::string &subgroup_order_text,
1794 int group_index,
int verbose_level);
1796 int group_index,
int verbose_level);
1797 void group_order(ring_theory::longinteger_object &go);
1819 void (*point_label)(std::stringstream &sstr,
long int pt,
void *data),
1820 void *point_label_data);
1832 void (*point_label)(std::stringstream &sstr,
long int pt,
void *data),
1833 void *point_label_data);
1838 long int *&Subgroup_elements_by_index,
1839 long int &sz_subgroup,
int verbose_level);
1841 schreier *&Sch,
int verbose_level);
1844 schreier *&Sch,
long int *set,
int len,
int verbose_level);
1848 int &nb_orbits,
int *&orbit_reps,
int verbose_level);
1852 int pt,
int verbose_level);
1854 int *&Orbit_reps,
int *&Orbit_lengths,
int &nb_orbits,
1855 int **&Pts_per_generator,
int *&Nb_per_generator,
1860 void write_file(std::string &fname,
int verbose_level);
1869 long int *set,
int len,
int verbose_level);
1874 long int *set,
int set_sz,
int verbose_level);
1879 int pt_A,
int pt_B,
int *Elt,
int verbose_level);
1881 std::string &label_txt,
1886 std::string &label_txt,
1891 std::string &label_txt,
1897 geometry::projective_space *P3,
1904 std::string &fname, std::string &label, std::string &label_tex,
1910 field_theory::finite_field *F,
int n,
1920 int *Elt,
int target_go,
int verbose_level);
1945 field_theory::finite_field *Fq,
int verbose_level);
1950 ring_theory::longinteger_object &spread_stab_go,
1972 field_theory::finite_field *F,
int n,
1978 field_theory::finite_field *F,
int iso,
1982 field_theory::finite_field *F,
int iso,
1986 field_theory::finite_field *F,
int f_with_normalizer,
int f_semilinear,
1991 field_theory::finite_field *F,
int a,
1996 field_theory::finite_field *F,
int a,
2000 field_theory::finite_field *F,
int iso,
2003 int q,
int k,
int iso,
2007 field_theory::finite_field *F,
2011 field_theory::finite_field *F,
2014 int nb_pairs,
int °ree,
int verbose_level);
2016 int nb_pairs,
int °ree,
int verbose_level);
2019 geometry::projective_space *P,
int line1,
int line2,
2059 void report(std::ostream &ost);
2070 ring_theory::longinteger_object
go;
2083 void report(std::ostream &ost);
2098 field_theory::finite_field *
F;
2156 data_structures::page_storage *
Elts;
2179 int *input,
int *output,
int verbose_level);
2183 void element_mult(
int *A,
int *B,
int *AB,
int verbose_level);
2188 int *v_in,
int *v_out,
int verbose_level);
2197 int f,
int *Elt_component);
2199 void make_element(
int *Elt,
int *data,
int verbose_level);
2205 int &size,
int &nb_gens,
int verbose_level);
2207 std::ostream &ost,
int verbose_level);
2219 void report(std::ostream &ost,
int verbose_level);
2224 int &nb_gens,
int °ree,
2233 int &nb_gens,
int °ree,
2240 int &nb_gens,
int °ree,
2242 std::string &orbits_restricted_fname,
2248 int &nb_gens,
int °ree,
2250 std::string &orbits_restricted_fname,
a permutation group in a fixed action.
compact storage of schreier vectors
a set and its known set stabilizer
to hold a vector of group elements
the direct product of two matrix groups in product action
data_structures::page_storage * Elts
int base_len_in_component1
void init(matrix_group *M1, matrix_group *M2, int verbose_level)
field_theory::finite_field * F2
void element_pack(int *Elt, uchar *elt)
void compute_base_and_transversals(int verbose_level)
void make_strong_generators_data(int *&data, int &size, int &nb_gens, int verbose_level)
void put_digit(uchar *elt, int f, int i, int d)
void element_unpack(uchar *elt, int *Elt)
void lift_generators(strong_generators *SG1, strong_generators *SG2, actions::action *A, strong_generators *&SG3, int verbose_level)
int base_len_in_component2
field_theory::finite_field * F1
void element_print_easy(int *Elt, std::ostream &ost)
int * the_transversal_length
long int * base_for_component2
void make_element(int *Elt, int *data, int verbose_level)
int degree_of_matrix_group2
void element_invert(int *A, int *Av, int verbose_level)
int dimension_of_matrix_group1
void element_mult(int *A, int *B, int *AB, int verbose_level)
void element_move(int *A, int *B, int verbose_level)
int get_digit(uchar *elt, int f, int i)
int degree_of_product_action
int element_is_one(int *Elt)
int degree_of_matrix_group1
long int element_image_of(int *Elt, long int a, int verbose_level)
int dimension_of_matrix_group2
void element_one(int *Elt)
long int * base_for_component1
exceptional isomorphism between orthogonal groups: O4, O5 and GL(2,q)
void apply_4_to_2(int *E4, int &f_switch, int *E2_a, int *E2_b, int verbose_level)
field_theory::finite_field * Fq
~exceptional_isomorphism_O4()
void apply_4_to_5(int *E4, int *E5, int verbose_level)
void print_as_2x2(int *mtx4x4)
void init(field_theory::finite_field *Fq, actions::action *A2, actions::action *A4, actions::action *A5, int verbose_level)
exceptional_isomorphism_O4()
void apply_2to4_embedded(int f_switch, int *mtx2x2_T, int *mtx2x2_S, int *Elt, int verbose_level)
void apply_2_to_4(int &f_switch, int *E2_a, int *E2_b, int *E4, int verbose_level)
void apply_5_to_4(int *mtx4x4, int *mtx5x5, int verbose_level)
description of a linear group from the command line
std::string restricted_action_text
linear_group_description()
~linear_group_description()
std::string subgroup_label
int nb_subgroup_generators
int f_null_polarity_group
int f_subgroup_by_generators
int f_subfield_structure_action
int f_borel_subgroup_upper
int read_arguments(int argc, std::string *argv, int verbose_level)
int orthogonal_group_epsilon
std::string subgroup_order_text
int f_borel_subgroup_lower
std::string subgroup_fname
int f_singer_group_and_frobenius
int f_wedge_action_detached
field_theory::finite_field * F
int f_on_rank_one_tensors
std::string override_polynomial
std::string subgroup_generators_label
int f_override_polynomial
creates a linear group from command line arguments using linear_group_description
void linear_group_init(linear_group_description *description, int verbose_level)
void create_latex_report(graphics::layered_graph_draw_options *O, int f_sylow, int f_group_table, int f_classes, int verbose_level)
void init_monomial_group(int verbose_level)
void report(std::ostream &fp, int f_sylow, int f_group_table, int f_conjugacy_classes_and_normalizers, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
void init_singer_group_and_frobenius(int singer_power, int verbose_level)
strong_generators * Strong_gens
void init_diagonal_group(int verbose_level)
void init_subgroup_Janko1(int verbose_level)
int vector_space_dimension
data_structures_groups::vector_ge * nice_gens
void init_PGL2q_OnConic(int verbose_level)
linear_group_description * description
void init_singer_group(int singer_power, int verbose_level)
void init_identity_subgroup(int verbose_level)
void init_subgroup_from_file(std::string &subgroup_fname, std::string &subgroup_label, int verbose_level)
void init_borel_subgroup_upper(int verbose_level)
void init_symplectic_group(int verbose_level)
void init_null_polarity_group(int verbose_level)
strong_generators * initial_strong_gens
int f_has_strong_generators
field_theory::finite_field * F
void init_subgroup_by_generators(std::string &subgroup_label, std::string &subgroup_order_text, int nb_subgroup_generators, int *subgroup_generators_data, int verbose_level)
void init_wedge_action(int verbose_level)
void init_wedge_action_detached(int verbose_level)
actions::action * A_linear
void init_orthogonal_group(int epsilon, int verbose_level)
void init_subfield_structure_action(int s, int verbose_level)
a matrix group over a finite field in projective, vector space or affine action
void encode_frobenius(uchar *elt, int d)
void GL_print_easy_normalized(int *Elt, std::ostream &ost)
void init_gl_classes(int verbose_level)
void GL_print_easy(int *Elt, std::ostream &ost)
void GL_invert(int *A, int *Ainv)
void GL_code_for_make_element(int *Elt, int *data)
int bits_extension_degree
int f_kernel_is_diagonal_matrices
void init_affine_group(int n, field_theory::finite_field *F, int f_semilinear, actions::action *A, int verbose_level)
void GL_pack(int *Elt, uchar *elt)
void GL_print_for_make_element(int *Elt, std::ostream &ost)
void free_data(int verbose_level)
int GL_element_entry_frobenius(int *Elt)
int base_len(int verbose_level)
void init_base_projective(actions::action *A, int verbose_level)
void init_base_general_linear(actions::action *A, int verbose_level)
int decode_frobenius(uchar *elt)
void GL_mult_internal(int *A, int *B, int *AB, int verbose_level)
void allocate_data(int verbose_level)
void base_and_transversal_length(int base_len, long int *base, int *transversal_length, int verbose_level)
void put_digit(uchar *elt, int i, int j, int d)
void GL_invert_internal(int *A, int *Ainv, int verbose_level)
void init_base(actions::action *A, int verbose_level)
void GL_mult(int *A, int *B, int *AB, int verbose_level)
void decode_matrix(int *Elt, int n, uchar *elt)
int get_digit(uchar *elt, int i, int j)
void GL_print_for_make_element_no_commas(int *Elt, std::ostream &ost)
void compute_elt_size(int verbose_level)
void make_GL_element(int *Elt, int *A, int f)
long int GL_image_of_AG_element(int *Elt, long int a, int verbose_level)
void GL_copy_internal(int *A, int *B)
void make_element(int *Elt, int *data, int verbose_level)
void setup_page_storage(int page_length_log, int verbose_level)
void matrix_minor(int *Elt, int *Elt1, matrix_group *mtx1, int f, int verbose_level)
void GL_transpose_internal(int *A, int *At, int verbose_level)
void strong_generators_low_level(int *&data, int &size, int &nb_gens, int verbose_level)
void GL_print_easy_latex(int *Elt, std::ostream &ost)
void orthogonal_group_random_generator(actions::action *A, orthogonal_geometry::orthogonal *O, int f_siegel, int f_reflection, int f_similarity, int f_semisimilarity, int *Elt, int verbose_level)
void GL_print_latex(int *Elt, std::ostream &ost)
void GL_print_easy_latex_with_option_numerical(int *Elt, int f_numerical, std::ostream &ost)
void GL_copy(int *A, int *B)
void GL_unpack(uchar *elt, int *Elt, int verbose_level)
int has_shape_of_singer_cycle(int *Elt)
void GL_transpose(int *A, int *At, int verbose_level)
void encode_matrix(int *Elt, int n, uchar *elt)
void action_from_the_right_all_types(int *v, int *A, int *vA, int verbose_level)
void projective_action_from_the_right(int *v, int *A, int *vA, int verbose_level)
void init_projective_group(int n, field_theory::finite_field *F, int f_semilinear, actions::action *A, int verbose_level)
data_structures::page_storage * Elts
void GL_print_latex_with_print_point_function(int *Elt, std::ostream &ost, void(*point_label)(std::stringstream &sstr, int pt, void *data), void *point_label_data)
field_theory::finite_field * GFq
void general_linear_action_from_the_right(int *v, int *A, int *vA, int verbose_level)
void GL_one_internal(int *Elt)
void matrices_without_eigenvector_one(sims *S, int *&Sol, int &cnt, int f_path_select, int select_value, int verbose_level)
void init_general_linear_group(int n, field_theory::finite_field *F, int f_semilinear, actions::action *A, int verbose_level)
long int GL_image_of_PG_element(int *Elt, long int a, int verbose_level)
long int image_of_element(int *Elt, long int a, int verbose_level)
void substitute_surface_equation(int *Elt, int *coeff_in, int *coeff_out, algebraic_geometry::surface_domain *Surf, int verbose_level)
int GL_element_entry_ij(int *Elt, int i, int j)
void init_base_affine(actions::action *A, int verbose_level)
compute orbits of a group in a given action; allows file io
void get_orbit_number_and_position(long int a, int &orbit_idx, int &orbit_pos, int verbose_level)
void extract_orbits_using_classification(int orbit_length, int nb_orbits, long int *orbits_idx, long int *extracted_set, int verbose_level)
void extract_orbits(int orbit_length, int nb_orbits, int *orbits, long int *extracted_set, int verbose_level)
void compute_orbit_invariant_after_classification(data_structures::set_of_sets *&Orbit_invariant, int(*evaluate_orbit_invariant_function)(int a, int i, int j, void *evaluate_data, int verbose_level), void *evaluate_data, int verbose_level)
void create_graph_on_orbits_of_a_certain_length(graph_theory::colored_graph *&CG, std::string &fname, int orbit_length, int &type_idx, int f_has_user_data, long int *user_data, int user_data_size, int f_has_colors, int number_colors, int *color_table, int(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, int verbose_level)
void compute_compact_type(long int *orbit_type, long int goi, long int *&compact_type, long int *&row_labels, long int *&col_labels, int &m, int &n)
void create_latex_report(int verbose_level)
void report_type(std::ostream &ost, long int *orbit_type, long int goi)
void idx_of_points_in_orbits_of_length_l(long int *set, int set_sz, int go, int l, std::vector< int > &Idx, int verbose_level)
void create_graph_on_orbits_of_a_certain_length_override_orbits_classified(graph_theory::colored_graph *&CG, std::string &fname, int orbit_length, int &type_idx, int f_has_user_data, long int *user_data, int user_data_size, int(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, data_structures::set_of_sets *my_orbits_classified, int verbose_level)
void create_weighted_graph_on_orbits(graph_theory::colored_graph *&CG, std::string &fname, int *Orbit_lengths, int nb_orbit_lengths, int *&Type_idx, int f_has_user_data, long int *user_data, int user_data_size, int(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, data_structures::set_of_sets *my_orbits_classified, int verbose_level)
void print_orbits_based_on_filtered_orbits(std::ostream &ost, data_structures::set_of_sets *Filtered_orbits)
int Orbits_classified_nb_types
void report_quick(std::ostream &ost, int verbose_level)
void report_classified_orbits_by_lengths(std::ostream &ost)
void report_orbits_of_type(std::ostream &ost, int type_idx)
void init(actions::action *A, strong_generators *SG, int f_load_save, std::string &prefix, int verbose_level)
void classify_orbits_by_length(int verbose_level)
int get_orbit_type_index(int orbit_length)
data_structures::tally * Classify_orbits_by_length
void print_orbits_of_a_certain_length(int orbit_length)
int get_orbit_type_index_if_present(int orbit_length)
void test_all_orbits_by_length(int(*test_function)(long int *orbit, int orbit_length, void *data), void *test_function_data, int verbose_level)
void create_graph_on_orbits_of_a_certain_length_after_filtering(graph_theory::colored_graph *&CG, std::string &fname, long int *filter_by_set, int filter_by_set_size, int orbit_length, int &type_idx, int f_has_user_data, long int *user_data, int user_data_size, int f_has_colors, int number_colors, int *color_table, int(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, int verbose_level)
int test_pair_of_orbits_of_a_equal_length(int orbit_length, int type_idx, int idx1, int idx2, long int *Orbit1, long int *Orbit2, int(*test_function)(long int *orbit1, int orbit_length1, long int *orbit2, int orbit_length2, void *data), void *test_function_data, int verbose_level)
void orbit_type_of_set(long int *set, int set_sz, int go, long int *orbit_type, int verbose_level)
int * Orbits_classified_length
void stabilizer_of(int orbit_idx, int verbose_level)
void test_orbits_of_a_certain_length(int orbit_length, int &type_idx, int &prev_nb, int(*test_function)(long int *orbit, int orbit_length, void *data), void *test_function_data, int verbose_level)
void report_orbit_lengths(std::ostream &ost)
void report(std::ostream &ost, int verbose_level)
void report_classified_orbit_lengths(std::ostream &ost)
data_structures::set_of_sets * Orbits_classified
a domain for permutation groups whose elements are given in the permutation representation
int f_has_strong_generators
strong_generators * Strong_gens
void permutation_group_init(permutation_group_description *description, int verbose_level)
actions::action * A_initial
~permutation_group_create()
void init_subgroup_by_generators(std::string &subgroup_label, std::string &subgroup_order_text, int nb_subgroup_generators, std::string &subgroup_generators_label, int verbose_level)
permutation_group_description * Descr
data_structures_groups::vector_ge * nice_gens
permutation_group_create()
a domain for permutation groups whose elements are given in the permutation representation
std::string subgroup_order_text
int read_arguments(int argc, std::string *argv, int verbose_level)
int f_subgroup_by_generators
~permutation_group_description()
std::string subgroup_generators_label
std::string bsgs_label_tex
permutation_group_description()
std::string subgroup_label
std::string bsgs_order_text
int nb_subgroup_generators
permutation_group_type type
std::string bsgs_generators
a domain for permutation groups whose elements are given in the permutation representation
permutation_representation_domain()
void unpack(uchar *elt, int *Elt)
void make_element(int *Elt, int *data, int verbose_level)
void print(int *Elt, std::ostream &ost)
void code_for_make_element(int *Elt, int *data)
void print_for_make_element(int *Elt, std::ostream &ost)
void init_product_action(int m, int n, int page_length_log, int verbose_level)
void init_data(int page_length_log, int verbose_level)
void invert(int *A, int *Ainv)
void mult(int *A, int *B, int *AB)
void init(int degree, int page_length_log, int verbose_level)
void transversal_rep(int i, int j, int *Elt, int verbose_level)
void copy(int *A, int *B)
void print_for_make_element_no_commas(int *Elt, std::ostream &ost)
void init_with_base(int degree, int base_length, int *base, int page_length_log, actions::action &A, int verbose_level)
~permutation_representation_domain()
void print_with_action(actions::action *A, int *Elt, std::ostream &ost)
data_structures::page_storage * Elts
void print_with_print_point_function(int *Elt, std::ostream &ost, void(*point_label)(std::stringstream &sstr, long int pt, void *data), void *point_label_data)
void pack(int *Elt, uchar *elt)
homomorphism to a permutation group
data_structures_groups::vector_ge * gens
void init(actions::action *A_original, int f_stay_in_the_old_action, data_structures_groups::vector_ge *gens, int *Perms, int degree, int verbose_level)
void element_print_latex(int *Elt, std::ostream &ost)
void element_move(int *A, int *B, int verbose_level)
void element_one(int *Elt)
void element_print_for_make_element(int *Elt, std::ostream &ost)
~permutation_representation()
permutation_representation()
void element_print_easy(int *Elt, std::ostream &ost)
void element_unpack(uchar *elt, int *Elt)
void element_invert(int *A, int *Av, int verbose_level)
actions::action * A_original
int f_stay_in_the_old_action
permutation_representation_domain * P
data_structures::page_storage * PS
void element_mult(int *A, int *B, int *AB, int verbose_level)
int element_is_one(int *Elt)
long int element_image_of(int *Elt, long int a, int verbose_level)
void element_pack(int *Elt, uchar *elt)
Schreier Sims algorithm to create the stabilizer chain of a permutation group.
void get_generator_external_from_generators(int *Elt, int verbose_level)
void get_generator_internal(int *Elt, int verbose_level)
void * callback_choose_random_generator_data
void get_generator(int *Elt, int verbose_level)
int f_override_choose_next_base_point_method
void init_base_of_choice(int base_of_choice_len, int *base_of_choice, int verbose_level)
void init(actions::action *A, int verbose_level)
void init_choose_next_base_point_method(int(*choose_next_base_point_method)(actions::action *A, int *Elt, int verbose_level), int verbose_level)
int(* choose_next_base_point_method)(actions::action *A, int *Elt, int verbose_level)
void get_generator_external_old_G(int *Elt, int verbose_level)
void get_generator_external(int *Elt, int verbose_level)
int f_has_target_group_order
void init_old_G(sims *old_G, int verbose_level)
int f_from_random_process
int f_interested_in_kernel
void init_generators(data_structures_groups::vector_ge *gens, int verbose_level)
void closure_group(int verbose_level)
void print_group_orders()
void compute_group_orders()
ring_theory::longinteger_object K_order
void get_generator_external_random_process(int *Elt, int verbose_level)
data_structures_groups::vector_ge * external_gens
void(* callback_choose_random_generator)(int iteration, int *Elt, void *data, int verbose_level)
void interested_in_kernel(actions::action *KA, int verbose_level)
ring_theory::longinteger_object tgo
void create_group(int verbose_level)
ring_theory::longinteger_object KG_order
void init_random_process(void(*callback_choose_random_generator)(int iteration, int *Elt, void *data, int verbose_level), void *callback_choose_random_generator_data, int verbose_level)
void init_target_group_order(ring_theory::longinteger_object &tgo, int verbose_level)
ring_theory::longinteger_object G_order
Schreier trees for orbits of groups on points.
void init_generators_recycle_images(data_structures_groups::vector_ge &generators, int **old_images, int idx_generator_to_delete, int verbose_level)
void draw_forest(std::string &fname_mask, graphics::layered_graph_draw_options *Opt, int f_has_point_labels, long int *point_labels, int verbose_level)
void get_orbit_decomposition_scheme_of_graph(int *Adj, int n, int *&Decomp_scheme, int verbose_level)
void compute_orbit_invariant(int *&orbit_invariant, int(*compute_orbit_invariant_callback)(schreier *Sch, int orbit_idx, void *data, int verbose_level), void *compute_orbit_invariant_data, int verbose_level)
void shallow_tree_generators(int orbit_idx, int f_randomized, schreier *&shallow_tree, int verbose_level)
void print_tree(int orbit_no)
void * print_function_data
void print_and_list_orbits(std::ostream &ost)
int preferred_choice_function_data2
void compute_point_orbit_with_limited_depth(int pt, int max_depth, int verbose_level)
void compute_all_point_orbits(int verbose_level)
void init_images_only(int nb_images, long int degree, int *images, int verbose_level)
void print_and_list_orbits_and_stabilizer_sorted_by_length(std::ostream &ost, int f_tex, actions::action *default_action, ring_theory::longinteger_object &full_group_order)
void print_and_list_orbits_and_stabilizer(std::ostream &ost, actions::action *default_action, ring_theory::longinteger_object &go, void(*print_point)(std::ostream &ost, int pt, void *data), void *data)
void print_and_list_all_orbits_and_stabilizers_with_list_of_elements_tex(std::ostream &ost, actions::action *default_action, strong_generators *gens, int verbose_level)
void print_and_list_orbit_tex(int i, std::ostream &ost)
void elements_in_orbit_of(int pt, int *orb, int &nb, int verbose_level)
void orbits_as_set_of_sets(data_structures::set_of_sets *&S, int verbose_level)
void write_orbit_summary(std::string &fname, actions::action *default_action, ring_theory::longinteger_object &full_group_order, int verbose_level)
void orbits_on_invariant_subset_fast(int len, int *subset, int verbose_level)
void compute_all_orbits_on_invariant_subset_lint(int len, long int *subset, int verbose_level)
void get_orbit_number_and_position(int pt, int &orbit_idx, int &orbit_pos, int verbose_level)
int subtree_calc_weight(int *weight, int &max_depth, int i, int last)
void coset_rep_with_verbosity(int j, int verbose_level)
void list_elements_as_permutations_vertically(std::ostream &ost)
void orbits_on_invariant_subset(int len, int *subset, int &nb_orbits_on_subset, int *&orbit_perm, int *&orbit_perm_inv)
void get_orbit_partition_of_points_and_lines(data_structures::partitionstack &S, int verbose_level)
void print_orbit(int orbit_no)
void write_to_file_binary(std::ofstream &fp, int verbose_level)
void print_TDA(std::ostream &ost, geometry::object_with_canonical_form *OwCF, combinatorics::classification_of_objects_report_options *Report_options, int verbose_level)
void random_schreier_generator(int *Elt, int verbose_level)
void print_and_list_orbits_sorted_by_length(std::ostream &ost)
void compute_orbit_statistic_lint(long int *set, int set_size, int *orbit_count, int verbose_level)
void random_schreier_generator_ith_orbit(int *Elt, int orbit_no, int verbose_level)
void swap_points(int i, int j, int verbose_level)
void read_from_file_binary(std::ifstream &fp, int verbose_level)
void init_generators_by_handle(std::vector< int > &gen_hdl, int verbose_level)
void extend_orbit(int *elt, int verbose_level)
void compute_all_point_orbits_with_preferred_labels(long int *preferred_labels, int verbose_level)
void print_orbit_lengths_tex(std::ostream &ost)
data_structures_groups::vector_ge gens_inv
void print_path(std::ostream &ost, int *path, int l)
void(* preferred_choice_function)(int pt, int &pt_pref, schreier *Sch, void *data, int data2, int verbose_level)
void print_orbit_tex(std::ostream &ost, int orbit_no)
void write_to_file_csv(std::string &fname_csv, int verbose_level)
void export_tree_as_layered_graph(int orbit_no, std::string &fname_mask, int verbose_level)
int sum_up_orbit_lengths()
void init_single_generator(int *elt, int verbose_level)
void get_orbit_length(int *&orbit_length, int verbose_level)
void write_file_binary(std::string &fname, int verbose_level)
void(* print_function)(std::ostream &ost, int pt, void *data)
int find_shortest_orbit_if_unique(int &idx)
void draw_tree(std::string &fname, graphics::layered_graph_draw_options *Opt, int orbit_no, int f_has_point_labels, long int *point_labels, int verbose_level)
void init_images(int nb_images, int verbose_level)
void init_preferred_choice_function(void(*preferred_choice_function)(int pt, int &pt_pref, schreier *Sch, void *data, int data2, int verbose_level), void *preferred_choice_function_data, int preferred_choice_function_data2, int verbose_level)
void orbits_on_invariant_subset_fast_lint(int len, long int *subset, int verbose_level)
void transporter_from_orbit_rep_to_point(int pt, int &orbit_idx, int *Elt, int verbose_level)
strong_generators * stabilizer_orbit_rep(actions::action *default_action, ring_theory::longinteger_object &full_group_order, int orbit_idx, int verbose_level)
void print_orbit_sorted(std::ostream &ost, int orbit_no)
void init_generators(data_structures_groups::vector_ge &generators, int verbose_level)
void transporter_from_point_to_orbit_rep(int pt, int &orbit_idx, int *Elt, int verbose_level)
void print_and_list_orbits_of_given_length(std::ostream &ost, int len)
void print_orbit_reps(std::ostream &ost)
void compute_point_orbit(int pt, int verbose_level)
void print_and_list_orbits_with_original_labels_tex(std::ostream &ost)
void print_and_list_orbit_and_stabilizer_with_list_of_elements_tex(int i, actions::action *default_action, strong_generators *gens, std::ostream &ost)
data_structures_groups::set_and_stabilizer * get_orbit_rep(actions::action *default_action, ring_theory::longinteger_object &full_group_order, int orbit_idx, int verbose_level)
void print_orbit_length_distribution(std::ostream &ost)
void make_orbit_trees(std::ostream &ost, std::string &fname_mask, graphics::layered_graph_draw_options *Opt, int verbose_level)
void list_all_orbits_tex(std::ostream &ost)
void print_and_list_orbit_and_stabilizer_tex(int i, actions::action *default_action, ring_theory::longinteger_object &full_group_order, std::ostream &ost)
void print_fancy(std::ostream &ost, int f_tex, actions::action *default_action, strong_generators *gens_full_group)
int subtree_depth_first(std::ostream &ost, int *path, int i, int last)
void print_and_list_orbits_sorted_by_length_tex(std::ostream &ost)
void print_fixed_points_tex(std::ostream &ost)
double get_average_word_length()
void compute_all_point_orbits_with_prefered_reps(int *prefered_reps, int nb_prefered_reps, int verbose_level)
void point_stabilizer(actions::action *default_action, ring_theory::longinteger_object &go, groups::sims *&Stab, int orbit_no, int verbose_level)
void compute_orbit_statistic(int *set, int set_size, int *orbit_count, int verbose_level)
void print_orbit_lengths(std::ostream &ost)
void subtree_place(int *weight, int *placement_x, int left, int right, int i, int last)
void images_append(int verbose_level)
void get_orbit_reps(int *&Reps, int &nb_reps, int verbose_level)
void move_point_here(int here, int pt)
void create_point_list_sorted(int *&point_list, int &point_list_length)
void init_images_recycle(int nb_images, int **old_images, int idx_deleted_generator, int verbose_level)
void print_orbit_using_callback(std::ostream &ost, int orbit_no, void(*print_point)(std::ostream &ost, int pt, void *data), void *data)
long int get_image(long int i, int gen_idx, int verbose_level)
void intersection_vector(int *set, int len, int *intersection_cnt)
data_structures_groups::vector_ge gens
void subtree_draw_vertices(graphics::mp_graphics &G, graphics::layered_graph_draw_options *Opt, int parent_x, int parent_y, int *weight, int *placement_x, int max_depth, int i, int last, int f_has_point_labels, long int *point_labels, int y_max, int verbose_level)
void print_orbit_through_labels(std::ostream &ost, int orbit_no, long int *point_labels)
void print_orbit_sorted_with_original_labels_tex(std::ostream &ost, int orbit_no, int f_truncate, int max_length)
void init(actions::action *A, int verbose_level)
int f_preferred_choice_function
void print(std::ostream &ost)
void print_orbit_using_labels(int orbit_no, long int *labels)
void get_orbit(int orbit_idx, long int *set, int &len, int verbose_level)
void get_orbit_rep_to(actions::action *default_action, ring_theory::longinteger_object &full_group_order, int orbit_idx, data_structures_groups::set_and_stabilizer *Rep, int verbose_level)
void * preferred_choice_function_data
void print_and_list_orbits_with_original_labels(std::ostream &ost)
void coset_rep_inv(int j, int verbose_level)
void print_and_list_orbits_using_labels(std::ostream &ost, long int *labels)
void draw_tree2(std::string &fname, graphics::layered_graph_draw_options *Opt, int *weight, int *placement_x, int max_depth, int i, int last, int f_has_point_labels, long int *point_labels, int verbose_level)
void subtree_draw_lines(graphics::mp_graphics &G, graphics::layered_graph_draw_options *Opt, int parent_x, int parent_y, int *weight, int *placement_x, int max_depth, int i, int last, int y_max, int verbose_level)
strong_generators * stabilizer_any_point_plus_cosets(actions::action *default_action, ring_theory::longinteger_object &full_group_order, int pt, data_structures_groups::vector_ge *&cosets, int verbose_level)
void read_file_binary(std::string &fname, int verbose_level)
void print_generators_latex(std::ostream &ost)
void compute_all_orbits_on_invariant_subset(int len, long int *subset, int verbose_level)
void get_orbit_in_order(std::vector< int > &Orb, int orbit_idx, int verbose_level)
void print_and_list_orbits_tex(std::ostream &ost)
data_structures_groups::schreier_vector * get_schreier_vector(int gen_hdl_first, int nb_gen, enum shallow_schreier_tree_strategy Shallow_schreier_tree_strategy, int verbose_level)
void print_orbit_with_original_labels(std::ostream &ost, int orbit_no)
void print_tables_latex(std::ostream &ost, int f_with_cosetrep)
void non_trivial_random_schreier_generator(actions::action *A_original, int *Elt, int verbose_level)
void get_orbit_lengths_once_each(int *&orbit_lengths, int &nb_orbit_lengths)
void trace_back(int *path, int i, int &j)
void get_orbit_partition(data_structures::partitionstack &S, int verbose_level)
void print_orbit_sorted_tex(std::ostream &ost, int orbit_no, int f_truncate, int max_length)
void print_generators_with_permutations()
strong_generators * stabilizer_any_point(actions::action *default_action, ring_theory::longinteger_object &full_group_order, int pt, int verbose_level)
void coset_rep(int j, int verbose_level)
int orbit_representative(int pt)
void print_orbit_type(int f_backwards)
void latex(std::string &fname)
void print_tables(std::ostream &ost, int f_with_cosetrep)
void latex_TDA(std::ostream &ost, combinatorics::encoded_combinatorial_object *Enc, int verbose_level)
void init_generators_by_hdl(int nb_gen, int *gen_hdl, int verbose_level)
a permutation group represented via a stabilizer chain
void init_trivial_orbit(int i, int verbose_level)
void point_stabilizer(data_structures_groups::vector_ge &SG, int *tl, int pt, int verbose_level)
void element_from_path_inv(int *elt)
void element_unrank(ring_theory::longinteger_object &a, int *elt, int verbose_level)
int get_orbit(int i, int j)
void print_all_group_elements_as_permutations_in_special_action(actions::action *A_special)
void conjugate(actions::action *A, sims *old_G, int *Elt, int f_overshooting_OK, int verbose_level)
int last_moved_base_point()
void coset_rep_inv(int *Elt, int i, int j, int verbose_level_le)
void init_cyclic_group_from_generator(actions::action *A, int *Elt, int verbose_level)
void order_structure_relative_to_subgroup(int *C_sub, int *Order, int *Residue, int verbose_level)
void random_element(int *elt, int verbose_level)
void compute_all_powers(int elt_idx, int n, int *power_elt, int verbose_level)
int get_orbit_inv(int i, int j)
void create_Cayley_graph(data_structures_groups::vector_ge *gens, int *&Adj, long int &n, int verbose_level)
void element_rank(ring_theory::longinteger_object &a, int *elt)
void init_images(int nb_images)
long int invert_by_rank(long int rk_a, int verbose_level)
void element_from_path(int *elt, int verbose_level)
void center(data_structures_groups::vector_ge &gens, int *center_element_ranks, int &nb_elements, int verbose_level)
void swap_points(int lvl, int i, int j)
long int conjugate_by_rank(long int rk_a, long int rk_b, int verbose_level)
int test_if_subgroup(sims *old_G, int verbose_level)
void init(actions::action *A, int verbose_level)
void transitive_extension(schreier &O, data_structures_groups::vector_ge &SG, int *tl, int verbose_level)
void extend_base_orbit(int new_gen_idx, int lvl, int verbose_level)
void dimino(int *subgroup, int subgroup_sz, int *gens, int &nb_gens, int *cosets, int new_gen, int *group, int &group_sz, int verbose_level)
void transitive_extension_using_coset_representatives_extract_generators(int *coset_reps, int nb_cosets, data_structures_groups::vector_ge &SG, int *tl, int verbose_level)
void read_list_of_elements(actions::action *A, char *fname, int verbose_level)
void all_cosets(int *subset, int size, long int *all_cosets, int verbose_level)
void extract_strong_generators_in_order(data_structures_groups::vector_ge &SG, int *tl, int verbose_level)
long int mult_by_rank(long int rk_a, long int rk_b, int verbose_level)
long int path_rank_lint()
void regular_representation(int *Elt, int *perm, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
int is_normalizing(int *Elt, int verbose_level)
void compute_base_orbit(int lvl, int verbose_level)
void build_up_group_from_generators(sims *K, data_structures_groups::vector_ge *gens, int f_target_go, ring_theory::longinteger_object *target_go, int f_override_choose_next_base_point, int(*choose_next_base_point_method)(actions::action *A, int *Elt, int verbose_level), int verbose_level)
void print_generators_as_permutations()
void compute_coset_rep_path(int i, int j, int &depth, int *&Path, int *&Label, int verbose_level)
void init_trivial_group(int verbose_level)
void print_generator_depth_and_perm()
void path_unrank_lint(long int a)
void create_group_table(int *&Table, long int &n, int verbose_level)
void add_generator_at_level_only(int *elt, int lvl, int verbose_level)
void print_transversals_short()
void element_as_permutation(actions::action *A_special, long int elt_rk, int *perm, int verbose_level)
void print_all_group_elements_with_permutations_tex(std::ostream &ost)
void report(std::ostream &ost, std::string &prefix, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
void print_generators_at_level_or_below(int lvl)
void extend_group_random_process_no_kernel(sims *extending_by_G, ring_theory::longinteger_object &target_go, int verbose_level)
void print_group_order_factored(std::ostream &ost)
void compute_base_orbits_known_length(int *tl, int verbose_level)
void test_element_rank_unrank()
int least_moved_point_at_level(int lvl, int verbose_level)
int get_image(int i, int gen_idx)
void find_standard_generators_int(int ord_a, int ord_b, int ord_ab, int &a, int &b, int &nb_trials, int verbose_level)
void build_up_subgroup_random_process(sims *G, void(*choose_random_generator_for_subgroup)(sims *G, int *Elt, int verbose_level), int verbose_level)
void print_basic_orbit(int i)
void print_transversals()
void zuppo_list(int *Zuppos, int &nb_zuppos, int verbose_level)
void initialize_table(int i, int verbose_level)
void print_all_group_elements_to_file(char *fname, int verbose_level)
void print_generators_as_permutations_override_action(actions::action *A)
int closure_group(int nb_times, int verbose_level)
long int conjugate_by_rank_b_bv_given(long int rk_a, int *Elt_b, int *Elt_bv, int verbose_level)
void element_ranks_subgroup(sims *subgroup, int *element_ranks, int verbose_level)
void print_all_group_elements_tex(std::ostream &ost)
void init_generators_by_hdl(int nb_gen, int *gen_hdl, int verbose_level)
void transitive_extension_using_generators(int *Elt_gens, int nb_gens, int subgroup_index, data_structures_groups::vector_ge &SG, int *tl, int verbose_level)
void evaluate_word_int(int word_len, int *word, int *Elt, int verbose_level)
void group_order_verbose(ring_theory::longinteger_object &go, int verbose_level)
void print(int verbose_level)
void all_elements(data_structures_groups::vector_ge *&vec, int verbose_level)
void print_generators_tex(std::ostream &ost)
void write_all_group_elements(char *fname, int verbose_level)
void add_generator_at_level(int *elt, int lvl, int verbose_level)
void subgroup_order_verbose(ring_theory::longinteger_object &go, int level, int verbose_level)
void write_as_magma_permutation_group(std::string &fname_base, data_structures_groups::vector_ge *gens, int verbose_level)
int compute_coset_rep_depth(int i, int j, int verbose_level)
void print_basic_orbits()
void create_group_tree(const char *fname, int f_full, int verbose_level)
void print_all_group_elements()
int is_element_of(int *elt)
void normalizer_based_on_characteristic_vector(int *C_sub, int *Gen_idx, int nb_gens, int *N, long int &N_go, int verbose_level)
void subgroup_make_characteristic_vector(sims *Sub, int *C, int verbose_level)
data_structures_groups::vector_ge gens
void print_all_transversal_elements()
int transitive_extension_tolerant(schreier &O, data_structures_groups::vector_ge &SG, int *tl, int f_tolerant, int verbose_level)
void element_unrank_lint(long int rk, int *Elt, int verbose_level)
void add_generator(int *elt, int verbose_level)
void random_schreier_generator(int *Elt, int verbose_level)
void random_element_of_order(int *elt, int order, int verbose_level)
long int element_rank_lint(int *Elt)
void build_up_group_random_process_no_kernel(sims *old_G, int verbose_level)
void coset_rep(int *Elt, int i, int j, int verbose_level)
void all_elements_save_csv(std::string &fname, int verbose_level)
data_structures_groups::vector_ge gens_inv
void reallocate_base(int old_base_len, int verbose_level)
int strip(int *elt, int *residue, int &drop_out_level, int &image, int verbose_level)
void Cayley_graph(int *&Adj, int &sz, data_structures_groups::vector_ge *gens_S, int verbose_level)
long int find_element_of_given_order_int(int ord, int &nb_trials, int verbose_level)
void init_generators(data_structures_groups::vector_ge &generators, int verbose_level)
void save_list_of_elements(char *fname, int verbose_level)
void print_transversal_lengths()
void compute_base_orbits(int verbose_level)
void compute_conjugacy_classes(actions::action *&Aconj, induced_actions::action_by_conjugation *&ABC, schreier *&Sch, strong_generators *&SG, int &nb_classes, int *&class_size, int *&class_rep, int verbose_level)
long int group_order_lint()
void print_group_order(std::ostream &ost)
int generator_depth(int gen_idx)
int get_orbit_length(int i)
void point_stabilizer_with_action(actions::action *A2, data_structures_groups::vector_ge &SG, int *tl, int pt, int verbose_level)
void sylow_subgroup(int p, sims *P, int verbose_level)
void init_without_base(actions::action *A, int verbose_level)
void table_of_group_elements_in_data_form(int *&Table, int &len, int &sz, int verbose_level)
int find_element_with_exactly_n_fixpoints_in_given_action(int *Elt, int nb_fixpoints, actions::action *A_given, int verbose_level)
void point_stabilizer_stabchain_with_action(actions::action *A2, sims &S, int pt, int verbose_level)
void compute_base_orbit_known_length(int lvl, int target_length, int verbose_level)
int test_if_in_set_stabilizer(actions::action *A, long int *set, int size, int verbose_level)
void random_elements_of_order(data_structures_groups::vector_ge *elts, int *orders, int nb, int verbose_level)
void transitive_extension_using_coset_representatives(int *coset_reps, int nb_cosets, int verbose_level)
void build_up_group_random_process(sims *K, sims *old_G, ring_theory::longinteger_object &target_go, int f_override_choose_next_base_point, int(*choose_next_base_point_method)(actions::action *A, int *Elt, int verbose_level), int verbose_level)
void find_element_of_prime_power_order(int p, int *Elt, int &e, int &nb_trials, int verbose_level)
void print_all_group_elements_as_permutations()
int strip_and_add(int *elt, int *residue, int verbose_level)
void init_generator_depth_and_perm(int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
void init_trivial_group(actions::action *A, int verbose_level)
void init_copy(strong_generators *S, int verbose_level)
void generators_for_the_monomial_group(actions::action *A, matrix_group *Mtx, int verbose_level)
void Janko1(actions::action *A, field_theory::finite_field *F, int verbose_level)
void compute_and_print_orbits_on_a_given_set(actions::action *A_given, long int *set, int len, int verbose_level)
void init_linear_group_from_scratch(actions::action *&A, field_theory::finite_field *F, int n, linear_group_description *Descr, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void init_centralizer_of_matrix_general_linear(actions::action *A_projective, actions::action *A_general_linear, int *Mtx, int verbose_level)
void print_generators_even_odd()
void print_generators_gap(std::ostream &ost)
void compute_schreier_with_given_action_on_a_given_set(actions::action *A_given, schreier *&Sch, long int *set, int len, int verbose_level)
void orbits_on_points_with_given_action(actions::action *A_given, int &nb_orbits, int *&orbit_reps, int verbose_level)
void create_group_table(int *&Table, long int &go, int verbose_level)
void init_from_data(actions::action *A, int *data, int nb_elements, int elt_size, int *transversal_length, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void init(actions::action *A)
void generators_for_parabolic_subgroup(actions::action *A_PGL_n_q, matrix_group *Mtx, int k, int verbose_level)
void init_by_hdl_and_with_tl(actions::action *A, std::vector< int > &gen_handle, std::vector< int > &tl, int verbose_level)
void orbits_on_points(int &nb_orbits, int *&orbit_reps, int verbose_level)
void stabilizer_of_F13_surface(actions::action *A, field_theory::finite_field *F, int a, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void diagonally_repeat(actions::action *An, strong_generators *Sn, int verbose_level)
void export_group_and_copy_to_latex(std::string &label_txt, std::ostream &ost, actions::action *A2, int verbose_level)
void get_gens_data(int *&data, int &sz, int verbose_level)
void test_if_set_is_invariant_under_given_action(actions::action *A_given, long int *set, int set_sz, int verbose_level)
void print_generators_as_permutations_tex(std::ostream &ost, actions::action *A2)
void stabilizer_of_cubic_surface_from_catalogue(actions::action *A, field_theory::finite_field *F, int iso, int verbose_level)
void print_generators_MAGMA(actions::action *A, std::ostream &ost)
void exterior_square(actions::action *A_detached, strong_generators *SG_original, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void print_elements_with_special_orthogonal_action_ost(std::ostream &ost)
void normalizer_of_a_Hall_reflection(int nb_pairs, int °ree, int verbose_level)
strong_generators * point_stabilizer(int pt, int verbose_level)
void add_single_generator(int *Elt, int group_index, int verbose_level)
void init_single_with_target_go(actions::action *A, int *Elt, int target_go, int verbose_level)
void print_elements_ost(std::ostream &ost)
void print_group_order(std::ostream &ost)
void print_generators_in_source_code()
void init_point_stabilizer_of_arbitrary_point_through_schreier(schreier *Sch, int pt, int &orbit_idx, ring_theory::longinteger_object &full_group_order, int verbose_level)
strong_generators * create_copy()
void print_elements_latex_ost_with_print_point_function(actions::action *A, std::ostream &ost, void(*point_label)(std::stringstream &sstr, long int pt, void *data), void *point_label_data)
void init_single(actions::action *A, int *Elt, int verbose_level)
void export_group_to_magma_and_copy_to_latex(std::string &label_txt, std::ostream &ost, actions::action *A2, int verbose_level)
sims * create_sims(int verbose_level)
void init_point_stabilizer_orbit_rep_schreier(schreier *Sch, int orbit_idx, ring_theory::longinteger_object &full_group_order, int verbose_level)
void init_from_permutation_representation(actions::action *A, sims *parent_group_S, int *data, int nb_elements, long int group_order, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void init_by_hdl(actions::action *A, int *gen_hdl, int nb_gen, int verbose_level)
schreier * orbit_of_one_point_schreier(actions::action *A_given, int pt, int verbose_level)
void Hall_reflection(int nb_pairs, int °ree, int verbose_level)
void print_elements_with_given_action(std::ostream &ost, actions::action *A2)
void decode_ascii_coding(char *ascii_coding, int verbose_level)
void generators_for_stabilizer_of_three_collinear_points_in_PGL4(actions::action *A_PGL_4_q, matrix_group *Mtx, int verbose_level)
void init_from_ascii_coding(actions::action *A, char *ascii_coding, int verbose_level)
void report_fixed_objects_in_P3(std::ostream &ost, geometry::projective_space *P3, int verbose_level)
void print_generators_tex()
void switch_to_subgroup(const char *rank_vector_text, const char *subgroup_order_text, sims *S, int *&subgroup_gens_idx, int &nb_subgroup_gens, int verbose_level)
void print_generators_in_source_code_to_file(const char *fname)
void generators_for_the_orthogonal_group(actions::action *A, field_theory::finite_field *F, int n, int epsilon, int f_semilinear, int verbose_level)
void init_generators_for_the_conjugate_group_aGav(strong_generators *SG, int *Elt_a, int verbose_level)
void print_elements_latex_ost(std::ostream &ost)
void list_of_elements_of_subgroup(strong_generators *gens_subgroup, long int *&Subgroup_elements_by_index, long int &sz_subgroup, int verbose_level)
void stabilizer_of_quartic_curve_from_catalogue(actions::action *A, field_theory::finite_field *F, int iso, int verbose_level)
void print_generators_tex_with_print_point_function(actions::action *A, std::ostream &ost, void(*point_label)(std::stringstream &sstr, long int pt, void *data), void *point_label_data)
strong_generators * find_cyclic_subgroup_with_exactly_n_fixpoints(int nb_fixpoints, actions::action *A_given, int verbose_level)
long int group_order_as_lint()
void compute_and_print_orbits(actions::action *A_given, int verbose_level)
void print_generators(std::ostream &ost)
void swap_with(strong_generators *SG)
void stabilizer_of_G13_surface(actions::action *A, field_theory::finite_field *F, int a, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
schreier * orbits_on_points_schreier(actions::action *A_given, int verbose_level)
void generators_for_the_stabilizer_of_two_components(actions::action *A_PGL_n_q, matrix_group *Mtx, int verbose_level)
void reverse_isomorphism_exterior_square(int verbose_level)
void canonical_image_GAP(std::string &input_set_text, std::ostream &ost)
void read_from_file_binary(actions::action *A, std::ifstream &fp, int verbose_level)
void compute_ascii_coding(char *&ascii_coding, int verbose_level)
void read_file(actions::action *A, std::string &fname, int verbose_level)
void init_from_data_with_target_go(actions::action *A, int *data_gens, int data_gens_size, int nb_gens, ring_theory::longinteger_object &target_go, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void export_magma(actions::action *A, std::ostream &ost, int verbose_level)
void generators_for_the_null_polarity_group(actions::action *A, matrix_group *Mtx, int verbose_level)
void generators_for_the_identity_subgroup(actions::action *A_linear, matrix_group *Mtx, int verbose_level)
void write_to_file_binary(std::ofstream &fp, int verbose_level)
void export_permutation_group_to_GAP(std::string &fname, actions::action *A2, int verbose_level)
void generators_for_the_singer_cycle(actions::action *A, matrix_group *Mtx, int power_of_singer, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void print_generators_as_permutations()
void special_subgroup(int verbose_level)
void stabilizer_of_spread_from_catalogue(actions::action *A, int q, int k, int iso, int verbose_level)
void print_generators_compact(std::ostream &ost)
void generators_for_the_diagonal_group(actions::action *A, matrix_group *Mtx, int verbose_level)
void hyperplane_lifting_with_two_lines_fixed(strong_generators *SG_hyperplane, geometry::projective_space *P, int line1, int line2, int verbose_level)
void init_centralizer_of_matrix(actions::action *A, int *Mtx, int verbose_level)
void print_with_given_action(std::ostream &ost, actions::action *A2)
void stabilizer_of_pencil_of_conics(actions::action *A, field_theory::finite_field *F, int verbose_level)
void print_for_make_element(std::ostream &ost)
void generators_for_the_borel_subgroup_lower(actions::action *A_linear, matrix_group *Mtx, int verbose_level)
void even_subgroup(int verbose_level)
void print_generators_in_different_action_tex(std::ostream &ost, actions::action *A2)
void init_from_sims(groups::sims *S, int verbose_level)
void orbits_light(actions::action *A_given, int *&Orbit_reps, int *&Orbit_lengths, int &nb_orbits, int **&Pts_per_generator, int *&Nb_per_generator, int verbose_level)
void init_generators_for_the_conjugate_group_avGa(strong_generators *SG, int *Elt_a, int verbose_level)
void export_to_orbiter_as_bsgs(actions::action *A2, std::string &fname, std::string &label, std::string &label_tex, int verbose_level)
void export_group_to_GAP_and_copy_to_latex(std::string &label_txt, std::ostream &ost, actions::action *A2, int verbose_level)
void field_reduction(actions::action *Aq, int n, int s, field_theory::finite_field *Fq, int verbose_level)
void add_generators(data_structures_groups::vector_ge *coset_reps, int group_index, int verbose_level)
void print_generators_for_make_element(std::ostream &ost)
void projectivity_subgroup(sims *S, int verbose_level)
void compute_schreier_with_given_action(actions::action *A_given, schreier *&Sch, int verbose_level)
void regulus_stabilizer(actions::action *A_PGL_n_q, matrix_group *Mtx, int verbose_level)
void generators_for_stabilizer_of_triangle_in_PGL4(actions::action *A_PGL_4_q, matrix_group *Mtx, int verbose_level)
void generators_for_translation_plane_in_andre_model(actions::action *A_PGL_n1_q, actions::action *A_PGL_n_q, matrix_group *Mtx_n1, matrix_group *Mtx_n, data_structures_groups::vector_ge *spread_stab_gens, ring_theory::longinteger_object &spread_stab_go, int verbose_level)
void generators_for_the_singer_cycle_and_the_Frobenius(actions::action *A, matrix_group *Mtx, int power_of_singer, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void write_file(std::string &fname, int verbose_level)
void init_from_data_with_go(actions::action *A, std::string &generators_data, std::string &go_text, int verbose_level)
void init_subgroup(actions::action *A, int *subgroup_gens_idx, int nb_subgroup_gens, const char *subgroup_order_text, sims *S, int verbose_level)
void init_transposed_group(strong_generators *SG, int verbose_level)
void export_permutation_group_to_magma(std::string &fname, actions::action *A2, int verbose_level)
void print_generators_gap_in_different_action(std::ostream &ost, actions::action *A2)
void init_subgroup_by_generators(actions::action *A, int nb_subgroup_gens, int *subgroup_gens, std::string &subgroup_order_text, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
sims * create_sims_in_different_action(actions::action *A_given, int verbose_level)
void Sylow_subgroup(sims *S, int p, int verbose_level)
void generators_for_the_borel_subgroup_upper(actions::action *A_linear, matrix_group *Mtx, int verbose_level)
void init_group_extension(strong_generators *subgroup, int *data, int index, int verbose_level)
void stabilizer_of_Eckardt_surface(actions::action *A, field_theory::finite_field *F, int f_with_normalizer, int f_semilinear, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
void make_element_which_moves_a_point_from_A_to_B(actions::action *A_given, int pt_A, int pt_B, int *Elt, int verbose_level)
int test_if_normalizing(sims *S, int verbose_level)
void generators_for_symplectic_group(actions::action *A, matrix_group *Mtx, int verbose_level)
void init_from_data_with_target_go_ascii(actions::action *A, int *data, int nb_elements, int elt_size, const char *ascii_target_go, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
data_structures_groups::vector_ge * gens
void BLT_set_from_catalogue_stabilizer(actions::action *A, field_theory::finite_field *F, int iso, int verbose_level)
void get_gens_data_as_string_with_quotes(std::string &str, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void print_generators_in_latex_individually(std::ostream &ost)
a subgroup of a group using a list of elements
void init_from_sims(sims *S, sims *Sub, strong_generators *SG, int verbose_level)
int contains_this_element(int elt)
void init(int *Elements, int group_order, int *gens, int nb_gens)
void report(std::ostream &ost)
The Sylow structure of a finite group.
void init(sims *S, int verbose_level)
void report(std::ostream &ost)
ring_theory::longinteger_object go
the wreath product group GL(d,q) wreath Sym(n)
void element_unpack(uchar *elt, int *Elt)
void tensor_PG_unrank(int *tensor, long int PG_rk)
void create_matrix(int *Elt, int *A, int verbose_level)
void element_invert(int *A, int *Av, int verbose_level)
void element_print_easy(int *Elt, std::ostream &ost)
void put_digit(uchar *elt, int f, int i, int j, int d)
uint32_t PG_rank_to_affine_rank(long int PG_rk)
void report(std::ostream &ost, int verbose_level)
void element_one(int *Elt)
void unrank_point(long int a, int *v, int verbose_level)
data_structures::page_storage * Elts
void compute_tensor_ranks(int verbose_level)
void element_move(int *A, int *B, int verbose_level)
permutation_representation_domain * P
uint32_t * rank_one_tensors
void tensor_affine_unrank(int *tensor, uint32_t rk)
field_theory::finite_field * F
int element_is_one(int *Elt)
void orbits_restricted_compute(strong_generators *SG, actions::action *A, int *&result, int &nb_gens, int °ree, int nb_factors, std::string &orbits_restricted_fname, int verbose_level)
void element_print_latex(int *Elt, std::ostream &ost)
void init_tensor_wreath_product(matrix_group *M, actions::action *A_mtx, int nb_factors, int verbose_level)
long int element_image_of(int *Elt, long int a, int verbose_level)
int test_if_file_exists(int nb_factors, int h, int b)
void element_print_for_make_element(int *Elt, std::ostream &ost)
int dimension_of_tensor_action
void make_element_from_one_component(int *Elt, int f, int *Elt_component)
void make_strong_generators_data(int *&data, int &size, int &nb_gens, int verbose_level)
void compute_induced_permutation(int *Elt, int *perm)
long int affine_rank_to_PG_rank(uint32_t affine_rk)
void make_fname(char *fname, int nb_factors, int h, int b)
void apply_permutation(int *Elt, int *v_in, int *v_out, int verbose_level)
void create_all_rank_one_tensors(uint32_t *&rank_one_tensors, int &nb_rank_one_tensors, int verbose_level)
void report_rank_one_tensors(std::ostream &ost, int verbose_level)
int * the_transversal_length
void save_rank_one_tensors(int verbose_level)
long int * base_for_component
int base_len_in_component
void element_image_of_low_level(int *Elt, int *input, int *output, int verbose_level)
void make_element(int *Elt, int *data, int verbose_level)
int dimension_of_matrix_group
void orbits_using_files_and_union_find(strong_generators *SG, actions::action *A, int *&result, int &nb_gens, int °ree, int nb_factors, int verbosity)
int get_digit(uchar *elt, int f, int i, int j)
void element_pack(int *Elt, uchar *elt)
void element_mult(int *A, int *B, int *AB, int verbose_level)
long int * rank_one_tensors_in_PG_sorted
long int * rank_one_tensors_in_PG
void compute_permutations_and_write_to_file(strong_generators *SG, actions::action *A, int *&result, int &nb_gens, int °ree, int nb_factors, int verbose_level)
void orbits_restricted(strong_generators *SG, actions::action *A, int *&result, int &nb_gens, int °ree, int nb_factors, std::string &orbits_restricted_fname, int verbose_level)
long int degree_of_tensor_action
void make_element_from_permutation(int *Elt, int *perm)
void compute_base_and_transversals(int verbose_level)
long int tensor_PG_rank(int *tensor)
int degree_of_matrix_group
uint32_t tensor_affine_rank(int *tensor)
long int rank_point(int *v, int verbose_level)
induced action by conjugation on the elements of a given group
void choose_random_generator_derived_group(sims *G, int *Elt, int verbose_level)
permutation_group_type
enumeration to distinguish between the various types of permutation groups
shallow_schreier_tree_strategy
the strategy which is employed to create shallow Schreier trees
the orbiter library for the classification of combinatorial objects