15namespace layer1_foundations {
16namespace orbiter_kernel_system {
22 cout <<
"magma_interface::magma_interface The_Orbiter_session == NULL" << endl;
33 int group_order,
int *Table,
int *gens,
int nb_gens,
41 fname.assign(fname_base);
42 fname.append(
".magma");
46 fp <<
"G := PermutationGroup< " << group_order <<
" | " << endl;
47 for (i = 0; i < nb_gens; i++) {
49 Table + gens[i] * group_order,
51 if (i < nb_gens - 1) {
57 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
61 std::string &fname_base,
62 int group_order,
int *Table,
int *gens,
int nb_gens,
63 int *&N_gens,
int &N_nb_gens,
int &N_go,
72 fname_magma.assign(fname_base);
73 fname_magma.append(
".magma");
74 fname_output.assign(fname_base);
75 fname_output.append(
".txt");
79 ofstream fp(fname_magma);
81 fp <<
"S := Sym(" << group_order <<
");" << endl;
84 fp <<
"G := PermutationGroup< " << group_order <<
" | " << endl;
85 for (i = 0; i < nb_gens; i++) {
87 Table + gens[i] * group_order, group_order);
88 if (i < nb_gens - 1) {
94 fp <<
"N := Normalizer(S, G);" << endl;
95 fp <<
"SetOutputFile(\"" << fname_output <<
"\");" << endl;
96 fp <<
"printf \"%o\", #N; printf \"\\n\";" << endl;
97 fp <<
"printf \"%o\", #Generators(N); printf \"\\n\";" << endl;
98 fp <<
"for h := 1 to #Generators(N) do for i := 1 to "
99 << group_order <<
" do printf \"%o\", i^N.h; printf \" \"; "
100 "if i mod 25 eq 0 then printf \"\n\"; end if; end for; "
101 "printf \"\\n\"; end for;" << endl;
102 fp <<
"UnsetOutputFile();" << endl;
110 cout <<
"please run magma on the file " << fname_magma << endl;
111 cout <<
"for instance, try" << endl;
117 cout <<
"normalizer command in MAGMA has finished, written file "
118 << fname_output <<
" of size " << Fio.
file_size(fname_output) << endl;
122 group_order, N_gens, N_nb_gens, N_go, verbose_level);
126 ifstream fp(fname_output);
131 cout <<
"N_go = " << N_go <<
" nb_gens = " << N_nb_gens << endl;
132 N_gens =
NEW_int(N_nb_gens * group_order);
133 for (i = 0; i < N_nb_gens; i++) {
134 for (j = 0; j < group_order; j++) {
137 N_gens[i * group_order + j] = a;
146 int degree,
int *&gens,
int &nb_gens,
int &go,
156 cout <<
"go = " << go <<
" nb_gens = " << nb_gens << endl;
157 gens =
NEW_int(nb_gens * degree);
158 for (i = 0; i < nb_gens; i++) {
159 for (j = 0; j < degree; j++) {
162 gens[i * degree + j] = a;
169 std::string &fname_base,
171 int *initial_vector,
int **gens,
int nb_gens,
181 fname_magma.assign(fname_base);
182 fname_magma.append(
".magma");
183 fname_output.assign(fname_base);
184 fname_output.append(
".txt");
187 ofstream fp(fname_magma);
190 fp <<
"G := MatrixGroup< " << d <<
", GF(" << q <<
") | " << endl;
191 for (i = 0; i < nb_gens; i++) {
193 for (j = 0; j < d * d; j++) {
200 if (i < nb_gens - 1) {
206 fp <<
"V := RSpace(G);" << endl;
208 for (j = 0; j < d; j++) {
209 fp << initial_vector[j];
216 fp <<
"O := Orbit(G,u);" << endl;
219 fp <<
"SetOutputFile(\"" << fname_output <<
"\");" << endl;
220 fp <<
"printf \"%o\", #O; printf \"\\n\";" << endl;
221 fp <<
"UnsetOutputFile();" << endl;
229 cout <<
"please run magma on the file " << fname_magma << endl;
230 cout <<
"for instance, try" << endl;
236 cout <<
"orbit command in MAGMA has finished, written file "
237 << fname_output <<
" of size " << Fio.
file_size(fname_output) << endl;
242 ifstream fp(fname_output);
252 std::string &fname_base,
254 int *initial_subspace,
int **gens,
int nb_gens,
264 fname_magma.assign(fname_base);
265 fname_magma.append(
".magma");
266 fname_output.assign(fname_base);
267 fname_output.append(
".txt");
270 ofstream fp(fname_magma);
273 fp <<
"G := MatrixGroup< " << d <<
", GF(" << q <<
") | " << endl;
274 for (i = 0; i < nb_gens; i++) {
276 for (j = 0; j < d * d; j++) {
283 if (i < nb_gens - 1) {
289 fp <<
"V := RSpace(G);" << endl;
290 for (i = 0; i < k; i++) {
291 fp <<
"u" << i <<
" := V![";
292 for (j = 0; j < d; j++) {
293 fp << initial_subspace[i * d + j];
301 fp <<
"W := sub< V | ";
302 for (i = 0; i < k; i++) {
309 fp <<
"O := Orbit(G,W);" << endl;
312 fp <<
"SetOutputFile(\"" << fname_output <<
"\");" << endl;
313 fp <<
"printf \"%o\", #O; printf \"\\n\";" << endl;
314 fp <<
"UnsetOutputFile();" << endl;
321 cout <<
"please run magma on the file " << fname_magma << endl;
322 cout <<
"for instance, try" << endl;
328 cout <<
"orbit command in MAGMA has finished, written file "
329 << fname_output <<
" of size " << Fio.
file_size(fname_output) << endl;
334 ifstream fp(fname_output);
344 int f_v = (verbose_level >= 1);
348 cmd.append(
"magma ");
352 cout <<
"executing: " << cmd << endl;
a collection of combinatorial functions
void perm_print_counting_from_one(std::ostream &ost, int *a, int n)
a collection of functions related to file io
long int file_size(std::string &fname)
void orbit_of_matrix_group_on_vector(std::string &fname_base, int d, int q, int *initial_vector, int **gens, int nb_gens, int &orbit_length, int verbose_level)
void read_permutation_group(std::string &fname, int degree, int *&gens, int &nb_gens, int &go, int verbose_level)
orbiter_session * Orbiter_session
void run_magma_file(std::string &fname, int verbose_level)
void write_permutation_group(std::string &fname_base, int group_order, int *Table, int *gens, int nb_gens, int verbose_level)
void normalizer_in_Sym_n(std::string &fname_base, int group_order, int *Table, int *gens, int nb_gens, int *&N_gens, int &N_nb_gens, int &N_go, int verbose_level)
void orbit_of_matrix_group_on_subspaces(std::string &fname_base, int d, int q, int k, int *initial_subspace, int **gens, int nb_gens, int &orbit_length, int verbose_level)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects