15namespace layer5_applications {
16namespace apps_geometry {
32 int intermediate_subset_size,
33 std::string &fname_mask,
int nb, std::string &column_label,
34 std::string &fname_out,
37 int f_v = (verbose_level >= 1);
41 cout <<
"top_level_geometry_global::set_stabilizer_projective_space" << endl;
50 intermediate_subset_size,
51 fname_mask, nb, column_label,
58 cout <<
"top_level_geometry_global::set_stabilizer_projective_space done" << endl;
69 int f_v = (verbose_level >= 1);
72 cout <<
"projective_space_with_action::report_decomposition_by_group" << endl;
82 ost <<
"The group generated by the element" << endl;
84 A->element_print_latex(Elt, ost);
86 ost <<
"has the following orbits:\\\\" << endl;
88 ost <<
"Orbits on points:\\\\" << endl;
113 ost <<
"Considering the group generated by" << endl;
117 ost <<
"The group is transitive on points and on lines.\\\\" << endl;
118 std::vector<int> Orb1;
119 std::vector<int> Orb2;
127 fname.assign(fname_base);
128 fname.append(
"_incma_transitive.csv");
140 ost <<
"Orbits on points:\\\\" << endl;
143 ost <<
"Orbits on lines:\\\\" << endl;
146 ost <<
"Fixed points:\\\\" << endl;
149 ost <<
"Fixed lines:\\\\" << endl;
159 ost <<
"Fixed planes:\\\\" << endl;
175 cout <<
"projective_space_with_action::report_decomposition_by_group before AG.compute_decomposition_based_on_orbit_length" << endl;
181 cout <<
"projective_space_with_action::report_decomposition_by_group after AG.compute_decomposition_based_on_orbit_length" << endl;
193 cout <<
"process_single_case before refine_column_partition_safe" << endl;
197 cout <<
"process_single_case after refine_column_partition_safe" << endl;
200 cout <<
"process_single_case before refine_row_partition_safe" << endl;
204 cout <<
"process_single_case after refine_row_partition_safe" << endl;
212 int f_labeled =
TRUE;
219 int f_print_subscripts =
FALSE;
220 ost <<
"Decomposition based on orbit lengths:\\\\" << endl;
221 ost <<
"Row scheme:\\\\" << endl;
224 f_print_subscripts, *Stack);
225 ost <<
"Column scheme:\\\\" << endl;
228 f_print_subscripts, *Stack);
247 cout <<
"projective_space_with_action::report_decomposition_by_group before AG.compute_decomposition_based_on_orbits" << endl;
253 cout <<
"projective_space_with_action::report_decomposition_by_group after AG.compute_decomposition_based_on_orbits" << endl;
257 int f_print_subscripts =
FALSE;
258 ost <<
"Decomposition based on orbits:\\\\" << endl;
259 ost <<
"Row scheme:\\\\" << endl;
262 f_print_subscripts, *Stack);
263 ost <<
"Column scheme:\\\\" << endl;
266 f_print_subscripts, *Stack);
281 cout <<
"projective_space_with_action::report_decomposition_by_group done" << endl;
288 int *Elt, std::ostream &ost, std::string &fname_base,
291 int f_v = (verbose_level >= 1);
294 cout <<
"top_level_geometry_global::report_decomposition_by_single_automorphism" << endl;
299 cout <<
"top_level_geometry_global::report_decomposition_by_single_automorphism P->n != 3" << endl;
309 full_group_order.
create(order, __FILE__, __LINE__);
317 ost <<
"The group generated by the element" << endl;
319 A->element_print_latex(Elt, ost);
321 ost <<
"has the following orbits:\\\\" << endl;
323 ost <<
"Orbits on points:\\\\" << endl;
350 cout <<
"top_level_geometry_global::report_decomposition_by_single_automorphism "
351 "before incidence_and_stack_for_type_ij" << endl;
359 cout <<
"top_level_geometry_global::report_decomposition_by_single_automorphism "
360 "after incidence_and_stack_for_type_ij" << endl;
364 cout <<
"top_level_geometry_global::report_decomposition_by_single_automorphism "
365 "before S1.allocate" << endl;
371 cout <<
"top_level_geometry_global::report_decomposition_by_single_automorphism "
372 "before Sch1->get_orbit_partition" << endl;
376 cout <<
"top_level_geometry_global::report_decomposition_by_single_automorphism "
377 "before Sch2->get_orbit_partition" << endl;
381 cout <<
"top_level_geometry_global::report_decomposition_by_single_automorphism "
382 "after Sch2->get_orbit_partition" << endl;
386 for (i = 1; i < S1.
ht; i++) {
388 cout <<
"top_level_geometry_global::report_decomposition_by_single_automorphism "
389 "before Stack->split_cell (S1) i=" << i << endl;
397 for (i = 1; i < S2.
ht; i++) {
400 for (j = 0; j < sz; j++) {
404 cout <<
"top_level_geometry_global::report_decomposition_by_single_automorphism "
405 "before Stack->split_cell (S2) i=" << i << endl;
412 ost <<
"Considering the cyclic group generated by" << endl;
418 ost <<
"The group is transitive on points and on lines.\\\\" << endl;
419 std::vector<int> Orb1;
420 std::vector<int> Orb2;
428 fname.assign(fname_base);
429 fname.append(
"_incma_cyclic.csv");
438 for (p = 2; p < Orb1.size(); p++) {
440 if ((Orb1.size() % p) == 0) {
442 cout <<
"considering subgroup of index " << p << endl;
445 std::vector<int> Orb1_subgroup;
446 std::vector<int> Orb2_subgroup;
451 for (i = 0; i < Orb1.size(); i++) {
455 for (i = 0; i < Orb1.size(); i++) {
456 Orb1_subgroup.push_back(w[i]);
460 for (i = 0; i < Orb1.size(); i++) {
464 for (i = 0; i < Orb1.size(); i++) {
465 Orb2_subgroup.push_back(w[i]);
471 fname.assign(fname_base);
472 fname.append(
"_incma_subgroup");
475 sprintf(str,
"_index_%d.csv", p);
489 ost <<
"Orbits on points:\\\\" << endl;
492 ost <<
"Orbits on lines:\\\\" << endl;
495 ost <<
"Fixed points:\\\\" << endl;
498 ost <<
"Fixed lines:\\\\" << endl;
508 ost <<
"Fixed planes:\\\\" << endl;
515 int f_print_subscripts =
FALSE;
516 ost <<
"Row scheme:\\\\" << endl;
519 f_print_subscripts, *Stack);
520 ost <<
"Column scheme:\\\\" << endl;
523 f_print_subscripts, *Stack);
533 cout <<
"top_level_geometry_global::report_decomposition_by_single_automorphism done" << endl;
a collection of combinatorial functions
void int_vec_splice(int *v, int *w, int len, int p)
data structure for set partitions following Jeffrey Leon
void split_cell(int verbose_level)
void print_classes(std::ostream &ost)
void allocate(int n, int verbose_level)
interface for various incidence geometries
void get_and_print_row_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, int f_print_subscripts, data_structures::partitionstack &PStack)
int refine_row_partition_safe(data_structures::partitionstack &PStack, int verbose_level)
void get_and_print_decomposition_schemes(data_structures::partitionstack &PStack)
int refine_column_partition_safe(data_structures::partitionstack &PStack, int verbose_level)
void get_and_print_column_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, int f_print_subscripts, data_structures::partitionstack &PStack)
void print_partitioned(std::ostream &ost, data_structures::partitionstack &P, int f_labeled)
void make_incidence_matrix(int &m, int &n, int *&Inc, int verbose_level)
void incidence_and_stack_for_type_ij(int row_type, int col_type, incidence_structure *&Inc, data_structures::partitionstack *&Stack, int verbose_level)
a collection of functions related to file io
void int_matrix_write_csv(std::string &fname, int *M, int m, int n)
a class to represent arbitrary precision integers
void create(long int i, const char *file, int line)
global functions related to group actions
void compute_decomposition_based_on_orbits(geometry::projective_space *P, groups::schreier *Sch1, groups::schreier *Sch2, geometry::incidence_structure *&Inc, data_structures::partitionstack *&Stack, int verbose_level)
void compute_decomposition_based_on_orbit_length(geometry::projective_space *P, groups::schreier *Sch1, groups::schreier *Sch2, geometry::incidence_structure *&Inc, data_structures::partitionstack *&Stack, int verbose_level)
void element_print_latex(void *elt, std::ostream &ost)
groups::strong_generators * Strong_gens
void all_point_orbits_from_single_generator(groups::schreier &Schreier, int *Elt, int verbose_level)
void all_point_orbits_from_generators(groups::schreier &Schreier, groups::strong_generators *SG, int verbose_level)
int element_order(void *elt)
Schreier trees for orbits of groups on points.
void print_orbit_lengths_tex(std::ostream &ost)
void print_fixed_points_tex(std::ostream &ost)
void get_orbit_in_order(std::vector< int > &Orb, int orbit_idx, int verbose_level)
void get_orbit_partition(data_structures::partitionstack &S, int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
void print_generators_tex()
long int group_order_as_lint()
classification of substructures
void set_stabilizer_in_any_space(actions::action *A, actions::action *A2, groups::strong_generators *Strong_gens, int intermediate_subset_size, std::string &fname_mask, int nb, std::string &column_label, std::string &fname_out, int verbose_level)
~top_level_geometry_global()
top_level_geometry_global()
void set_stabilizer_projective_space(projective_geometry::projective_space_with_action *PA, int intermediate_subset_size, std::string &fname_mask, int nb, std::string &column_label, std::string &fname_out, int verbose_level)
void report_decomposition_by_single_automorphism(projective_geometry::projective_space_with_action *PA, int *Elt, std::ostream &ost, std::string &fname_base, int verbose_level)
void report_decomposition_by_group(projective_geometry::projective_space_with_action *PA, groups::strong_generators *SG, std::ostream &ost, std::string &fname_base, int verbose_level)
projective space PG(n,q) with automorphism group PGGL(n+1,q)
geometry::projective_space * P
int f_has_action_on_planes
actions::action * A_on_lines
actions::action * A_on_planes
#define Int_vec_copy(A, B, C)
the orbiter library for the classification of combinatorial objects