13namespace layer5_applications {
14namespace apps_geometry {
53 if (f_is_in_input_set) {
91 cout <<
"choose_points_or_lines::free_representative freeing representative" << endl;
103 cout <<
"choose_points_or_lines::free_representative freeing stab" << endl;
112void poset::add_testing_without_group(
113 void (*func)(
int *S,
int len,
114 int *candidates,
int nb_candidates,
115 int *good_candidates,
int &nb_good_candidates,
116 void *data,
int verbose_level),
124 int nb_points_or_lines,
125 int (*check_function)(
int len,
long int *S,
void *data,
int verbose_level),
129 int f_v = (verbose_level >= 1);
132 cout <<
"choose_points_or_lines::init " <<
label << endl;
156 int f_v = (verbose_level >= 1);
163 cout <<
"choose_points_or_lines::compute_orbits_from_sims " <<
label << endl;
174 int f_v = (verbose_level >= 1);
175 int f_vv = (verbose_level >= 2);
178 cout <<
"choose_points_or_lines::compute_orbits " <<
label << endl;
196 cout <<
"choose_points_or_lines::compute_orbits "
197 <<
label <<
" calling gen->init" << endl;
210 cout <<
"choose_points_or_lines::compute_orbits "
211 <<
label <<
" calling gen->init_check_func" << endl;
217 gen->print_function = print_set;
218 gen->print_function_data =
this;
222 int f_use_invariant_subset_if_available =
TRUE;
227 cout <<
"choose_points_or_lines::compute_orbits "
228 <<
label <<
" calling generator_main" << endl;
232 f_use_invariant_subset_if_available,
239 cout <<
"choose_points_or_lines::compute_orbits "
240 <<
label <<
" done with generator_main" << endl;
245 cout <<
"choose_points_or_lines::compute_orbits "
249 cout <<
"-sets of lines" << endl;
252 cout <<
"-sets of points" << endl;
258 int &f_hit_favorite,
int verbose_level)
260 int f_v = (verbose_level >= 1);
261 int f_vv = (verbose_level >= 2);
262 int f_vvv = (verbose_level >= 3);
266 long int *the_favorite_representative;
270 f_hit_favorite =
FALSE;
272 cout <<
"choose_points_or_lines::choose_orbit " <<
label
273 <<
" orbit_no " << orbit_no <<
" / " <<
nb_orbits << endl;
293 cout <<
"##############################################################################" << endl;
294 cout <<
"choose_points_or_lines::choose_orbit " <<
label
295 <<
" choosing orbit " << orbit_no <<
" / " <<
nb_orbits << endl;
298 cout <<
"choose_points_or_lines::choose_orbit " <<
label <<
" the ";
305 cout <<
" representing orbit " << orbit_no <<
" / "
316 the_favorite_representative, verbose_level - 3);
317 if (f_hit_favorite) {
321 cout <<
"choose_points_or_lines::choose_orbit "
322 <<
label <<
" isomorphism test only" << endl;
323 cout <<
"element mapping the favorite set to "
324 "the canonical set:" << endl;
340 cout <<
"choose_points_or_lines::choose_orbit " <<
label
341 <<
" / " <<
nb_orbits <<
" after changing, the "
342 "representative set for orbit " << orbit_no <<
" are ";
354 G->
init(
A, verbose_level - 2);
356 O->hdl_strong_generators, O->tl,
FALSE);
362 cout <<
"stabilizer of the chosen set has order " << go << endl;
374 cout <<
"computing NewStab (because we changed)" << endl;
377 NewStab->
init(
A, verbose_level - 2);
385 cout <<
"The conjugated stabilizer has order " << go1 << endl;
398 cout <<
"choose_points_or_lines::choose_orbit " <<
label
399 <<
" orbit_no " << orbit_no <<
" / " <<
nb_orbits
400 <<
" done, chosen the set ";
408 int_vec_print(cout, stab_tl,
A->
base_len);
413 cout <<
"choose_points_or_lines::choose_orbit " <<
label
415 <<
" strong generators" << endl;
419 cout << i <<
" : " << endl;
425 cout <<
"in action on points:" << endl;
429 cout <<
"in action on lines:" << endl;
445 int *transporter,
int *transporter_inv,
446 long int *the_favorite_representative,
449 int f_v = (verbose_level >= 1);
451 long int *canonical_set1;
452 long int *canonical_set2;
460 cout <<
"choose_points_or_lines::favorite_orbit_representative "
464 cout <<
"choose_points_or_lines::favorite_orbit_representative "
465 <<
label <<
" not the right size" << endl;
494 cout <<
"arc::favorite_zero_lines: transporter "
495 "to favorite set:" << endl;
500 the_favorite_representative[i] =
favorite[i];
529 cout <<
"generators:" << endl;
534 cout <<
"as permutation of points:" << endl;
537 cout <<
"as permutation of lines:" << endl;
void set_print(long int *v, int len)
data_structures::lint_vec * Lint_vec
a class to represent arbitrary precision integers
a permutation group in a fixed action.
void print_for_make_element(std::ostream &ost, void *elt)
void element_print_quick(void *elt, std::ostream &ost)
void element_print(void *elt, std::ostream &ost)
void print_quick(std::ostream &ost, void *elt)
void element_invert(void *a, void *av, int verbose_level)
void element_print_as_permutation(void *elt, std::ostream &ost)
a container data structure for groups
void group_order(ring_theory::longinteger_object &go)
void schreier_sims(int verbose_level)
void init(actions::action *A, int verbose_level)
void init_strong_generators_by_hdl(int nb_gen, int *gen_hdl, int *tl, int verbose_level)
a permutation group represented via a stabilizer chain
void conjugate(actions::action *A, sims *old_G, int *Elt, int f_overshooting_OK, int verbose_level)
void init(actions::action *A, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void init_trivial_group(int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
void init_from_sims(groups::sims *S, int verbose_level)
data_structures_groups::vector_ge * gens
to control the behavior of the poset classification algorithm
the poset classification algorithm
void initialize_and_allocate_root_node(poset_classification_control *PC_control, poset_with_group_action *Poset, int depth, int verbose_level)
int trace_set(long int *set, int size, int level, long int *canonical_set, int *Elt_transporter, int verbose_level)
int main(int t0, int schreier_depth, int f_use_invariant_subset_if_available, int f_debug, int verbose_level)
int first_node_at_level(int i)
int nb_orbits_at_level(int level)
poset_orbit_node * get_node(int node_idx)
to represent one poset orbit; related to the class poset_classification
void get_stabilizer(poset_classification *PC, data_structures_groups::group_container &G, ring_theory::longinteger_object &go_G, int verbose_level)
void store_set_to(poset_classification *gen, int i, long int *to)
a poset with a group action on it
void init_subset_lattice(actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, int verbose_level)
void choose_orbit(int orbit_no, int &f_hit_favorite, int verbose_level)
poset_classification::poset_classification * gen
actions::action * A_lines
int print_generators_verbose_level
~choose_points_or_lines()
void null_representative()
ring_theory::longinteger_object * stab_order
poset_classification::poset_with_group_action * Poset
long int * representative
void compute_orbits_from_sims(groups::sims *G, int verbose_level)
poset_classification::poset_classification_control * Control
void compute_orbits(groups::strong_generators *Strong_gens, int verbose_level)
void init(const char *label, void *data, actions::action *A, actions::action *A_lines, int f_choose_lines, int nb_points_or_lines, int(*check_function)(int len, long int *S, void *data, int verbose_level), int t0, int verbose_level)
void free_representative()
int(* check_function)(int len, long int *S, void *data, int verbose_level)
int favorite_orbit_representative(int *transporter, int *transporter_inv, long int *the_favorite_representative, int verbose_level)
groups::strong_generators * Stab_Strong_gens
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects