Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
		}

}