15namespace layer5_applications {
16namespace apps_geometry {
18static void HS_early_test_func_callback(
long int *S,
int len,
19 long int *candidates,
int nb_candidates,
20 long int *good_candidates,
int &nb_good_candidates,
21 void *data,
int verbose_level);
22static void projective_space_init_line_action(
91 cout <<
"hermitian_spreads_classify::freeself deleting secants" << endl;
97 cout <<
"hermitian_spreads_classify::freeself deleting Adj" << endl;
103 cout <<
"hermitian_spreads_classify::freeself deleting GU" << endl;
111 cout <<
"hermitian_spreads_classify::freeself deleting sg" << endl;
117 cout <<
"hermitian_spreads_classify::freeself deleting A2r" << endl;
123 cout <<
"hermitian_spreads_classify::freeself deleting gen" << endl;
136 int f_v = (verbose_level >= 1);
141 cout <<
"hermitian_spreads_classify::init" << endl;
142 cout <<
"n=" <<
n << endl;
143 cout <<
"Q=" <<
Q << endl;
165 cout <<
"We found " <<
nb_pts <<
" points, they are:" << endl;
166 for (i = 0; i <
nb_pts; i++) {
167 cout << i <<
" : " <<
Pts[i] <<
" : ";
176 cout <<
"Creating projective_space" << endl;
180 cout <<
"Creating projective_space done" << endl;
184 cout <<
"Creating linear group" << endl;
192 cout <<
"Creating action on lines" << endl;
193 projective_space_init_line_action(
P,
A,
A2, verbose_level);
204 cout <<
"The line type is:" << endl;
207 cout <<
"The secants are:" << endl;
221 int intersection_set_size;
225 cout << j <<
" : " << a <<
" : ";
231 if (intersection_set_size !=
sz) {
232 cout <<
"intersection_set_size != sz" << endl;
235 for (i = 0; i <
sz; i++) {
238 cout <<
"cannot find the point" << endl;
249 cout <<
"Computing Adjacency matrix:" << endl;
263 cout <<
"Adj" << endl;
267 cout <<
"Computing the unitary group:" << endl;
277 cout <<
"Group has been computed, group order = " << go << endl;
281 cout <<
"strong generators are:" << endl;
288 cout <<
"Creating restricted action on secants:" << endl;
294 cout <<
"Creating restricted action on secants done." << endl;
298 cout <<
"hermitian_spread_classify::init done" << endl;
312 for (i = 1; i < argc; i++) {
313 cout << argv[i] << endl;
319 for (i = 0; i < argc; i++) {
320 if (ST.
stringcmp(argv[i],
"-poset_classification_control") == 0) {
325 cout <<
"done with -poset_classification_control" << endl;
326 cout <<
"i = " << i << endl;
327 cout <<
"argc = " << argc << endl;
329 cout <<
"next argument is " << argv[i] << endl;
337 int f_v = (verbose_level >= 1);
343 cout <<
"hermitian_spreads_classify::init2" << endl;
347 sprintf(prefix,
"HS_%d_%d",
n,
Q);
354 cout <<
"hermitian_spreads_classify::init2 before "
355 "Poset->add_testing_without_group" << endl;
358 HS_early_test_func_callback,
369 gen->print_function = print_set;
370 gen->print_function_data =
this;
375 cout <<
"hermitian_spreads_classify::init2 done" << endl;
381 int f_v = (verbose_level >= 1);
382 int schreier_depth = depth;
383 int f_use_invariant_subset_if_available =
TRUE;
402 if (f_override_schreier_depth) {
403 schreier_depth = override_schreier_depth;
407 cout <<
"hermitian_spreads_classify::compute calling generator_main" << endl;
413 f_use_invariant_subset_if_available,
420 cout <<
"hermitian_spreads_classify::compute done with generator_main" << endl;
425 int f_sideways =
FALSE;
428 f_embedded, f_sideways, 100, verbose_level);
433 cout <<
"hermitian_spreads_classify::compute "
434 "We found " << length <<
" orbits" << endl;
440 long int *candidates,
int nb_candidates,
441 long int *good_candidates,
int &nb_good_candidates,
444 int f_v = (verbose_level >= 1);
448 cout <<
"hermitian_spreads_classify::early_test_func checking set ";
451 cout <<
"candidate set of size " << nb_candidates <<
":" << endl;
456 nb_good_candidates = 0;
457 for (j = 0; j < nb_candidates; j++) {
467 for (i = i0; i <
len; i++) {
479 good_candidates[nb_good_candidates++] = candidates[j];
486static void HS_early_test_func_callback(
long int *S,
int len,
487 long int *candidates,
int nb_candidates,
488 long int *good_candidates,
int &nb_good_candidates,
489 void *data,
int verbose_level)
492 int f_v = (verbose_level >= 1);
495 cout <<
"HS_early_test_func for set ";
500 candidates, nb_candidates,
501 good_candidates, nb_good_candidates,
504 cout <<
"HS_early_test_func done" << endl;
509static void projective_space_init_line_action(
513 int f_v = (verbose_level >= 1);
517 cout <<
"projective_space_init_line_action" << endl;
527 cout <<
"projective_space_init_line_action "
528 "action on grassmannian established" << endl;
532 cout <<
"projective_space_init_line_action "
533 "initializing A_on_lines" << endl;
535 int f_induce_action =
TRUE;
547 cout <<
"projective_space_init_line_action "
548 "group order " << go1 << endl;
552 cout <<
"projective_space_init_line_action "
553 "initializing action on grassmannian" << endl;
556 f_induce_action, &S, verbose_level);
558 cout <<
"projective_space_init_line_action "
559 "initializing A_on_lines done" << endl;
564 cout <<
"projective_space_init_line_action "
565 "computing strong generators" << endl;
568 cout <<
"projective_space_init_line_action "
569 "induced action does not have strong generators" << endl;
572 cout <<
"projective_space_init_line_action done" << endl;
a collection of functions related to sorted vectors
int lint_vec_search_linear(long int *v, int len, long int a, int &idx)
int test_if_sets_are_disjoint_not_assuming_sorted(long int *v, long int *w, int len)
a statistical analysis of data consisting of single integers
void init(int *data, int data_length, int f_second, int verbose_level)
void print(int f_backwards)
void PG_element_unrank_modified(int *v, int stride, int len, int a)
void finite_field_init(int q, int f_without_tables, int verbose_level)
void init(field_theory::finite_field *F, int nb_vars, int verbose_level)
void list_of_points_embedded_in_PG(long int *&Pts, int &nb_pts, int verbose_level)
projective space PG(n,q) of dimension n over Fq
void intersection_of_subspace_with_point_set(grassmann *G, int rk, long int *set, int set_size, long int *&intersection_set, int &intersection_set_size, int verbose_level)
void line_intersection_type(long int *set, int set_size, int *type, int verbose_level)
void projective_space_init(int n, field_theory::finite_field *F, int f_init_incidence_structure, int verbose_level)
interface to system functions
a class to represent arbitrary precision integers
a permutation group in a fixed action.
int *& get_transversal_length()
void init_general_linear_group(int n, field_theory::finite_field *F, int f_semilinear, int f_basis, int f_init_sims, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
groups::strong_generators * set_stabilizer_in_projective_space(geometry::projective_space *P, long int *set, int set_size, int *canonical_set_or_NULL, int verbose_level)
groups::strong_generators * Strong_gens
int f_has_strong_generators
action * induced_action_on_grassmannian(int k, int verbose_level)
action * create_induced_action_by_restriction(groups::sims *S, int size, long int *set, int f_induce, int verbose_level)
to hold a vector of group elements
a permutation group represented via a stabilizer chain
void init(actions::action *A, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void compute_base_orbits_known_length(int *tl, int verbose_level)
void init_generators(data_structures_groups::vector_ge &generators, int verbose_level)
void print_generators(std::ostream &ost)
data_structures_groups::vector_ge * gens
void group_order(ring_theory::longinteger_object &go)
induced action on the grassmannian (subspaces of a fixed dimension of a vectors space)
void init(actions::action &A, geometry::grassmann *G, int verbose_level)
to control the behavior of the poset classification algorithm
int read_arguments(int argc, std::string *argv, int verbose_level)
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 main(int t0, int schreier_depth, int f_use_invariant_subset_if_available, int f_debug, int verbose_level)
int nb_orbits_at_level(int level)
std::string & get_problem_label_with_path()
void print_data_structure_tex(int depth, 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)
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 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)
classification of Hermitian spreads
poset_classification::poset_classification_control * Control
groups::strong_generators * sg
void read_arguments(int argc, std::string *argv)
void init(int n, int Q, int verbose_level)
hermitian_spreads_classify()
~hermitian_spreads_classify()
field_theory::finite_field * F
poset_classification::poset_classification * gen
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)
geometry::projective_space * P
long int ** Intersection_sets
poset_classification::poset_with_group_action * Poset
void compute(int depth, int verbose_level)
void init2(int verbose_level)
#define Lint_vec_print(A, B, C)
#define Int_matrix_print(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects