12#ifndef ORBITER_SRC_LIB_CLASSIFICATION_POSET_CLASSIFICATION_POSET_CLASSIFICATION_H_
13#define ORBITER_SRC_LIB_CLASSIFICATION_POSET_CLASSIFICATION_POSET_CLASSIFICATION_H_
18namespace layer4_classification {
19namespace poset_classification {
44 void *data,
int verbose_level);
55 int *
Elt,
void *data,
int verbose_level),
58 int *
Elt,
int verbose_level);
65#define NB_EXTENSION_TYPES 5
67#define EXTENSION_TYPE_UNPROCESSED 0
68#define EXTENSION_TYPE_EXTENSION 1
69#define EXTENSION_TYPE_FUSION 2
70#define EXTENSION_TYPE_PROCESSING 3
71#define EXTENSION_TYPE_NOT_CANONICAL 4
127#define MAX_CALLBACK 100
141 long int *S,
int len,
void *data,
int verbose_level);
146 long int *S,
int len,
147 long int *candidates,
int nb_candidates,
148 long int *good_candidates,
int &nb_good_candidates,
149 void *data,
int verbose_level);
162 long int *S,
int len,
void *data,
int verbose_level),
166 void (*func)(
long int *S,
int len,
167 long int *candidates,
int nb_candidates,
168 long int *good_candidates,
int &nb_good_candidates,
169 void *data,
int verbose_level),
173 long int *S,
int len,
174 long int *candidates,
int nb_candidates,
175 long int *good_candidates,
int &nb_good_candidates,
178 long int *S,
int len,
179 long int *candidates,
int nb_candidates,
180 long int *good_candidates,
int &nb_good_candidates,
293 int argc, std::string *argv,
298 long int *S,
int len,
299 long int *candidates,
int nb_candidates,
300 long int *good_candidates,
int &nb_good_candidates,
306 groups::schreier *Sch,
void *data,
int data2,
int verbose_level);
327 std::string problem_label;
328 std::string problem_label_with_path;
338 data_structures_groups::schreier_vector_handler *Schreier_vector_handler;
360 long int *tmp_set_apply_fusion;
365 int *tmp_find_node_for_subspace_by_rank1;
368 int *tmp_find_node_for_subspace_by_rank2;
378 data_structures_groups::vector_ge *transporter;
388 int f_has_invariant_subset_for_root_node;
389 int *invariant_subset_for_root_node;
390 int invariant_subset_for_root_node_size;
393 int f_do_group_extension_in_upstep;
396 int f_allowed_to_show_group_elements;
397 int downstep_orbits_print_max_orbits;
398 int downstep_orbits_print_max_points_per_orbit;
402 long int nb_times_image_of_called0;
403 long int nb_times_mult_called0;
404 long int nb_times_invert_called0;
405 long int nb_times_retrieve_called0;
406 long int nb_times_store_called0;
408 double progress_last_time;
409 double progress_epsilon;
434 actions::action *
get_A();
435 actions::action *
get_A2();
436 algebra::vector_space *
get_VS();
447 long int *the_set,
int lvl,
448 long int *candidates,
450 long int *good_candidates,
451 int &nb_good_candidates,
457 long int *set2,
int sz2,
int verbose_level);
459 int level,
int verbose_level);
461 int level,
int orbit_at_level,
int verbose_level);
463 int orbit_at_level,
int verbose_level);
465 void get_set(
int node,
long int *set,
int &size);
466 void get_set(
int level,
int orbit,
long int *set,
int &size);
469 int f_tolerant,
int verbose_level);
471 int node,
int len,
long int *set,
int f_tolerant,
476 ring_theory::longinteger_object *&agos,
int *&multiplicities,
482 ring_theory::longinteger_object &len);
484 ring_theory::longinteger_object &stab_order,
485 ring_theory::longinteger_object &len);
492 int level,
int order,
int verbose_level);
495 ring_theory::longinteger_object &go);
499 int level,
int orbit_at_level,
int verbose_level);
501 int level,
int orbit_at_level,
int verbose_level);
503 int level,
int orbit_at_level,
int verbose_level);
505 long int rank,
long int *set,
int verbose_level);
507 long int &rank,
long int *set,
509 void coset_unrank(
int depth,
int orbit_idx,
long int rank,
510 int *Elt,
int verbose_level);
511 long int coset_rank(
int depth,
int orbit_idx,
int *Elt,
514 int f_has_print_function,
515 void (*print_function)(std::ostream &ost,
int len,
long int *S,
void *data),
516 void *print_function_data,
517 int f_show_orbit_decomposition,
int f_show_stab,
518 int f_save_stab,
int f_show_whole_orbit);
521 int nb_orbits,
int *Orbit_idx,
522 int (*compute_function)(
int len,
long int *S,
void *data),
523 void *compute_function_data,
526 int nb_orbits,
int *Orbit_idx,
527 int f_has_print_function,
528 void (*print_function)(std::ostream &ost,
int len,
long int *S,
void *data),
529 void *print_function_data,
530 int f_show_orbit_decomposition,
int f_show_stab,
531 int f_save_stab,
int f_show_whole_orbit);
533 int (*test_property_function)(
int len,
long int *S,
void *data),
534 void *test_property_data,
535 int &nb,
int *&Orbit_idx);
537 int f_has_print_function,
538 void (*print_function)(std::ostream &ost,
int len,
long int *S,
void *data),
539 void *print_function_data,
540 int f_show_orbit_decomposition,
int f_show_stab,
541 int f_save_stab,
int f_show_whole_orbit);
543 int depth,
int orbit_idx,
544 long int *&Orbit,
int &
orbit_length,
int verbose_level);
546 int subset_size,
int subset_rk,
547 long int *reduced_set,
int *transporter,
int &local_idx,
556 groups::strong_generators *&Strong_gens,
559 int *&interesting_sets,
int &nb_interesting_sets,
560 int &orbit_idx,
int verbose_level);
562 data_structures::tally *&C,
int verbose_level);
565 int n,
int k,
int &nCk,
int *&isotype,
int *&orbit_frequencies,
int &nb_orbits,
568 int &nCk,
int *&isotype,
int verbose_level);
570 long int *&Orbit_reps,
int verbose_level);
574 void rank_basis(
int *Basis,
long int *S,
int len);
584 int sz,
int verbose_level);
597 int *invariant_subset,
int invariant_subset_size,
612 int f_use_invariant_subset_if_available,
627 int f_use_invariant_subset_if_available,
631 void recognize(std::string &set_to_recognize,
632 int h,
int nb_to_recognize,
int verbose_level);
634 int f_create_schreier_vector,
635 int f_use_invariant_subset_if_available,
637 int f_write_candidate_file,
641 int f_create_schreier_vector,
642 int f_use_invariant_subset_if_available,
646 void upstep(
int size,
int f_debug,
652 int f_indicate_not_canonicals,
662 int *&P,
int &N,
int verbose_level);
664 int *&P,
int &N,
int verbose_level);
666 int *&Pij,
int &N1,
int &N2,
int verbose_level);
668 int *&Pij,
int &N1,
int &N2,
int verbose_level);
670 int lvl2,
int po2,
int verbose_level);
672 int po1,
int lvl2,
int po2,
int verbose_level);
674 int *M_inf,
int verbose_level);
676 int depth,
int verbose_level);
678 int level,
long int *&M,
int &nb_rows,
int &nb_cols,
int verbose_level);
680 long int *Mtr,
long int *Mrk,
long int *&Mtk,
681 int nb_r1,
int nb_c1,
int nb_r2,
int nb_c2,
int &nb_r3,
int &nb_c3,
686 int *Nb_rows,
int *Nb_cols,
688 long int *&Mtk,
int &nb_r,
int &nb_c,
703 graphics::layered_graph_draw_options *draw_options,
708 std::string &fname_base,
int lvl,
709 graphics::tree_draw_options *Tree_draw_options,
710 graphics::layered_graph_draw_options *Draw_options,
711 int xmax,
int ymax,
int rad,
int f_embedded,
712 int f_sideways,
int verbose_level);
715 graphics::tree_draw_options *Tree_draw_options,
716 graphics::layered_graph_draw_options *Draw_options,
718 int *coord_xyw,
int *perm,
int *perm_inv,
719 int f_draw_points,
int f_draw_extension_points,
720 int f_draw_aut_group_order,
721 int xmax,
int ymax,
int rad,
int f_embedded,
725 int *coords,
int *perm,
int *perm_inv,
726 int f_draw_points,
int f_draw_extension_points,
727 int f_draw_aut_group_order,
728 int radius,
int verbose_level);
731 graphics::layered_graph_draw_options *LG_Draw_options,
735 std::string &fname_base,
737 graphics::layered_graph_draw_options *LG_Draw_options,
740 std::string &fname_base,
741 int depth,
int data,
int level,
742 graphics::layered_graph_draw_options *LG_Draw_options,
745 int depth,
const char *fname_prefix,
int verbose_level);
747 int data1,
double x_stretch,
754 graph_theory::layered_graph *&LG,
int data1,
758 void make_graph(
int depth, graph_theory::layered_graph *&LG,
759 int data1,
int f_tree,
int verbose_level);
762 int data1,
int level,
int verbose_level);
766 int data1,
int max_depth,
int verbose_level);
778 int prev,
int cur_ex,
int nb_ext_cur,
int nb_fuse_cur);
780 int nb_ext_cur,
int nb_fuse_cur);
788 std::string &fname_base,
int depth_completed);
794 int prev,
int cur_extension);
796 int prev,
int cur_extension,
int coset,
int nb_cosets);
801 std::string &fname,
int verbose_level);
803 std::string &fname_base,
int verbose_level);
804 void write_file(std::ofstream &fp,
int depth_completed,
806 void read_file(std::ifstream &fp,
int &depth_completed,
812 std::string &fname_base,
int level);
815 int f_split,
int split_mod,
int split_case,
816 int f_recreate_extensions,
int f_dont_keep_sv,
819 int f_split,
int split_mod,
int split_case,
825 void recover(std::string &recover_fname,
826 int &depth_completed,
int verbose_level);
828 std::string &fname_base,
int lvl);
830 std::string &fname_base,
int lvl);
832 std::string &fname_base,
int lvl);
835 data_structures::spreadsheet *&Sp,
838 data_structures::spreadsheet *&Sp,
839 int max_depth,
int verbose_level);
841 std::string &fname_mask);
843 std::string &fname_mask);
845 std::string &fname_mask);
847 std::string &fname,
int node);
850 int n,
int q,
int vector_space_dimension,
851 int level,
int verbose_level);
861 int size,
int f_implicit_fusion,
862 int lvl,
int current_node,
863 int &final_node,
int verbose_level);
868 int size,
int f_implicit_fusion,
869 int lvl,
int current_node,
int &final_node,
876 long int *the_set,
int size,
int *transporter,
int f_implicit_fusion,
877 int &final_node,
int verbose_level);
881 void report(std::ostream &ost,
897 int *transporter,
int &orbit_idx,
int verbose_level);
899 long int *set,
int sz,
int *transporter,
902 void identify(
long int *data,
int sz,
int *transporter,
903 int &orbit_at_level,
int verbose_level);
904 void test_identify(
int level,
int nb_times,
int verbose_level);
906 int cur_level,
int size,
int cur_node,
int cur_ex,
907 long int *set_in,
long int *set_out,
910 int current_node,
int current_extension,
911 long int *set_in,
long int *set_out,
long int *set_tmp,
912 int *transporter_in,
int *transporter_out,
917 long int *canonical_set,
long int *tmp_set1,
long int *tmp_set2,
918 int *Elt_transporter,
int *tmp_Elt1,
925 int trace_set(
long int *set,
int size,
int level,
926 long int *canonical_set,
int *Elt_transporter,
966 int argc, std::string *argv,
993 long int nb_poset_orbit_nodes_used;
994 long int nb_poset_orbit_nodes_allocated;
995 long int poset_orbit_nodes_increment;
996 long int poset_orbit_nodes_increment_last;
1000 long int *first_poset_orbit_node_at_level;
1002 long int *nb_extension_nodes_at_level_total;
1003 long int *nb_extension_nodes_at_level;
1004 long int *nb_fusion_nodes_at_level;
1005 long int *nb_unprocessed_nodes_at_level;
1016 int nb_poset_orbit_nodes,
int sz,
int max_set_size,
long int t0,
1019 int nb_poset_orbit_nodes,
1037 void get_set(
int node,
long int *set,
int &size);
1038 void get_set(
int level,
int orbit,
long int *set,
int &size);
1041 long int pt,
int verbose_level);
1045 int node,
int cur_ext,
int type,
int verbose_level);
1047 int &nb_rows,
int &nb_cols,
int verbose_level);
1050 int node_local,
int verbose_level);
1058 int *&perm,
int *&perm_inv,
int verbose_level);
1060 int &depth_completed,
1061 orbiter_kernel_system::memory_object *m,
int &nb_group_elements,
1064 int depth_completed,
1065 orbiter_kernel_system::memory_object *m,
int &nb_group_elements,
1070 int level, std::ifstream &fp,
1071 int f_split,
int split_mod,
int split_case,
1072 int f_recreate_extensions,
int f_dont_keep_sv,
1075 int level, std::ofstream &fp,
1076 int f_split,
int split_mod,
int split_case,
1079 int level, std::ifstream &fp,
1080 int &nb_group_elements,
int verbose_level);
1082 int level, std::ofstream &fp,
1083 int &nb_group_elements,
int verbose_level);
1085 const char *fname_base,
1086 int lvl,
int t0,
int verbose_level);
1088 std::string &fname,
int verbose_level);
1090 std::string &fname_base,
int lvl,
int t0,
1093 int lvl,
long int *&Data,
int &nb_reps,
int verbose_level);
1095 std::string &fname_base,
1099 std::string &fname_base,
1100 int lvl,
int t0,
int f_with_stabilizer_generators,
1104 std::ostream &f,
int lvl,
int t0,
1105 int f_with_stabilizer_generators,
int f_long_version,
1109 std::ostream &f,
int f_recurse,
int verbose_level);
1111 int lvl,
int verbose_level);
1142 const char *str,
int verbose_level);
1168 int nb_strong_generators;
1170 int first_strong_generator_handle;
1176 data_structures_groups::schreier_vector *Schreier_vector;
1178 actions::action *A_on_upset;
1194 void init_node(
int node,
int prev,
long int pt,
int verbose_level);
1198 void allocate_E(
int nb_extensions,
int verbose_level);
1213 void set_pt(
long int pt);
1219 int &idx,
int hdl,
int cur_depth,
int *perm,
int *perm_inv);
1224 int s, std::ostream &f,
int verbose_level);
1226 std::ostream &f,
int f_with_stabilizer_poset_classifications,
1232 int lvl, std::ostream &f,
int verbose_level);
1242 int i,
long int *set);
1254 groups::strong_generators *Strong_gens);
1256 ring_theory::longinteger_object &go);
1259 data_structures_groups::group_container &G,
1260 ring_theory::longinteger_object &go_G,
1264 groups::strong_generators *&Strong_gens,
1268 int prev,
int prev_ex,
int size,
1269 data_structures_groups::group_container &G,
1270 ring_theory::longinteger_object &go_G,
1276 int prev,
int prev_ex,
int size,
1277 data_structures_groups::group_container &G,
1278 ring_theory::longinteger_object &go_G,
1279 data_structures_groups::group_container &H,
1280 ring_theory::longinteger_object &go_H,
1281 long int pt,
int pt_orbit_len,
1287 int prev,
int prev_ex,
int size,
1288 data_structures_groups::group_container &G,
1289 ring_theory::longinteger_object &go_G,
1290 data_structures_groups::group_container &H,
1291 ring_theory::longinteger_object &go_H,
1292 long int pt,
int pt_orbit_len,
1296 int prev,
int prev_ex,
int size,
1297 data_structures_groups::group_container &G,
1298 ring_theory::longinteger_object &go_G,
1299 data_structures_groups::group_container &H,
1300 int pt,
int pt_orbit_len,
1304 int f_create_schreier_vector,
1305 groups::schreier *Schreier,
int verbose_level);
1310 int f_create_schreier_vector,
1311 groups::schreier &Schreier,
1312 actions::action *A_factor_space, induced_actions::action_on_factor_space *AF,
1319 actions::action *A, orbiter_kernel_system::memory_object *m,
1320 int &nb_group_elements,
int verbose_level);
1323 actions::action *A, orbiter_kernel_system::memory_object *m,
1324 int &nb_group_elements,
int verbose_level);
1326 actions::action *A,
int verbose_level);
1329 std::ifstream &fp,
int verbose_level);
1332 std::ofstream &fp,
int verbose_level);
1334 actions::action *A, std::ifstream &fp,
int &nb_group_elements,
1337 actions::action *A, std::ofstream &fp,
int &nb_group_elements,
1341 groups::schreier *Schreier,
1348 groups::schreier *Schreier,
1349 int f_using_invariant_subset, actions::action *AR,
1355 int lvl,
int current_node,
1356 int current_extension,
int len,
int f_tolerant,
1360 int lvl,
int current_node,
1361 int my_node,
int my_extension,
int my_coset,
1362 long int pt0,
int current_extension,
1363 int f_debug,
int f_implicit_fusion,
1368 int len,
int f_implicit_fusion,
int &f_failure_to_find_point,
1379 int lvl,
int current_node,
int size,
1380 long int *cur_set,
long int *tmp_set,
1381 int *cur_transporter,
int *tmp_transporter,
1382 int f_implicit_fusion,
int &f_failure_to_find_point,
1386 long int *cur_set,
long int *next_set,
1387 int *cur_transporter,
int *next_transporter,
1390 int lvl,
int current_node,
int size,
1391 long int *cur_set,
long int *next_set,
1392 int *cur_transporter,
int *next_transporter,
1393 int f_implicit_fusion,
int &f_failure_to_find_point,
1400 int lvl,
long int pt_to_trace,
long int &pt0,
int *&cosetrep,
1409 int lvl,
long int pt_to_trace,
long int &pt0,
int *&cosetrep,
1419 int f_create_schreier_vector,
1420 int f_use_invariant_subset_if_available,
1421 int f_implicit_fusion,
1429 int lvl,
int verbose_level);
1438 long int *&candidates,
int &nb_candidates,
1444 groups::schreier &Schreier, actions::action *&AR,
1446 int f_use_invariant_subset_if_available,
1447 int &f_using_invariant_subset,
1463 groups::schreier *Schreier, actions::action *AR,
1465 int f_use_invariant_subset_if_available,
1466 int f_using_invariant_subset,
1467 int f_create_schreier_vector,
1468 int &nb_good_orbits,
int &nb_points,
1476 groups::schreier &Schreier, actions::action *AR,
1477 int f_using_invariant_subset,
1479 int f_implicit_fusion,
1480 int good_orbits1,
int nb_points1,
1486 groups::schreier &O, actions::action *AR,
int f_using_invariant_subset,
1499 int &n,
long int *&subset,
1506 int n,
long int *subset,
1507 long int *candidates,
int &nb_candidates,
1514 groups::schreier *Schreier, actions::action *AR,
1516 int &nb_good_orbits1,
int &nb_points1,
1526 groups::schreier &Schreier, actions::action *AR,
1527 int f_using_invariant_subset,
1528 int lvl,
int verbose_level);
1533 groups::schreier *Schreier, actions::action *AR,
1545 int lvl,
int rep,
int *the_set,
1557 groups::schreier *Schreier, actions::action *AR,
1560 int max_orbits,
int max_points_per_orbit);
1567 int f_create_schreier_vector,
1568 int f_use_invariant_subset_if_available,
1569 int f_implicit_fusion,
1577 induced_actions::action_on_factor_space &AF,
1578 int lvl,
int verbose_level);
1581 induced_actions::action_on_factor_space &AF, actions::action &A_factor_space,
1582 int lvl,
int verbose_level);
1585 induced_actions::action_on_factor_space &AF,
1586 actions::action &A_factor_space,
1587 int lvl,
int f_compute_tables,
1597 int f_use_invariant_subset_if_available,
1598 int &f_using_invariant_subset,
1602 actions::action *A_factor_space,
1603 induced_actions::action_on_factor_space *AF,
1604 int lvl,
int f_implicit_fusion,
int verbose_level);
1623 algebra::vector_space *
VS;
1629 ring_theory::longinteger_object
go;
1647 algebra::vector_space *
VS,
1651 actions::action *
A2,
1655 int independence_value,
1659 long int *S,
int len,
void *data,
int verbose_level),
1663 void (*func)(
long int *S,
int len,
1664 long int *candidates,
int nb_candidates,
1665 long int *good_candidates,
int &nb_good_candidates,
1666 void *data,
int verbose_level),
1671 long int *S,
int len,
1672 long int *candidates,
int nb_candidates,
1673 long int *good_candidates,
int &nb_good_candidates,
1679 int k,
long int *&orbit_reps,
int &nb_orbits,
int verbose_level);
1682 int k,
int verbose_level);
1744 data_structures_groups::group_container *
G;
1745 data_structures_groups::group_container *
H;
1828 int &final_node,
int &final_ex,
int f_tolerant,
1831 int lvl,
int current_node,
int &final_node,
int &final_ex,
1832 int f_tolerant,
int verbose_level);
1834 int lvl,
int current_node,
int current_extension,
int pt0,
1835 int &final_node,
int &final_ex,
1838 int lvl,
int current_node,
1839 int &final_node,
int &final_ex,
1840 int f_tolerant,
int verbose_level);
represents a known classification with constructive recognition, to be used as base case for poset_cl...
void * recognition_function_data
groups::strong_generators * Stab_gens
int invoke_recognition(long int *Set, int len, int *Elt, int verbose_level)
classification_base_case()
void init(poset_with_group_action *Poset, int size, long int *orbit_rep, long int *live_points, int nb_live_points, groups::strong_generators *Stab_gens, void *recognition_function_data, int(*recognition_function)(long int *Set, int len, int *Elt, void *data, int verbose_level), int verbose_level)
int(* recognition_function)(long int *Set, int len, int *Elt, void *data, int verbose_level)
~classification_base_case()
poset_with_group_action * Poset
represents a flag in the poset classification algorithm; related to poset_orbit_node
void set_data1(int data1)
void set_data2(int data1)
void set_orbit_len(int orbit_len)
maintains a list of test functions which define a G-invariant poset
void(* callback_testing_no_group[MAX_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(poset_classification *PC, int max_depth, int verbose_level)
void early_test_func_by_using_group(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
void early_test_func(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
void * callback_data_no_group[MAX_CALLBACK]
void add_callback_no_group(void(*func)(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 *data, int verbose_level)
poset_classification * PC
void add_callback(int(*func)(orbit_based_testing *Obt, long int *S, int len, void *data, int verbose_level), void *data, int verbose_level)
int(* callback_testing[MAX_CALLBACK])(orbit_based_testing *Obt, long int *S, int len, void *data, int verbose_level)
void * callback_data[MAX_CALLBACK]
to control the behavior of the poset classification algorithm
poset_classification_control()
int f_node_label_is_element
int f_print_data_structure
int f_show_orbit_decomposition
void prepare(poset_classification *PC, int verbose_level)
int f_Kramer_Mesner_matrix
std::vector< std::vector< int > > preferred_choice
int f_draw_schreier_trees
std::string recover_fname
int f_make_relations_with_flag_orbits
int read_arguments(int argc, std::string *argv, int verbose_level)
std::string schreier_tree_prefix
std::string problem_label
graphics::layered_graph_draw_options * draw_options
~poset_classification_control()
int verbose_level_group_theory
std::string clique_test_graph
int f_node_label_is_group_order
poset_classification_report_options * report_options
void early_test_func_for_clique_search(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
int f_test_multi_edge_in_decomposition_matrix
int f_export_schreier_trees
graph_theory::colored_graph * clique_test_CG
int f_find_node_by_stabilizer_order
int find_node_by_stabilizer_order
std::vector< std::string > recognize
to control the behavior of the poset classification report function
int f_select_orbits_by_stabilizer_order
int is_selected_by_group_order(long int so)
int select_orbits_by_level_level
int f_select_orbits_by_stabilizer_order_multiple_of
~poset_classification_report_options()
int f_include_projective_stabilizer
int select_orbits_by_stabilizer_order_so_multiple_of
int select_orbits_by_stabilizer_order_so
int read_arguments(int argc, std::string *argv, int verbose_level)
int f_select_orbits_by_level
poset_classification_report_options()
the poset classification algorithm
void print_progress_by_extension(int size, int cur, int prev, int cur_ex, int nb_ext_cur, int nb_fuse_cur)
void initialize_and_allocate_root_node(poset_classification_control *PC_control, poset_with_group_action *Poset, int depth, int verbose_level)
int poset_classification_apply_isomorphism(int level, int size, int current_node, int current_extension, long int *set_in, long int *set_out, long int *set_tmp, int *transporter_in, int *transporter_out, int f_tolerant, int verbose_level)
void make_graph(int depth, graph_theory::layered_graph *&LG, int data1, int f_tree, int verbose_level)
void draw_poset_fname_base_poset_detailed_lvl(std::string &fname, int depth)
void upstep(int size, int f_debug, int verbose_level)
void print_node(int node)
void create_shallow_schreier_tree_fname_mask(std::string &fname, int node)
void make_fname_lvl_file_candidates(std::string &fname, std::string &fname_base, int lvl)
void classify_k_subsets(long int *the_set, int n, int k, data_structures::tally *&C, int verbose_level)
void post_processing(int actual_size, int verbose_level)
actions::action * get_A2()
int compute_orbits(int from_level, int to_level, int schreier_depth, int f_use_invariant_subset_if_available, int verbose_level)
void init_root_node_invariant_subset(int *invariant_subset, int invariant_subset_size, int verbose_level)
int trace_set(long int *set, int size, int level, long int *canonical_set, int *Elt_transporter, int verbose_level)
void create_schreier_tree_fname_mask_base(std::string &fname_mask)
void create_schreier_tree_fname_mask_base_tex(std::string &fname_mask)
void print_progress(int size, int cur, int prev, int nb_ext_cur, int nb_fuse_cur)
void log_current_node(std::ostream &f, int size)
actions::action * get_A()
long int count_extension_nodes_at_level(int lvl)
void extend_level(int size, int f_create_schreier_vector, int f_use_invariant_subset_if_available, int f_debug, int f_write_candidate_file, int verbose_level)
data_structures_groups::set_and_stabilizer * get_set_and_stabilizer(int level, int orbit_at_level, int verbose_level)
void draw_level_graph(std::string &fname_base, int depth, int data, int level, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
void make_fname_candidates_file_default(char *fname2000, int level)
void list_whole_orbit(int depth, int orbit_idx, int f_has_print_function, void(*print_function)(std::ostream &ost, int len, long int *S, void *data), void *print_function_data, int f_show_orbit_decomposition, int f_show_stab, int f_save_stab, int f_show_whole_orbit)
void make_spreadsheet_of_level_info(data_structures::spreadsheet *&Sp, int max_depth, int verbose_level)
int max_number_of_orbits_to_print()
int main(int t0, int schreier_depth, int f_use_invariant_subset_if_available, int f_debug, int verbose_level)
void housekeeping(int i, int f_write_files, int t0, int verbose_level)
void init_internal(poset_classification_control *PC_control, poset_with_group_action *Poset, int sz, int verbose_level)
void extend_node(int size, int prev, int &cur, int f_debug, int f_indicate_not_canonicals, int verbose_level)
double level_progress(int lvl)
void get_all_stabilizer_orders_at_level(int level, long int *&Ago, int &nb)
void report_orbits_summary(std::ostream &ost, poset_classification_report_options *Opt, int verbose_level)
void recreate_schreier_vectors_at_level(int i, int verbose_level)
int max_number_of_points_to_print_in_orbit()
poset_of_orbits * get_Poo()
void draw_tree(std::string &fname_base, int lvl, graphics::tree_draw_options *Tree_draw_options, graphics::layered_graph_draw_options *Draw_options, int xmax, int ymax, int rad, int f_embedded, int f_sideways, int verbose_level)
void list_all_orbits_at_level(int depth, int f_has_print_function, void(*print_function)(std::ostream &ost, int len, long int *S, void *data), void *print_function_data, int f_show_orbit_decomposition, int f_show_stab, int f_save_stab, int f_show_whole_orbit)
data_structures_groups::orbit_transversal * get_orbit_transversal(int level, int verbose_level)
void stabilizer_order(int node, ring_theory::longinteger_object &go)
void orbit_length(int orbit_at_level, int level, ring_theory::longinteger_object &len)
long int nb_flag_orbits_up_at_level(int level)
data_structures_groups::set_and_stabilizer * identify_and_get_stabilizer(long int *set, int sz, int *transporter, int &orbit_at_level, int verbose_level)
int first_node_at_level(int i)
void invoke_early_test_func(long int *the_set, int lvl, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
int node_has_schreier_vector(int node_idx)
void write_treefile(std::string &fname_base, int lvl, graphics::layered_graph_draw_options *draw_options, int verbose_level)
void write_reps_csv(int lvl, int verbose_level)
void make_fname_lvl_file(std::string &fname, std::string &fname_base, int lvl)
int poset_structure_is_contained(long int *set1, int sz1, long int *set2, int sz2, int verbose_level)
poset_with_group_action * get_poset()
void compute_integer_property_of_selected_list_of_orbits(int depth, int nb_orbits, int *Orbit_idx, int(*compute_function)(int len, long int *S, void *data), void *compute_function_data, int *&Data)
int test_sv_level_file_binary(int level, std::string &fname_base)
void unrank_basis(int *Basis, long int *S, int len)
void orbit_element_unrank(int depth, int orbit_idx, long int rank, long int *set, int verbose_level)
void make_flag_orbits_on_relations(int depth, const char *fname_prefix, int verbose_level)
void rank_basis(int *Basis, long int *S, int len)
void make_spreadsheet_of_orbit_reps(data_structures::spreadsheet *&Sp, int max_depth)
void Kramer_Mesner_matrix_neighboring(int level, long int *&M, int &nb_rows, int &nb_cols, int verbose_level)
poset_orbit_node * get_node_ij(int level, int node)
int count_incidences_up(int lvl1, int po1, int lvl2, int po2, int verbose_level)
void print_orbit_numbers(int depth)
void generate_history(int level, int verbose_level)
std::string & get_problem_label()
void Plesken_matrix_down(int depth, int *&P, int &N, int verbose_level)
void compute_and_print_automorphism_group_orders(int lvl, std::ostream &ost)
void Plesken_matrix_up(int depth, int *&P, int &N, int verbose_level)
void draw_poset_fname_aux_poset(std::string &fname, int depth)
void map_to_canonical_k_subset(long int *the_set, int set_size, int subset_size, int subset_rk, long int *reduced_set, int *transporter, int &local_idx, int verbose_level)
void recognize_start_over(int size, int f_implicit_fusion, int lvl, int current_node, int &final_node, int verbose_level)
int nb_orbits_at_level(int level)
void draw_poset_fname_tree(std::string &fname, int depth)
poset_orbit_node * get_node(int node_idx)
void get_orbit_representatives(int level, int &nb_orbits, long int *&Orbit_reps, int verbose_level)
void write_level_file_binary(int level, std::string &fname_base, int verbose_level)
algebra::vector_space * get_VS()
void draw_poset_fname_base_poset_lvl(std::string &fname, int depth)
std::string & get_problem_label_with_path()
void write_file(std::ofstream &fp, int depth_completed, int verbose_level)
void coset_unrank(int depth, int orbit_idx, long int rank, int *Elt, int verbose_level)
void make_auxiliary_graph(int depth, graph_theory::layered_graph *&LG, int data1, int verbose_level)
int orbit_length_as_int(int orbit_at_level, int level)
void draw_tree_low_level(std::string &fname, graphics::tree_draw_options *Tree_draw_options, graphics::layered_graph_draw_options *Draw_options, int nb_nodes, int *coord_xyw, int *perm, int *perm_inv, int f_draw_points, int f_draw_extension_points, int f_draw_aut_group_order, int xmax, int ymax, int rad, int f_embedded, int f_sideways, int verbose_level)
void print_progress_by_level(int lvl)
void find_interesting_k_subsets(long int *the_set, int n, int k, int *&interesting_sets, int &nb_interesting_sets, int &orbit_idx, int verbose_level)
void compute_orbits_on_subsets(int target_depth, poset_classification_control *PC_control, poset_with_group_action *Poset, int verbose_level)
void get_stabilizer_generators_cleaned_up(groups::strong_generators *&gens, int level, int orbit_at_level, int verbose_level)
void initialize_with_base_case(poset_classification_control *PC_control, poset_with_group_action *Poset, int depth, classification_base_case *Base_case, int verbose_level)
long int rank_point(int *v)
poset_classification_control * get_control()
void print_set_verbose(int node)
void draw_poset_fname_poset_detailed(std::string &fname, int depth)
void get_set_by_level(int level, int node, long int *set)
long int coset_rank(int depth, int orbit_idx, int *Elt, int verbose_level)
void draw_tree_low_level1(graphics::mp_graphics &G, int nb_nodes, int *coords, int *perm, int *perm_inv, int f_draw_points, int f_draw_extension_points, int f_draw_aut_group_order, int radius, int verbose_level)
void recognize_recursion(int size, int f_implicit_fusion, int lvl, int current_node, int &final_node, int verbose_level)
long int * get_set_i(int i)
void get_orbit_length_and_stabilizer_order(int node, int level, ring_theory::longinteger_object &stab_order, ring_theory::longinteger_object &len)
void Asup_to_Ainf(int t, int k, int *M_sup, int *M_inf, int verbose_level)
void print_representatives_at_level(int lvl)
void get_stabilizer_group(data_structures_groups::group_container *&G, int level, int orbit_at_level, int verbose_level)
void draw_poset_fname_base_tree_lvl(std::string &fname, int depth)
void report_poset_of_orbits(std::ostream &ost, int verbose_level)
classification_base_case * get_Base_case()
void read_sv_level_file_binary(int level, std::string &fname_base, int f_split, int split_mod, int split_case, int f_recreate_extensions, int f_dont_keep_sv, int verbose_level)
void get_whole_orbit(int depth, int orbit_idx, long int *&Orbit, int &orbit_length, int verbose_level)
int test_if_stabilizer_is_trivial(int level, int orbit_at_level, int verbose_level)
void identify(long int *data, int sz, int *transporter, int &orbit_at_level, int verbose_level)
void create_fname_sv_level_file_binary(std::string &fname, std::string &fname_base, int level)
int * get_invariant_subset_for_root_node()
long int get_stabilizer_order_lint(int level, int orbit_at_level)
void get_representative_of_subset_orbit(long int *set, int size, int local_orbit_no, groups::strong_generators *&Strong_gens, int verbose_level)
void get_stabilizer_generators(groups::strong_generators *&gens, int level, int orbit_at_level, int verbose_level)
void get_set(int node, long int *set, int &size)
void report_orbit(int level, int orbit_at_level, poset_classification_report_options *Opt, std::ostream &ost)
void draw_poset_fname_base_aux_poset(std::string &fname, int depth)
void print_statistic_on_callbacks()
void get_stabilizer_order(int level, int orbit_at_level, ring_theory::longinteger_object &go)
void create_shallow_schreier_tree_fname_mask_base(std::string &fname_mask)
void print_level_info(int prev_level, int prev)
void Mtk_via_Mtr_Mrk(int t, int r, int k, long int *Mtr, long int *Mrk, long int *&Mtk, int nb_r1, int nb_c1, int nb_r2, int nb_c2, int &nb_r3, int &nb_c3, int verbose_level)
void init_base_case(classification_base_case *Base_case, int verbose_level)
void print_data_structure_tex(int depth, int verbose_level)
int find_isomorphism(long int *set1, long int *set2, int sz, int *transporter, int &orbit_idx, int verbose_level)
void write_sv_level_file_binary(int level, std::string &fname_base, int f_split, int split_mod, int split_case, int verbose_level)
void recreate_schreier_vectors_up_to_level(int lvl, int verbose_level)
int size_of_invariant_subset_for_root_node()
void poset_classification_apply_isomorphism_no_transporter(int cur_level, int size, int cur_node, int cur_ex, long int *set_in, long int *set_out, int verbose_level)
void write_data_file(int depth_completed, std::string &fname_base, int verbose_level)
void make_fname_lvl_reps_file(std::string &fname, std::string &fname_base, int lvl)
int count_incidences_down(int lvl1, int po1, int lvl2, int po2, int verbose_level)
void prepare_fname_data_file(std::string &fname, std::string &fname_base, int depth_completed)
int do_group_extension_in_upstep()
void print_extensions_at_level(std::ostream &ost, int lvl)
void make_full_poset_graph(int depth, graph_theory::layered_graph *&LG, int data1, double x_stretch, int verbose_level)
void trace_all_k_subsets_and_compute_frequencies(long int *the_set, int n, int k, int &nCk, int *&isotype, int *&orbit_frequencies, int &nb_orbits, int verbose_level)
void Plesken_submatrix_up(int i, int j, int *&Pij, int &N1, int &N2, int verbose_level)
int has_invariant_subset_for_root_node()
int find_poset_orbit_node_for_set(int len, long int *set, int f_tolerant, int verbose_level)
void Plesken_submatrix_down(int i, int j, int *&Pij, int &N1, int &N2, int verbose_level)
void print_statistic_on_callbacks_naked()
void print_problem_label()
void orbit_element_rank(int depth, int &orbit_idx, long int &rank, long int *set, int verbose_level)
int trace_set_recursion(int cur_level, int cur_node, int size, int level, long int *canonical_set, long int *tmp_set1, long int *tmp_set2, int *Elt_transporter, int *tmp_Elt1, int f_tolerant, int verbose_level)
void list_selected_set_of_orbits_at_level(int depth, int nb_orbits, int *Orbit_idx, int f_has_print_function, void(*print_function)(std::ostream &ost, int len, long int *S, void *data), void *print_function_data, int f_show_orbit_decomposition, int f_show_stab, int f_save_stab, int f_show_whole_orbit)
void draw_poset_fname_poset(std::string &fname, int depth)
void test_identify(int level, int nb_times, int verbose_level)
void compute_flag_orbits(int size, int f_create_schreier_vector, int f_use_invariant_subset_if_available, int verbose_level)
void print_level_extension_coset_info(int prev_level, int prev, int cur_extension, int coset, int nb_cosets)
int find_poset_orbit_node_for_set_basic(int from, int node, int len, long int *set, int f_tolerant, int verbose_level)
void generate_source_code(int level, int verbose_level)
void recover(std::string &recover_fname, int &depth_completed, int verbose_level)
void find_node_by_stabilizer_order(int level, int order, int verbose_level)
void draw_poset(std::string &fname_base, int depth, int data, graphics::layered_graph_draw_options *LG_Draw_options, int verbose_level)
void trace_all_k_subsets(long int *the_set, int n, int k, int &nCk, int *&isotype, int verbose_level)
void report_number_of_orbits_at_level(std::ostream &ost, poset_classification_report_options *Opt)
void wedge_product_export_magma(int n, int q, int vector_space_dimension, int level, int verbose_level)
void make_poset_graph_detailed(graph_theory::layered_graph *&LG, int data1, int max_depth, int verbose_level)
void read_level_file_binary(int level, std::string &fname_base, int verbose_level)
void test_for_multi_edge_in_classification_graph(int depth, int verbose_level)
void read_file(std::ifstream &fp, int &depth_completed, int verbose_level)
void unrank_point(int *v, long int rk)
void print_fusion_nodes(int depth)
void report(std::ostream &ost, poset_classification_report_options *Opt, int verbose_level)
void print_lex_rank(long int *set, int sz)
void recognize(std::string &set_to_recognize, int h, int nb_to_recognize, int verbose_level)
void report_orbits_in_detail(std::ostream &ost, poset_classification_report_options *Opt, int verbose_level)
int allowed_to_show_group_elements()
void housekeeping_no_data_file(int i, int t0, int verbose_level)
void test_property(int depth, int(*test_property_function)(int len, long int *S, void *data), void *test_property_data, int &nb, int *&Orbit_idx)
long int * get_tmp_set_apply_fusion()
void Mtk_from_MM(long int **pM, int *Nb_rows, int *Nb_cols, int t, int k, long int *&Mtk, int &nb_r, int &nb_c, int verbose_level)
data_structures_groups::schreier_vector_handler * get_schreier_vector_handler()
void draw_poset_full(std::string &fname_base, int depth, int data, graphics::layered_graph_draw_options *LG_Draw_options, double x_stretch, int verbose_level)
long int find_node_for_subspace_by_rank(long int *set, int len, int verbose_level)
void read_data_file(int &depth_completed, std::string &fname, int verbose_level)
void count_automorphism_group_orders(int lvl, int &nb_agos, ring_theory::longinteger_object *&agos, int *&multiplicities, int verbose_level)
void print_level_extension_info(int prev_level, int prev, int cur_extension)
void make_level_graph(int depth, graph_theory::layered_graph *&LG, int data1, int level, int verbose_level)
data_structures_groups::vector_ge * get_transporter()
description of a poset from the command line
int f_independence_condition
int read_arguments(int argc, const char **argv, int verbose_level)
void read_arguments_from_string(const char *str, int verbose_level)
int independence_condition_value
the data structure for the poset of orbits in the poset classification algorithm
void read_sv_level_file_binary2(int level, std::ifstream &fp, int f_split, int split_mod, int split_case, int f_recreate_extensions, int f_dont_keep_sv, int verbose_level)
void write_candidates_binary_using_sv(const char *fname_base, int lvl, int t0, int verbose_level)
void read_level_file_binary2(int level, std::ifstream &fp, int &nb_group_elements, int verbose_level)
void write_level_file_binary2(int level, std::ofstream &fp, int &nb_group_elements, int verbose_level)
void poset_orbit_node_depth_breadth_perm_and_inverse(int max_depth, int *&perm, int *&perm_inv, int verbose_level)
void write_lvl(std::ostream &f, int lvl, int t0, int f_with_stabilizer_generators, int f_long_version, int verbose_level)
long int count_extension_nodes_at_level(int lvl)
int count_live_points(int level, int node_local, int verbose_level)
void save_representatives_at_level_to_csv(std::string &fname, int lvl, int verbose_level)
void make_tabe_of_nodes(int verbose_level)
int find_extension_from_point(int node_idx, long int pt, int verbose_level)
void init_poset_orbit_node(int nb_poset_orbit_nodes, int verbose_level)
long int get_nb_poset_orbit_nodes_allocated()
void write_memory_object(int depth_completed, orbiter_kernel_system::memory_object *m, int &nb_group_elements, int verbose_level)
long int nb_flag_orbits_up_at_level(int level)
poset_orbit_node * get_node_ij(int level, int node)
long int calc_size_on_file(int depth_completed, int verbose_level)
int node_get_nb_of_extensions(int node)
void read_memory_object(int &depth_completed, orbiter_kernel_system::memory_object *m, int &nb_group_elements, int verbose_level)
void get_set(int node, long int *set, int &size)
void log_nodes_for_treefile(int cur, int depth, std::ostream &f, int f_recurse, int verbose_level)
void write_sv_level_file_binary2(int level, std::ofstream &fp, int f_split, int split_mod, int split_case, int verbose_level)
void reallocate_to(long int new_number_of_nodes, int verbose_level)
poset_orbit_node * get_node(int node_idx)
void write_orbit_reps_at_level(std::string &fname_base, int lvl, int verbose_level)
void print_progress_by_level(int lvl)
void get_orbit_reps_at_level(int lvl, long int *&Data, int &nb_reps, int verbose_level)
long int get_nb_extension_nodes_at_level_total(int level)
void write_lvl_file(std::string &fname_base, int lvl, int t0, int f_with_stabilizer_generators, int f_long_version, int verbose_level)
void read_level_file(int level, std::string &fname, int verbose_level)
void change_extension_type(int level, int node, int cur_ext, int type, int verbose_level)
int nb_orbits_at_level(int level)
void init_root_node_from_base_case(int verbose_level)
int first_node_at_level(int i)
void get_table_of_nodes(long int *&Table, int &nb_rows, int &nb_cols, int verbose_level)
void write_lvl_file_with_candidates(std::string &fname_base, int lvl, int t0, int verbose_level)
void init_root_node(int verbose_level)
void init(poset_classification *PC, int nb_poset_orbit_nodes, int sz, int max_set_size, long int t0, int verbose_level)
double level_progress(int lvl)
void set_first_node_at_level(int i, int value)
void set_nb_poset_orbit_nodes_used(int value)
to represent one poset orbit; related to the class poset_classification
extension * get_E(int idx)
long int calc_size_on_file(actions::action *A, int verbose_level)
void store_set_with_verbose_level(poset_classification *gen, int i, int verbose_level)
void create_schreier_vector_wrapper_subspace_action(poset_classification *gen, int f_create_schreier_vector, groups::schreier &Schreier, actions::action *A_factor_space, induced_actions::action_on_factor_space *AF, int verbose_level)
int trace_next_point_wrapper(poset_classification *gen, int lvl, int current_node, int len, int f_implicit_fusion, int &f_failure_to_find_point, int verbose_level)
void get_tl(std::vector< int > &tl, poset_classification *PC, int verbose_level)
void downstep_apply_early_test(poset_classification *gen, int lvl, int n, long int *subset, long int *candidates, int &nb_candidates, int verbose_level)
void downstep_orbit_test_and_schreier_vector(poset_classification *gen, groups::schreier *Schreier, actions::action *AR, int lvl, int f_use_invariant_subset_if_available, int f_using_invariant_subset, int f_create_schreier_vector, int &nb_good_orbits, int &nb_points, int verbose_level)
void init_node(int node, int prev, long int pt, int verbose_level)
void log_current_node(poset_classification *gen, int s, std::ostream &f, int f_with_stabilizer_poset_classifications, int verbose_level)
void compute_flag_orbits_subspace_action(poset_classification *gen, int lvl, int f_create_schreier_vector, int f_use_invariant_subset_if_available, int f_implicit_fusion, int verbose_level)
int test_if_stabilizer_is_trivial()
void read_memory_object(poset_classification *PC, actions::action *A, orbiter_kernel_system::memory_object *m, int &nb_group_elements, int verbose_level)
int has_Schreier_vector()
void orbit_representative_and_coset_rep_inv_subspace_action(poset_classification *gen, int lvl, long int pt_to_trace, long int &pt0, int *&cosetrep, int verbose_level)
int downstep_get_invariant_subset(poset_classification *gen, int lvl, int &n, long int *&subset, int verbose_level)
int orbit_representative_and_coset_rep_inv(poset_classification *gen, int lvl, long int pt_to_trace, long int &pt0, int *&cosetrep, int verbose_level)
void draw_schreier_forest(poset_classification *PC, groups::schreier *Schreier, int f_using_invariant_subset, actions::action *AR, int verbose_level)
void sv_read_file(poset_classification *PC, std::ifstream &fp, int verbose_level)
void print_set_verbose(poset_classification *gen)
void write_memory_object(poset_classification *PC, actions::action *A, orbiter_kernel_system::memory_object *m, int &nb_group_elements, int verbose_level)
void find_extensions_subspace_action(poset_classification *gen, groups::schreier &O, actions::action *A_factor_space, induced_actions::action_on_factor_space *AF, int lvl, int f_implicit_fusion, int verbose_level)
void init_extension_node_prepare_H(poset_classification *gen, int prev, int prev_ex, int size, data_structures_groups::group_container &G, ring_theory::longinteger_object &go_G, data_structures_groups::group_container &H, ring_theory::longinteger_object &go_H, long int pt, int pt_orbit_len, int verbose_level)
void log_current_node_without_group(poset_classification *gen, int s, std::ostream &f, int verbose_level)
void get_candidates(poset_classification *gen, int lvl, long int *&candidates, int &nb_candidates, int verbose_level)
int get_node_in_level(poset_classification *gen)
int nb_extension_points()
void downstep_subspace_action_print_orbits(poset_classification *gen, groups::schreier &Schreier, int lvl, int f_print_orbits, int verbose_level)
int trace_next_point(poset_classification *gen, int lvl, int current_node, int size, long int *cur_set, long int *next_set, int *cur_transporter, int *next_transporter, int f_implicit_fusion, int &f_failure_to_find_point, int verbose_level)
void downstep_orbits_print(poset_classification *gen, groups::schreier *Schreier, actions::action *AR, int lvl, int f_print_orbits, int max_orbits, int max_points_per_orbit)
void delete_Schreier_vector()
void print_node(poset_classification *gen)
data_structures_groups::schreier_vector * get_Schreier_vector()
void poset_orbit_node_depth_breadth_perm_and_inverse(poset_classification *gen, int max_depth, int &idx, int hdl, int cur_depth, int *perm, int *perm_inv)
void get_strong_generators_handle(std::vector< int > &gen_hdl, int verbose_level)
int check_node_and_set_consistency(poset_classification *gen, int i, long int *set)
void compute_point_stabilizer_in_subspace_setting(poset_classification *gen, int prev, int prev_ex, int size, data_structures_groups::group_container &G, ring_theory::longinteger_object &go_G, data_structures_groups::group_container &H, ring_theory::longinteger_object &go_H, long int pt, int pt_orbit_len, int verbose_level)
void schreier_forest(poset_classification *gen, groups::schreier &Schreier, actions::action *&AR, int lvl, int f_use_invariant_subset_if_available, int &f_using_invariant_subset, int verbose_level)
void install_fusion_node(poset_classification *gen, int lvl, int current_node, int my_node, int my_extension, int my_coset, long int pt0, int current_extension, int f_debug, int f_implicit_fusion, int verbose_level)
int test_point_using_check_functions(poset_classification *gen, int lvl, int rep, int *the_set, int verbose_level)
void compute_schreier_vector(poset_classification *gen, int lvl, int verbose_level)
void downstep_implicit_fusion(poset_classification *gen, groups::schreier &Schreier, actions::action *AR, int f_using_invariant_subset, int lvl, int f_implicit_fusion, int good_orbits1, int nb_points1, int verbose_level)
void check_orbits_wrapper(poset_classification *gen, groups::schreier *Schreier, actions::action *AR, int lvl, int &nb_good_orbits1, int &nb_points1, int verbose_level)
void write_file(actions::action *A, std::ofstream &fp, int &nb_group_elements, int verbose_level)
int get_nb_strong_generators()
void store_strong_generators(poset_classification *gen, groups::strong_generators *Strong_gens)
void print_extensions(std::ostream &ost)
void get_stabilizer_generators(poset_classification *PC, groups::strong_generators *&Strong_gens, int verbose_level)
void check_orbits(poset_classification *gen, groups::schreier *Schreier, actions::action *AR, int lvl, int verbose_level)
void reconstruct_extensions_from_sv(poset_classification *gen, int verbose_level)
void setup_factor_space_action_with_early_test(poset_classification *gen, induced_actions::action_on_factor_space &AF, actions::action &A_factor_space, int lvl, int verbose_level)
int get_nb_of_live_points()
long int get_stabilizer_order_lint(poset_classification *PC)
void compute_point_stabilizer_in_standard_setting(poset_classification *gen, int prev, int prev_ex, int size, data_structures_groups::group_container &G, ring_theory::longinteger_object &go_G, data_structures_groups::group_container &H, int pt, int pt_orbit_len, int verbose_level)
void compute_flag_orbits(poset_classification *gen, int lvl, int f_create_schreier_vector, int f_use_invariant_subset_if_available, int f_implicit_fusion, int verbose_level)
int apply_isomorphism(poset_classification *gen, int lvl, int current_node, int current_extension, int len, int f_tolerant, int verbose_level)
void save_schreier_forest(poset_classification *PC, groups::schreier *Schreier, int verbose_level)
int depth_of_node(poset_classification *gen)
void downstep_orbits_subspace_action(poset_classification *gen, groups::schreier &Schreier, int lvl, int f_use_invariant_subset_if_available, int &f_using_invariant_subset, int verbose_level)
void create_schreier_vector_wrapper(poset_classification *gen, int f_create_schreier_vector, groups::schreier *Schreier, int verbose_level)
int trace_next_point_in_place(poset_classification *gen, int lvl, int current_node, int size, long int *cur_set, long int *tmp_set, int *cur_transporter, int *tmp_transporter, int f_implicit_fusion, int &f_failure_to_find_point, int verbose_level)
void log_current_node_after_applying_group_element(poset_classification *gen, int s, std::ostream &f, int hdl, int verbose_level)
void get_stabilizer_order(poset_classification *gen, ring_theory::longinteger_object &go)
void init_extension_node_prepare_G(poset_classification *gen, int prev, int prev_ex, int size, data_structures_groups::group_container &G, ring_theory::longinteger_object &go_G, int verbose_level)
void sv_write_file(poset_classification *PC, std::ofstream &fp, int verbose_level)
void find_extensions(poset_classification *gen, groups::schreier &O, actions::action *AR, int f_using_invariant_subset, int lvl, int verbose_level)
void save_shallow_schreier_forest(poset_classification *PC, int verbose_level)
int get_level(poset_classification *gen)
void trace_starter(poset_classification *gen, int size, long int *cur_set, long int *next_set, int *cur_transporter, int *next_transporter, int verbose_level)
void get_stabilizer(poset_classification *PC, data_structures_groups::group_container &G, ring_theory::longinteger_object &go_G, int verbose_level)
void print_set(poset_classification *gen)
void test_orbits_for_implicit_fusion(poset_classification *gen, groups::schreier &Schreier, actions::action *AR, int f_using_invariant_subset, int lvl, int verbose_level)
void setup_factor_space_action_light(poset_classification *gen, induced_actions::action_on_factor_space &AF, int lvl, int verbose_level)
void log_current_node_with_candidates(poset_classification *gen, int lvl, std::ostream &f, int verbose_level)
void store_set(poset_classification *gen, int i)
void read_file(actions::action *A, std::ifstream &fp, int &nb_group_elements, int verbose_level)
int find_extension_from_point(poset_classification *gen, long int pt, int verbose_level)
void store_set_to(poset_classification *gen, int i, long int *to)
int get_nb_of_extensions()
void relabel_schreier_vector(actions::action *AR, int verbose_level)
void setup_factor_space_action(poset_classification *gen, induced_actions::action_on_factor_space &AF, actions::action &A_factor_space, int lvl, int f_compute_tables, int verbose_level)
int get_nb_of_orbits_under_stabilizer()
void allocate_E(int nb_extensions, int verbose_level)
void init_root_node(poset_classification *gen, int verbose_level)
a poset with a group action on it
void * print_function_data
algebra::vector_space * VS
poset_with_group_action()
void init(poset_description *description, actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, int verbose_level)
void init_subset_lattice(actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, int verbose_level)
void early_test_func(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
void unrank_point(int *v, long int rk)
orbit_based_testing * Orbit_based_testing
ring_theory::longinteger_object go
void init_subspace_lattice(actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, algebra::vector_space *VS, int verbose_level)
int f_has_orbit_based_testing
long int rank_point(int *v)
void add_testing(int(*func)(orbit_based_testing *Obt, long int *S, int len, void *data, int verbose_level), void *data, int verbose_level)
void add_independence_condition(int independence_value, int verbose_level)
void add_testing_without_group(void(*func)(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 *data, int verbose_level)
poset_classification * orbits_on_k_sets_compute(poset_classification_control *Control, int k, int verbose_level)
groups::strong_generators * Strong_gens
void orbits_on_k_sets(poset_classification_control *Control, int k, long int *&orbit_reps, int &nb_orbits, int verbose_level)
void(* print_function)(std::ostream &ost, int len, long int *S, void *data)
~poset_with_group_action()
void invoke_print_function(std::ostream &ost, int sz, long int *set)
poset_description * description
auxiliary class for the poset classification algorithm to deal with flag orbits
void print_level_extension_info()
int f_indicate_not_canonicals
int init_extension_node(int verbose_level)
data_structures_groups::group_container * G
ring_theory::longinteger_object go_G
data_structures_groups::group_container * H
void init(poset_classification *gen, int size, int prev, int prev_ex, int cur, int f_debug, int f_implicit_fusion, int f_indicate_not_canonicals, int verbose_level)
void print_level_extension_coset_info()
int upstep_for_sets(int verbose_level)
coset_table_entry * coset_table
trace_result recognize_recursion(int lvl, int current_node, int &final_node, int &final_ex, int f_tolerant, int verbose_level)
void handle_extension_fusion_type(int verbose_level)
trace_result start_over(int lvl, int current_node, int &final_node, int &final_ex, int f_tolerant, int verbose_level)
int upstep_subspace_action(int verbose_level)
ring_theory::longinteger_object go_H
poset_orbit_node * O_prev
trace_result handle_last_level(int lvl, int current_node, int current_extension, int pt0, int &final_node, int &final_ex, int verbose_level)
poset_classification * gen
void handle_extension(int &nb_fuse_cur, int &nb_ext_cur, int verbose_level)
void handle_extension_unprocessed_type(int verbose_level)
trace_result recognize(int &final_node, int &final_ex, int f_tolerant, int verbose_level)
void poset_classification_control_preferred_choice_function(int pt, int &pt_pref, groups::schreier *Sch, void *data, int data2, int verbose_level)
const char * trace_result_as_text(trace_result r)
void print_extension_type(ostream &ost, int t)
int trace_result_is_no_result(trace_result r)
the orbiter library for the classification of combinatorial objects
a helper class for the poset classification algorithm to build up a coset transversal for the automor...
int nb_times_invert_called
int nb_times_retrieve_called
int nb_times_image_of_called