9#ifndef ORBITER_SRC_LIB_GROUP_ACTIONS_DATA_STRUCTURES_DATA_STRUCTURES_H_
10#define ORBITER_SRC_LIB_GROUP_ACTIONS_DATA_STRUCTURES_DATA_STRUCTURES_H_
15namespace layer3_group_actions {
16namespace data_structures_groups {
61 std::vector<int> &gen_handle,
62 std::vector<int> &
tl,
int verbose_level);
64 int *
tl,
int verbose_level);
69 void group_order(ring_theory::longinteger_object &go);
87 int f_print_as_permutation);
109 geometry::incidence_structure *
Inc;
126 void init(geometry::incidence_structure *
Inc,
130 int f_compute_canonical_form,
131 geometry::incidence_structure *&Inc_out,
149 long int *good_candidates,
int &nb_good_candidates,
150 void *data,
int verbose_level);
175 long int *good_candidates,
int &nb_good_candidates,
176 void *data,
int verbose_level),
208 ring_theory::longinteger_object &full_group_order,
211 std::string &fname,
int verbose_level);
214 int case_nr,
int verbose_level);
221 void (*callback_print_function)(
222 std::stringstream &ost,
void *data,
void *callback_data),
225 void (*callback_print_function2)(
226 std::stringstream &ost,
void *data,
void *callback_data),
227 void *callback_data2,
231 std::string &label_of_structure, std::ostream &ost,
291 void report(std::ostream &ost,
int verbose_level);
292 void report_one_type(std::ostream &ost,
int type_idx,
int verbose_level);
332 long int pt,
long int &pt0,
343 int gen_hdl_first,
int nb_gen,
344 std::ifstream &fp,
int verbose_level);
346 std::ofstream &fp,
int verbose_level);
385 void set_sv(
int *
sv,
int verbose_level);
393 int *&orbit_reps,
int &nb_orbits);
395 int n,
int *pts,
int *
prev,
396 int *depth,
int *ancestor,
int pos);
401 int &nb_orbits,
int *&orbit_reps,
int *&orbit_length,
int *&total_depth,
404 int pt,
long int *&orbit_elts,
int &orbit_len,
int &idx_of_root_node,
407 int f_trivial_group,
int verbose_level);
409 int f_trivial_group,
int f_randomized,
414 std::string &fname_mask,
447 void group_order(ring_theory::longinteger_object &go);
455 int data_gens_size,
int nb_gens, std::string &ascii_target_go,
469 int *&orbit_length,
int *&orbit,
470 int &nb_orbits,
int verbose_level);
474 int find(
long int pt);
577 int nb_elements,
int verbose_level);
580 int nb_elements,
int elt_size,
int verbose_level);
590 ring_theory::longinteger_object &go,
593 void allocate(
int length,
int verbose_level);
594 void reallocate(
int new_length,
int verbose_level);
596 void insert_at(
int length_before,
int position,
int *elt,
int verbose_level);
597 void append(
int *elt,
int verbose_level);
603 void print(std::ostream &ost,
int f_print_as_permutation,
604 int f_offset,
int offset,
605 int f_do_it_anyway_even_for_big_degree,
606 int f_print_cycles_of_length_one);
609 orbiter_kernel_system::memory_object *m,
612 orbiter_kernel_system::memory_object *m,
619 void save_csv(std::string &fname,
int verbose_level);
628 long int *set,
int sz,
int verbose_level);
a permutation group in a fixed action.
a container data structure for groups
void extension(group_container &N, group_container &H, int verbose_level)
void point_stabilizer(group_container &stab, int pt, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void init_strong_generators(vector_ge &SG, int *tl, int verbose_level)
void print_strong_generators(std::ostream &ost, int f_print_as_permutation)
int f_has_strong_generators
void init_strong_generators_empty_set(int verbose_level)
void get_strong_generators(int verbose_level)
void init_ascii_coding(const char *ascii_coding, int verbose_level)
void delete_strong_generators()
void print_group_order(std::ostream &ost)
void schreier_sims(int verbose_level)
void require_strong_generators()
void print_strong_generators_with_different_action_verbose(std::ostream &ost, actions::action *A2, int verbose_level)
void init(actions::action *A, int verbose_level)
void init_strong_generators_by_handle_and_with_tl(std::vector< int > &gen_handle, std::vector< int > &tl, int verbose_level)
void decode_ascii(int verbose_level)
void point_stabilizer_with_action(actions::action *A2, group_container &stab, int pt, int verbose_level)
void induced_action(actions::action &induced_action, group_container &H, group_container &K, int verbose_level)
void init_ascii_coding_to_sims(const char *ascii_coding, int verbose_level)
void code_ascii(int verbose_level)
void delete_ascii_coding()
void print_strong_generators_with_different_action(std::ostream &ost, actions::action *A2)
void require_ascii_coding()
void init_strong_generators_by_hdl(int nb_gen, int *gen_hdl, int *tl, int verbose_level)
to represent an incidence structure and its group
long int * canonical_labeling
void init(geometry::incidence_structure *Inc, int *partition, int verbose_level)
~incidence_structure_with_group()
incidence_structure_with_group()
int f_has_canonical_labeling
void set_stabilizer_and_canonical_form(int f_compute_canonical_form, geometry::incidence_structure *&Inc_out, int verbose_level)
geometry::incidence_structure * Inc
data_structures::bitvector * canonical_form
to hold one orbit after reading files from Orbiters poset classification
void(* early_test_func_callback)(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, void *data, int verbose_level)
void init_from_file(actions::action *A, std::string &prefix, int level, int orbit_at_level, int level_of_candidates_file, void(*early_test_func_callback)(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, void *data, int verbose_level), void *early_test_func_callback_data, int verbose_level)
ring_theory::longinteger_object * stab_go
groups::strong_generators * Strong_gens
void * early_test_func_callback_data
a set of orbits using a vector of orbit representatives and stabilizers
void read_from_file_one_case_only(actions::action *A, actions::action *A2, std::string &fname, int case_nr, int verbose_level)
set_and_stabilizer * Reps
void read_from_file(actions::action *A, actions::action *A2, std::string &fname, int verbose_level)
void export_data_in_source_code_inside_tex(std::string &prefix, std::string &label_of_structure, std::ostream &ost, int verbose_level)
void report_ago_distribution(std::ostream &ost)
void print_table_latex(std::ostream &f, int f_has_callback, void(*callback_print_function)(std::stringstream &ost, void *data, void *callback_data), void *callback_data, int f_has_callback2, void(*callback_print_function2)(std::stringstream &ost, void *data, void *callback_data), void *callback_data2, int verbose_level)
data_structures::tally * get_ago_distribution(long int *&ago, int verbose_level)
void init_from_schreier(groups::schreier *Sch, actions::action *default_action, ring_theory::longinteger_object &full_group_order, int verbose_level)
A collection of invariants called orbit type associated with a system of sets. The orbit types are ba...
long int * Type_repository
void init(groups::orbits_on_something *Oos, int nb_sets, int set_size, long int *Sets, long int goi, int verbose_level)
long int * Type_representatives
void create_latex_report(std::string &prefix, int verbose_level)
void report(std::ostream &ost, int verbose_level)
groups::orbits_on_something * Oos
void report_one_type(std::ostream &ost, int type_idx, int verbose_level)
manages access to schreier vectors
int coset_rep_inv_recursion(schreier_vector *S, int pt, int &pt0, int verbose_level)
void sv_write_file(schreier_vector *Sv, std::ofstream &fp, int verbose_level)
int coset_rep_inv(schreier_vector *S, int pt, int &pt0, int verbose_level)
int nb_calls_to_coset_rep_inv_recursion
void init(actions::action *A, actions::action *A2, int f_allow_failure, int verbose_level)
schreier_vector * sv_read_file(int gen_hdl_first, int nb_gen, std::ifstream &fp, int verbose_level)
~schreier_vector_handler()
void print_info_and_generators(schreier_vector *S)
int nb_calls_to_coset_rep_inv
int coset_rep_inv_lint(schreier_vector *S, long int pt, long int &pt0, int verbose_level)
data_structures::set_of_sets * get_orbits_as_set_of_sets(schreier_vector *Sv, int verbose_level)
schreier_vector_handler()
compact storage of schreier vectors
int f_has_local_generators
void init_from_schreier(groups::schreier *S, int f_trivial_group, int verbose_level)
void init_shallow_schreier_forest(groups::schreier *S, int f_trivial_group, int f_randomized, int verbose_level)
int get_number_of_points()
void orbit_stats(int &nb_orbits, int *&orbit_reps, int *&orbit_length, int *&total_depth, int verbose_level)
void relabel_points(induced_actions::action_on_factor_space *AF, int verbose_level)
void init(int gen_hdl_first, int nb_gen, int *sv, int verbose_level)
void trace_back(int pt, int &depth)
int get_number_of_orbits()
void export_tree_as_layered_graph(int orbit_no, int orbit_rep, std::string &fname_mask, int verbose_level)
void count_number_of_orbits_and_get_orbit_reps(int *&orbit_reps, int &nb_orbits)
void init_local_generators(vector_ge *gens, int verbose_level)
int determine_depth_recursion(int n, int *pts, int *prev, int *depth, int *ancestor, int pos)
int count_number_of_orbits()
void orbit_of_point(int pt, long int *&orbit_elts, int &orbit_len, int &idx_of_root_node, int verbose_level)
void set_sv(int *sv, int verbose_level)
a set and its known set stabilizer
void apply_to_self_element_raw(int *Elt_data, int verbose_level)
void init_stab_from_data(int *data_gens, int data_gens_size, int nb_gens, std::string &ascii_target_go, int verbose_level)
void apply_to_self_inverse(int *Elt, int verbose_level)
ring_theory::longinteger_object target_go
void print_restricted_action_on_the_set(int verbose_level)
groups::strong_generators * Strong_gens
long int group_order_as_lint()
void print_set_tex_for_inline_text(std::ostream &ost)
void test_if_group_acts(int verbose_level)
void apply_to_self_inverse_element_raw(int *Elt_data, int verbose_level)
void init(actions::action *A, actions::action *A2, int verbose_level)
void init_stab_from_file(const char *fname_gens, int verbose_level)
void init_everything(actions::action *A, actions::action *A2, long int *Set, int set_sz, groups::strong_generators *gens, int verbose_level)
actions::action * create_restricted_action_on_the_set(int verbose_level)
void allocate_data(int sz, int verbose_level)
void init_data(long int *data, int sz, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
set_and_stabilizer * create_copy(int verbose_level)
void apply_to_self(int *Elt, int verbose_level)
void print_generators_tex(std::ostream &ost)
void print_set_tex(std::ostream &ost)
void rearrange_by_orbits(int *&orbit_first, int *&orbit_length, int *&orbit, int &nb_orbits, int verbose_level)
a union find data structure (used in the poset classification algorithm)
union_find_on_k_subsets()
int nb_interesting_k_subsets
actions::action * Ar_perm
~union_find_on_k_subsets()
actions::action * A_original
int is_minimal(int rk, int verbose_level)
void init(actions::action *A_original, groups::sims *S, long int *set, int set_sz, int k, long int *interesting_k_subsets, int nb_interesting_k_subsets, int verbose_level)
long int * interesting_k_subsets
a union find data structure (used in the poset classification algorithm)
void init(actions::action *A, int verbose_level)
int count_ancestors_above(int i0)
void do_union(int a, int b)
void add_generator(int *Elt, int verbose_level)
void add_generators(vector_ge *gens, int verbose_level)
to hold a vector of group elements
void init_double(actions::action *A, int *Elt1, int *Elt2, int verbose_level)
void conjugate_svas(int *Elt)
void extract_subset_of_elements_by_rank_text_vector(const char *rank_vector_text, groups::sims *S, int verbose_level)
void write_to_memory_object(orbiter_kernel_system::memory_object *m, int verbose_level)
void init_conjugate_svas_of(vector_ge *v, int *Elt, int verbose_level)
void reallocate_and_insert_at(int position, int *elt, int verbose_level)
void matrix_representation(induced_actions::action_on_homogeneous_polynomials *A_on_HPD, int *&M, int &nb_gens, int verbose_level)
void read_from_memory_object(orbiter_kernel_system::memory_object *m, int verbose_level)
void extract_subset_of_elements_by_rank(int *rank_vector, int len, groups::sims *S, int verbose_level)
void init_conjugate_sasv_of(vector_ge *v, int *Elt, int verbose_level)
void append(int *elt, int verbose_level)
void print_as_permutation(std::ostream &ost)
void init_single(actions::action *A, int *Elt, int verbose_level)
void read_column_csv(std::string &fname, actions::action *A, int col_idx, int verbose_level)
void write_to_csv_file_coded(std::string &fname, int verbose_level)
void print_for_make_element(std::ostream &ost)
void allocate(int length, int verbose_level)
void reallocate(int new_length, int verbose_level)
void copy_in(int i, int *elt)
void save_csv(std::string &fname, int verbose_level)
void print(std::ostream &ost)
groups::schreier * orbits_on_points_schreier(actions::action *A_given, int verbose_level)
void insert_at(int length_before, int position, int *elt, int verbose_level)
void conjugate_sasv(int *Elt)
void reverse_isomorphism_exterior_square(int verbose_level)
void write_to_file_binary(std::ofstream &fp, int verbose_level)
void copy_out(int i, int *elt)
void copy(vector_ge *&vector_copy, int verbose_level)
void init_from_data(actions::action *A, int *data, int nb_elements, int elt_size, int verbose_level)
void init(actions::action *A, int verbose_level)
void print_generators_tex(ring_theory::longinteger_object &go, std::ostream &ost)
void print(std::ostream &ost, int f_print_as_permutation, int f_offset, int offset, int f_do_it_anyway_even_for_big_degree, int f_print_cycles_of_length_one)
void init_from_permutation_representation(actions::action *A, groups::sims *S, int *data, int nb_elements, int verbose_level)
void print_tex(std::ostream &ost)
int test_if_all_elements_stabilize_a_set(actions::action *A2, long int *set, int sz, int verbose_level)
void init_by_hdl(actions::action *A, int *gen_hdl, int nb_gen, int verbose_level)
void read_from_file_binary(std::ifstream &fp, int verbose_level)
void print_quick(std::ostream &ost)
void print_with_given_action(std::ostream &ost, actions::action *A2)
int test_if_all_elements_stabilize_a_point(actions::action *A2, int pt)
compute orbits of a group in a given action; allows file io
Schreier trees for orbits of groups on points.
a permutation group represented via a stabilizer chain
a strong generating set for a permutation group with respect to a fixed action
induced action on the factor space of a vector space modulo a subspace
induced action on the set of homogeneous polynomials over a finite field
the orbiter library for the classification of combinatorial objects