14namespace layer5_applications {
15namespace apps_geometry {
17static void early_test_func_for_arc_callback(
long int *S,
int len,
18 long int *candidates,
int nb_candidates,
19 long int *good_candidates,
int &nb_good_candidates,
20 void *data,
int verbose_level);
65 cout <<
"simeon::init" << endl;
94 cout <<
"created a group of order " <<
go << endl;
100 S->element_unrank_int(i,
Elt, 0 );
101 cout <<
"element " << i <<
" / " <<
go <<
":" << endl;
106 for (i = 0; i <
A->
degree; i++) {
108 cout <<
"point " << i <<
" / " <<
A->
degree <<
" is ";
113 cout <<
"generating set: " << endl;
118 cout <<
"We have " <<
Sch->
nb_orbits <<
" orbits on points" << endl;
142 "Poset->add_testing_without_group" << endl;
145 early_test_func_for_arc_callback,
164 cout <<
"simeon::init done" << endl;
170 long int *candidates,
int nb_candidates,
171 long int *good_candidates,
int &nb_good_candidates,
180 cout <<
"arc_lifting_simeon::early_test_func checking set ";
183 cout <<
"candidate set of size "
184 << nb_candidates <<
":" << endl;
191 type_collected =
NEW_int(len + 2);
195 nb_good_candidates = nb_candidates;
198 nb_good_candidates = 0;
201 cout <<
"arc_lifting_simeon::early_test_func "
202 "before testing" << endl;
204 for (j = 0; j < nb_candidates; j++) {
208 cout <<
"arc_lifting_simeon::early_test_func "
209 "testing " << j <<
" / "
210 << nb_candidates << endl;
217 S[len] = candidates[j];
225 for (i =
d + 1; i <= len + 1; i++) {
226 if (type_collected[i]) {
233 good_candidates[nb_good_candidates++] =
245 long int *original_arc;
249 long int *external_lines;
250 int nb_external_lines;
252 int nb_bisecants, nb_c2points, bi, bj, a, idx, u, pt;
256 original_arc = SaS->
data;
257 original_arc_sz = SaS->
sz;
260 nb_c2points = nb_bisecants * nb_bisecants;
263 nb_external_lines = 0;
265 original_arc_sz, type, 0 );
269 external_lines[nb_external_lines++] = i;
272 cout <<
"We found " << nb_external_lines
273 <<
" external lines, they are: ";
277 cout <<
"compute bisecants and c2 points:" << endl;
280 bisecants =
NEW_int(nb_bisecants);
283 for (i = 0; i < original_arc_sz; i++) {
284 pi = original_arc[i];
285 for (j = i + 1; j < original_arc_sz; j++) {
286 pj = original_arc[j];
290 if (h != nb_bisecants) {
291 cout <<
"h != nb_bisecants" << endl;
294 cout <<
"We found " << nb_bisecants <<
" bisecants : ";
298 c2_points =
NEW_int(nb_c2points);
301 for (i = 0; i < nb_bisecants; i++) {
303 for (j = 0; j < nb_bisecants; j++) {
312 original_arc_sz, a, idx)) {
316 for (u = h; u > idx; u--) {
317 c2_points[u] = c2_points[u - 1];
326 cout <<
"We found " << h <<
" c2-points: ";
330 cout <<
"filtering the external lines:" << endl;
331 int nb_filtered_lines;
332 long int *filtered_lines;
335 nb_filtered_lines = 0;
336 filtered_lines =
NEW_lint(nb_external_lines);
337 for (i = 0; i < nb_external_lines; i++) {
338 a = external_lines[i];
340 for (j = 0; j <
q + 1; j++) {
347 filtered_lines[nb_filtered_lines++] = a;
350 cout <<
"We found " << nb_filtered_lines <<
" lines of the "
351 << nb_external_lines <<
" external lines which intersect "
352 "the set of c2 points in at least 2 points" << endl;
360 int target_depth = 6;
386 int *covering_number;
391 cout <<
"We found " << nb_orbits <<
" orbits of subsets "
392 "of filtered external lines of size " <<
k << endl;
399 "arc_lifting_simeon_q%d_n%d_d%d_k%d_solutions.txt",
409 for (i = 0; i < nb_orbits; i++) {
416 if ((i % 10000) == 0) {
417 cout <<
"testing orbit " << i << endl;
420 for (j = 0; j < h; j++) {
421 for (u = 0; u < target_depth; u++) {
423 a = filtered_lines[a];
425 covering_number[j]++;
430 for (j = 0; j < h; j++) {
431 if (covering_number[j]) {
436 cout <<
"solution" << endl;
437 cout <<
"orbit " << i <<
" / " << nb_orbits <<
" : ";
440 cout <<
"covering_number: ";
449 sz = nb_external_lines;
454 for (u = 0; u < target_depth; u++) {
456 a = filtered_lines[a];
458 cout <<
"the element a=" << a <<
" cannot be "
459 "found in the set of external lines" << endl;
462 for (t = idx + 1; t < sz; t++) {
470 for (t = 0; t < sz; t++) {
490 cout <<
"number of solutions = " << nb_sol << endl;
491 cout <<
"written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
504static void early_test_func_for_arc_callback(
long int *S,
int len,
505 long int *candidates,
int nb_candidates,
506 long int *good_candidates,
int &nb_good_candidates,
507 void *data,
int verbose_level)
511 int f_v = (verbose_level >= 1);
514 cout <<
"early_test_func_for_arc_callback for set ";
519 candidates, nb_candidates,
520 good_candidates, nb_good_candidates,
523 cout <<
"early_test_func_for_arc_callback done" << endl;
a collection of combinatorial functions
long int int_n_choose_k(int n, int k)
a collection of functions related to sorted vectors
int int_vec_search(int *v, int len, int a, int &idx)
int lint_vec_search_linear(long int *v, int len, long int a, int &idx)
int lint_vec_search(long int *v, int len, long int a, int &idx, int verbose_level)
void lint_vec_heapsort(long int *v, int len)
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)
projective space PG(n,q) of dimension n over Fq
projective_space_implementation * Implementation
int is_incident(int pt, int line)
void init_incidence_structure(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)
int intersection_of_two_lines(long int l1, long int l2)
void line_intersection_type_collected(long int *set, int set_size, int *type_collected, int verbose_level)
long int line_through_two_points(long int p1, long int p2)
a collection of functions related to file io
long int file_size(std::string &fname)
a permutation group in a fixed action.
action * restricted_action(long int *points, int nb_points, int verbose_level)
void element_print_quick(void *elt, std::ostream &ost)
groups::strong_generators * Strong_gens
action * induced_action_on_grassmannian(int k, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void init_linear_group(field_theory::finite_field *F, int m, int f_projective, int f_general, int f_affine, int f_semilinear, int f_special, data_structures_groups::vector_ge *&nice_gens, int verbose_level)
a set and its known set stabilizer
groups::strong_generators * Strong_gens
void print_set_tex(std::ostream &ost)
to hold a vector of group elements
void print_and_list_orbits(std::ostream &ost)
void print_generators(std::ostream &ost)
schreier * orbits_on_points_schreier(actions::action *A_given, int verbose_level)
to control the behavior of the poset classification algorithm
the poset classification algorithm
data_structures_groups::set_and_stabilizer * get_set_and_stabilizer(int level, int orbit_at_level, int verbose_level)
void print_orbit_numbers(int depth)
int nb_orbits_at_level(int level)
void compute_orbits_on_subsets(int target_depth, poset_classification_control *PC_control, poset_with_group_action *Poset, 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)
arc lifting according to Simeon Ball and Ray Hill
ring_theory::longinteger_object go
poset_classification::poset_with_group_action * Poset
void do_covering_problem(data_structures_groups::set_and_stabilizer *SaS)
poset_classification::poset_classification * Gen
void init(int q, int d, int n, int k, int verbose_level)
geometry::projective_space * P
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)
field_theory::finite_field * F
#define Lint_vec_copy(A, B, C)
#define Int_vec_zero(A, B)
#define Lint_vec_print(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects