10#ifndef ORBITER_SRC_LIB_GROUP_ACTIONS_INDUCED_ACTIONS_INDUCED_ACTIONS_H_
11#define ORBITER_SRC_LIB_GROUP_ACTIONS_INDUCED_ACTIONS_INDUCED_ACTIONS_H_
16namespace layer3_group_actions {
17namespace induced_actions {
45 long int rank(
int *Elt);
63 field_theory::finite_field *
F;
82 void unrank_point(
long int a,
int *v,
int verbose_level);
83 long int rank_point(
int *v,
int verbose_level);
112 int pt,
int verbose_level);
169 field_theory::finite_field *
FQ;
171 field_theory::finite_field *
Fq;
173 field_theory::subfield_structure *
S;
205 geometry::andre_construction *
Andre;
219 geometry::andre_construction *
Andre,
int verbose_level);
239 combinatorics::brick_domain *
B;
267 field_theory::finite_field *
F;
296 field_theory::finite_field *
F,
307 field_theory::finite_field *
F,
317 long int compute_image(
int *Elt,
long int i,
int verbose_level);
356 algebra::vector_space *
VS;
421 algebra::vector_space *
VS,
426 algebra::vector_space *
VS,
429 long int *point_list,
int nb_points,
433 long int *point_list,
int nb_points);
435 long int *point_list,
int nb_points,
438 algebra::vector_space *
VS,
441 int f_compute_tables,
int verbose_level);
443 algebra::vector_space *
VS,
446 int f_compute_tables,
int verbose_level);
448 int f_compute_tables,
int verbose_level);
461 long int project(
long int rk,
int verbose_level);
470 long int preimage(
long int rk,
int verbose_level);
471 void embed(
int *from,
int *to);
472 void unrank(
int *v,
long int rk,
int verbose_level);
473 long int rank(
int *v,
int verbose_level);
493 field_theory::finite_field *
F;
508 long int compute_image(
int *Elt,
long int i,
int verbose_level);
548 field_theory::finite_field *
F;
552 geometry::grassmann *
G;
558 geometry::grassmann_embedded *
GE;
574 geometry::grassmann *
G,
int verbose_level);
576 void (*
print_function)(std::ostream &ost,
long int a,
void *data),
581 void unrank(
long int i,
int *v,
int verbose_level);
582 long int rank(
int *v,
int verbose_level);
584 ring_theory::longinteger_object &i, ring_theory::longinteger_object &j,
587 long int i,
int verbose_level);
589 long int i,
int verbose_level);
591 long int i,
int verbose_level);
608 ring_theory::homogeneous_polynomial_domain *
HPD;
610 field_theory::finite_field *
F;
637 int *Elt,
int *input,
int *output,
int verbose_level);
639 int *Elt,
int *
M,
int verbose_level);
661 long int compute_image(
int *Elt,
long int a,
int verbose_level);
686 long int compute_image(
int *Elt,
long int i,
int verbose_level);
710 long int compute_image(
int *Elt,
long int i,
int verbose_level);
724 orthogonal_geometry::orthogonal *
O;
740 orthogonal_geometry::orthogonal *
O,
745 long int map_a_point(
int *Elt,
long int i,
int verbose_level);
746 long int map_a_line(
int *Elt,
long int i,
int verbose_level);
773 void init(
int partition_size,
778 long int a,
int verbose_level);
804 long int *input_sets,
int verbose_level);
805 int find_set(
long int *set,
int verbose_level);
807 long int i,
int verbose_level);
835 long int compute_image(
int *Elt,
long int i,
int verbose_level);
853 field_theory::finite_field *
F;
875 int k, field_theory::finite_field *
F,
int verbose_level);
876 void report(std::ostream &ost,
int verbose_level);
880 void unrank_point(
long int rk,
int *mtx,
int verbose_level);
881 long int rank_point(
int *mtx,
int verbose_level);
914 long int compute_image(
int *Elt,
long int a,
int verbose_level);
935 field_theory::finite_field *
F;
959 int i,
int j,
int k,
int l,
int verbose_level);
988 data_structures::page_storage *
Elts;
1004 void element_mult(
int *A,
int *B,
int *AB,
int verbose_level);
1010 void make_element(
int *Elt,
int *data,
int verbose_level);
a permutation group in a fixed action.
compact storage of schreier vectors
a matrix group over a finite field in projective, vector space or affine action
Schreier trees for orbits of groups on points.
a permutation group represented via a stabilizer chain
a subgroup of a group using a list of elements
induced action by conjugation on the elements of a given group
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
long int multiply(actions::action *A, long int i, long int j, int verbose_level)
groups::sims * Base_group
void init(groups::sims *Base_group, int f_ownership, int verbose_level)
induced action of PSL(2,q) on a conic (the only type implemented so far)
enum representation_type type
action_by_representation()
long int compute_image_int(actions::action &A, int *Elt, long int a, int verbose_level)
field_theory::finite_field * F
long int rank_point(int *v, int verbose_level)
~action_by_representation()
void init_action_on_conic(actions::action &A, int verbose_level)
void unrank_point(long int a, int *v, int verbose_level)
void compute_image_int_low_level(actions::action &A, int *Elt, int *input, int *output, int verbose_level)
restricted action on an invariant subset
void init(int nb_points, long int *points, int verbose_level)
void init_single_orbit_from_schreier_vector(data_structures_groups::schreier_vector *Schreier_vector, int pt, int verbose_level)
long int original_point(long int pt)
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
long int restricted_point_idx(long int pt)
induced action on a the set of elements of a group by right multiplication
action_by_right_multiplication()
void init(groups::sims *Base_group, int f_ownership, int verbose_level)
groups::sims * Base_group
~action_by_right_multiplication()
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
induced action on the vector space arising from a field over a subfield
field_theory::finite_field * Fq
long int compute_image_int(actions::action &A, int *Elt, long int a, int verbose_level)
void compute_image_int_low_level(actions::action &A, int *Elt, int *input, int *output, int verbose_level)
groups::matrix_group * Mq
void init(actions::action &A, field_theory::finite_field *Fq, int verbose_level)
field_theory::subfield_structure * S
field_theory::finite_field * FQ
action_by_subfield_structure()
~action_by_subfield_structure()
groups::matrix_group * MQ
induced action on the elements of a projective plane constructed via Andre / Bruck / Bose
long int compute_image(int *Elt, long int i, int verbose_level)
long int compute_image_of_line(int *Elt, long int line_idx, int verbose_level)
void init(actions::action *An, actions::action *An1, geometry::andre_construction *Andre, int verbose_level)
long int compute_image_of_point(int *Elt, long int pt_idx, int verbose_level)
geometry::andre_construction * Andre
related to a problem of Neil Sloane
long int compute_image(int *Elt, long int i, int verbose_level)
combinatorics::brick_domain * B
long int compute_image_linear_action(int *Elt, long int i, int verbose_level)
long int compute_image_permutation_action(int *Elt, long int i, int verbose_level)
void init(actions::action *A, combinatorics::brick_domain *B, int f_linear_action, int verbose_level)
induced action on the cosets of a subspace by right multiplication
void init(int nb_points, int *Points, actions::action *A_linear, field_theory::finite_field *F, int dimension_of_subspace, int n, int *subspace_basis, int *base_cols, void(*unrank_point)(int *v, int a, void *data), int(*rank_point)(int *v, void *data), void *rank_unrank_data, int verbose_level)
void init_lint(int nb_points, long int *Points, actions::action *A_linear, field_theory::finite_field *F, int dimension_of_subspace, int n, int *subspace_basis, int *base_cols, void(*unrank_point)(int *v, long int a, void *data), long int(*rank_point)(int *v, void *data), void *rank_unrank_data, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
void(* unrank_point_lint)(int *v, long int a, void *data)
void(* unrank_point)(int *v, int a, void *data)
void reduce_mod_subspace(int *v, int verbose_level)
long int(* rank_point_lint)(int *v, void *data)
int dimension_of_subspace
int(* rank_point)(int *v, void *data)
field_theory::finite_field * F
actions::action * A_linear
induced action on the determinant of a group of matrices (used to compute the subgroup PSL)
void init(actions::action &A, int f_projective, int m, int verbose_level)
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
induced action on the factor space of a vector space modulo a subspace
long int * preimage_table
long int project_onto_Gauss_reduced_vector(long int rk, int verbose_level)
void init_coset_table(long int *point_list, int nb_points, int verbose_level)
void init_by_rank(algebra::vector_space *VS, actions::action &A_base, actions::action &A, long int *subspace_basis_ranks, int subspace_basis_size, int f_compute_tables, int verbose_level)
void init_from_coordinate_vectors(algebra::vector_space *VS, actions::action &A_base, actions::action &A, int *subspace_basis, int subspace_basis_size, int f_compute_tables, int verbose_level)
long int * coset_reps_Gauss
void unrank(int *v, long int rk, int verbose_level)
void reduce_mod_subspace(int *v, int verbose_level)
long int compute_degree()
algebra::vector_space * VS
void print_projection_table(long int *point_list, int nb_points)
long int rank(int *v, int verbose_level)
long int lexleast_element_in_coset(long int rk, int verbose_level)
void unrank_in_small_space(int *v, long int rk)
long int preimage(long int rk, int verbose_level)
void embed(int *from, int *to)
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
void init_by_rank_table_mode(algebra::vector_space *VS, actions::action &A_base, actions::action &A, long int *subspace_basis_ranks, int subspace_basis_size, long int *point_list, int nb_points, int verbose_level)
long int project(long int rk, int verbose_level)
void init2(actions::action &A_base, actions::action &A, int f_compute_tables, int verbose_level)
long int rank_in_large_space(int *v)
int f_tables_have_been_computed
~action_on_factor_space()
void init_light(algebra::vector_space *VS, actions::action &A_base, actions::action &A, long int *subspace_basis_ranks, int subspace_basis_size, int verbose_level)
void compute_projection_table(int verbose_level)
long int * projection_table
long int compute_large_degree()
void unrank_in_large_space(int *v, long int rk)
long int rank_in_small_space(int *v)
long int compute_image(int *Elt, long int i, int verbose_level)
void init(actions::action *A, int *type, int type_len, int verbose_level)
field_theory::finite_field * F
induced action on the galois group (used to compute the projectivity subgroup of a collineation group...
void init(actions::action *A, int m, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
~action_on_galois_group()
induced action on the grassmannian (subspaces of a fixed dimension of a vectors space)
long int rank(int *v, int verbose_level)
geometry::grassmann_embedded * GE
void(* print_function)(std::ostream &ost, long int a, void *data)
long int compute_image_int(actions::action *A, int *Elt, long int i, int verbose_level)
void add_print_function(void(*print_function)(std::ostream &ost, long int a, void *data), void *print_function_data, int verbose_level)
void init_embedding(int big_n, int *ambient_space, int verbose_level)
long int compute_image_int_embedded(actions::action *A, int *Elt, long int i, int verbose_level)
void init(actions::action &A, geometry::grassmann *G, int verbose_level)
void compute_image_longinteger(actions::action *A, int *Elt, ring_theory::longinteger_object &i, ring_theory::longinteger_object &j, int verbose_level)
~action_on_grassmannian()
long int compute_image_int_ordinary(actions::action *A, int *Elt, long int i, int verbose_level)
ring_theory::longinteger_object degree
void print_point(long int a, std::ostream &ost)
void * print_function_data
void unrank(long int i, int *v, int verbose_level)
field_theory::finite_field * F
induced action on the set of homogeneous polynomials over a finite field
void unrank_point(int *v, long int rk)
void compute_representation(int *Elt, int *M, int verbose_level)
long int compute_image_int(int *Elt, long int a, int verbose_level)
long int rank_point(int *v)
action_on_homogeneous_polynomials()
~action_on_homogeneous_polynomials()
void init(actions::action *A, ring_theory::homogeneous_polynomial_domain *HPD, int verbose_level)
ring_theory::homogeneous_polynomial_domain * HPD
void init_invariant_set_of_equations(int *Equations, int nb_equations, int verbose_level)
field_theory::finite_field * F
void compute_image_int_low_level(int *Elt, int *input, int *output, int verbose_level)
induced action on the interior direct product
action_on_interior_direct_product()
~action_on_interior_direct_product()
void init(actions::action *A, int nb_rows, int verbose_level)
long int compute_image(int *Elt, long int a, int verbose_level)
induced action on k-subsets of a set of size n
void init(actions::action *A, int k, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
induced action on the set of orbits (usually by the normalizer)
void init(actions::action *A, groups::schreier *Sch, int f_play_it_safe, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
induced action on the orthogonal geometry
int f_on_points_and_lines
void unrank_point(int *v, int rk)
orthogonal_geometry::orthogonal * O
actions::action * original_action
long int map_a_line(int *Elt, long int i, int verbose_level)
long int map_a_point(int *Elt, long int i, int verbose_level)
void init(actions::action *original_action, orthogonal_geometry::orthogonal *O, int f_on_points, int f_on_lines, int f_on_points_and_lines, int verbose_level)
long int compute_image_int(int *Elt, long int i, int verbose_level)
induced action on a set partitions.
~action_on_set_partitions()
long int compute_image(int *Elt, long int a, int verbose_level)
void init(int partition_size, actions::action *A, int verbose_level)
action_on_set_partitions()
induced action on a given set of sets.
int find_set(long int *set, int verbose_level)
void init(int nb_sets, int set_size, long int *input_sets, int verbose_level)
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
void print_sets_in_original_ordering()
induced action on the sign function of a permutation group (to compute the even subgroup)
long int compute_image(int *Elt, long int i, int verbose_level)
void init(actions::action *A, int verbose_level)
induced action on a spread set via the associated spread
actions::action * A_PGL_k_q
void subspace_to_matrix(int *subspace, int *mtx, int verbose_level)
void compute_image_low_level(int *Elt, int *input, int *output, int verbose_level)
field_theory::finite_field * F
void matrix_to_subspace(int *mtx, int *subspace, int verbose_level)
void unrank_point(long int rk, int *mtx, int verbose_level)
long int compute_image_int(int *Elt, long int rk, int verbose_level)
void report(std::ostream &ost, int verbose_level)
void init(actions::action *A_PGL_n_q, actions::action *A_PGL_k_q, groups::sims *G_PGL_k_q, int k, field_theory::finite_field *F, int verbose_level)
long int rank_point(int *mtx, int verbose_level)
actions::action * A_PGL_n_q
induced action on subgroups of a group
void init(actions::action *A, groups::sims *S, int nb_subgroups, int subgroup_order, groups::subgroup **Subgroups, int verbose_level)
long int compute_image(int *Elt, long int a, int verbose_level)
groups::subgroup ** Subgroups
induced wedge product action on the exterior square of a vector space
action_on_wedge_product()
long int rank_point(int *v)
void init(actions::action &A, int verbose_level)
int element_entry_ijkl(actions::action &A, int *Elt, int i, int j, int k, int l, int verbose_level)
void compute_image_int_low_level(actions::action &A, int *Elt, int *input, int *output, int verbose_level)
field_theory::finite_field * F
int element_entry_frobenius(actions::action &A, int *Elt, int verbose_level)
long int compute_image_int(actions::action &A, int *Elt, long int a, int verbose_level)
void unrank_point(int *v, long int rk)
~action_on_wedge_product()
int element_entry_ij(actions::action &A, int *Elt, int I, int J, int verbose_level)
induced product action of two group actions
void element_pack(int *Elt, uchar *elt, int verbose_level)
void element_retrieve(actions::action *A, int hdl, int *Elt, int verbose_level)
void init(actions::action *A1, actions::action *A2, int f_use_projections, int verbose_level)
data_structures::page_storage * Elts
void element_print(int *A, std::ostream &ost)
void element_unpack(uchar *elt, int *Elt, int verbose_level)
void element_mult(int *A, int *B, int *AB, int verbose_level)
void make_element(int *Elt, int *data, int verbose_level)
int coded_elt_size_in_char
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
void element_invert(int *A, int *Av, int verbose_level)
void element_transpose(int *A, int *At, int verbose_level)
int element_store(actions::action *A, int *Elt, int verbose_level)
void element_move(int *A, int *B, int verbose_level)
int element_is_one(actions::action *A, int *Elt, int verbose_level)
void element_one(actions::action *A, int *Elt, int verbose_level)
void element_print_latex(int *A, std::ostream &ost)
int action_on_subgroups_compare(void *a, void *b, void *data)
int action_on_sets_compare_inverted(void *a, void *b, void *data)
int action_on_sets_compare(void *a, void *b, void *data)
int action_on_subgroups_compare_inverted(void *a, void *b, void *data)
representation_type
enumeration specific to action_by_representation
the orbiter library for the classification of combinatorial objects