sims *strong_generators::create_sims(INT verbose_level) { INT f_v = (verbose_level >= 1); sims *S; if (f_v) { cout << "strong_generators::create_sims" << endl; } if (gens == NULL) { cout << "strong_generators::create_sims gens == NULL" << endl; exit(1); } S = create_sims_from_generators_with_target_group_order_factorized(A, gens, tl, A->base_len, 0 /* verbose_level */); if (f_v) { cout << "strong_generators::create_sims done" << endl; } return S; }
sims *strong_generators::create_sims_in_different_action(action *A_given, INT verbose_level) { INT f_v = (verbose_level >= 1); sims *S; if (f_v) { cout << "strong_generators::create_sims_in_different_action" << endl; } if (gens == NULL) { cout << "strong_generators::create_sims_in_different_action gens == NULL" << endl; exit(1); } S = create_sims_from_generators_with_target_group_order_factorized(A_given, gens, tl, A->base_len, 0 /* verbose_level */); if (f_v) { cout << "strong_generators::create_sims_in_different_action done" << endl; } return S; }
void do_Fano_subplanes(translation_plane &T, INT order, INT verbose_level) { INT f_v = (verbose_level >= 1); INT i, j; BYTE fname[1000]; if (f_v) { cout << "do_Fano_subplanes" << endl; } cout << "T.target_size = " << T.target_size << endl; T.compute(T.target_size, verbose_level); sprintf(fname, "%s_lvl_%ld", T.gen->fname_base, T.target_size); //T.gen->A->read_file_and_print_representatives(fname, FALSE); INT *Reps; BYTE **Aut_ascii; INT nb_reps, size; cout << "Reading spreads from file " << fname << endl; T.gen->A->read_representatives_and_strong_generators(fname, Reps, Aut_ascii, nb_reps, size, 0 /* verbose_level */); cout << "Read spreads from file " << fname << endl; translation_plane_via_andre_model *TP; INT *Nb_subplanes; //INT **Subplanes; TP = new translation_plane_via_andre_model[nb_reps]; Nb_subplanes = NEW_INT(nb_reps); //Subplanes = NEW_PINT(nb_reps); //INT depth = 4; INT depth = 7; for (i = 0; i < nb_reps; i++) { cout << endl; cout << endl; cout << endl; cout << endl; cout << endl; cout << endl; cout << "Making translation plane from representative " << i << ":" << endl; vector_ge *gens; INT *tl; T.gen->A->get_generators_from_ascii_coding(Aut_ascii[i], gens, tl, verbose_level - 2); TP[i].init(Reps + i * T.target_size, T.q, T.k, T.F, gens, tl, verbose_level); BYTE prefix[1000]; sprintf(prefix, "TP_%ld_", i); //TP[i].classify_arcs(prefix, depth, verbose_level); TP[i].classify_subplanes(prefix, verbose_level); Nb_subplanes[i] = TP[i].arcs->number_of_orbits_at_depth(depth); FREE_OBJECT(gens); FREE_INT(tl); } for (i = 0; i < nb_reps; i++) { cout << "Translation plane " << i << ":" << endl; TP[i].arcs->print_orbit_numbers(depth); } #if 0 for (i = 0; i < nb_reps; i++) { cout << "Translation plane " << i << ":" << endl; BYTE fname[1000]; INT *Quadrangles; INT nb_quadrangles; INT size; sprintf(fname, "%s_lvl_%ld", TP[i].arcs->fname_base, depth); TP[i].An1->read_representatives(fname, Quadrangles, nb_quadrangles, size, verbose_level); Nb_subplanes[i] = 0; Subplanes[i] = NEW_INT(nb_quadrangles * 7); cout << "Found " << nb_quadrangles << " quadrangles, testing for subplanes" << endl; for (j = 0; j < nb_quadrangles; j++) { if (TP[i].check_if_quadrangle_defines_a_subplane(Quadrangles + j * 4, Subplanes[i] + 7 * Nb_subplanes[i], verbose_level)) { Nb_subplanes[i]++; } } } for (i = 0; i < nb_reps; i++) { cout << "Translation plane " << i << " has " << Nb_subplanes[i] << " quadrangles that span subplanes" << endl; cout << "The subplanes are:" << endl; INT_matrix_print(Subplanes[i], Nb_subplanes[i], 7); } for (i = 0; i < nb_reps; i++) { cout << "Translation plane " << i << " has " << Nb_subplanes[i] << " quadrangles that span subplanes" << endl; } #endif for (i = 0; i < nb_reps; i++) { cout << "Translation plane " << i << " has " << Nb_subplanes[i] << " orbits of Fano subplanes" << endl; TP[i].arcs->compute_and_print_automorphism_group_orders(depth, cout); if (i == 4 || i == 5) { INT fst, node, size; INT *set; set = NEW_INT(depth); fst = TP[i].arcs->first_oracle_node_at_level[depth]; for (j = 0; j < Nb_subplanes[i]; j++) { longinteger_object stab_order; node = fst + j; TP[i].arcs->stabilizer_order(node, stab_order); if ((stab_order.as_INT() % 14) == 0) { cout << "orbit " << j << " has stabilizer of order " << stab_order << " which is divisible by 14" << endl; TP[i].arcs->get_set(node, set, size); if (size != depth) { cout << "size != depth" << endl; exit(1); } cout << "The subplane is : "; INT_vec_print(cout, set, depth); cout << endl; vector_ge *stab_gens; INT *stab_tl; stab_gens = new vector_ge; stab_tl = NEW_INT(TP[i].An1->base_len); TP[i].arcs->get_stabilizer(stab_gens, stab_tl, depth, j, 0 /*verbose_level */); sims *S; longinteger_object Sgo; S = create_sims_from_generators_with_target_group_order_factorized(TP[i].An1, stab_gens, stab_tl, TP[i].An1->base_len, 0 /* verbose_level */); S->group_order(Sgo); cout << "created group of order " << Sgo << endl; delete S; delete stab_gens; FREE_INT(stab_tl); } } FREE_INT(set); } cout << endl; } delete [] TP; FREE_INT(Nb_subplanes); #if 0 for (i = 0; i < nb_reps; i++) { FREE_INT(Subplanes[i]); } FREE_PINT(Subplanes); #endif FREE_INT(Reps); for (i = 0; i < nb_reps; i++) { FREE_BYTE(Aut_ascii[i]); } FREE_PBYTE(Aut_ascii); if (f_v) { cout << "do_Fano_subplanes done" << endl; } }