Orbiter 2022
Combinatorial Objects
induced_actions.h
Go to the documentation of this file.
1// induced_actions.h
2//
3// Anton Betten
4//
5// moved here from action.h: July 28, 2018
6// based on action.h which was started: August 13, 2005
7
8
9
10#ifndef ORBITER_SRC_LIB_GROUP_ACTIONS_INDUCED_ACTIONS_INDUCED_ACTIONS_H_
11#define ORBITER_SRC_LIB_GROUP_ACTIONS_INDUCED_ACTIONS_INDUCED_ACTIONS_H_
12
13
14
15namespace orbiter {
16namespace layer3_group_actions {
17namespace induced_actions {
18
19
20// #############################################################################
21// action_by_conjugation.cpp
22// #############################################################################
23
24
26
27
28
30public:
33 long int goi;
34
35 int *Elt1;
36 int *Elt2;
37 int *Elt3;
38
41 void null();
42 void free();
43 void init(groups::sims *Base_group, int f_ownership, int verbose_level);
44 long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level);
45 long int rank(int *Elt);
46 long int multiply(actions::action *A, long int i, long int j, int verbose_level);
47};
48
49// #############################################################################
50// action_by_representation.cpp
51// #############################################################################
52
53
55
56
58public:
60 int n;
61 int q;
63 field_theory::finite_field *F;
65 int degree;
66
67 int dimension; //
68 int *v1; // [dimension]
69 int *v2; // [dimension]
70 int *v3; // [dimension]
71
74 void null();
75 void free();
76 void init_action_on_conic(actions::action &A, int verbose_level);
77 long int compute_image_int(
78 actions::action &A, int *Elt, long int a, int verbose_level);
80 actions::action &A, int *Elt, int *input, int *output,
81 int verbose_level);
82 void unrank_point(long int a, int *v, int verbose_level);
83 long int rank_point(int *v, int verbose_level);
84
85};
86
87// #############################################################################
88// action_by_restriction.cpp
89// #############################################################################
90
91
93
94
95
96
98public:
100 long int *points; // [nb_points]
101 long int *points_sorted; // [nb_points]
102 long int *perm_inv; // [nb_points]
104 int pt;
106
109 void free();
112 int pt, int verbose_level);
113 void init(int nb_points, long int *points, int verbose_level);
114 // the array points must be ordered
115 long int original_point(long int pt);
116 long int restricted_point_idx(long int pt);
117 long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level);
118};
119
120// #############################################################################
121// action_by_right_multiplication.cpp
122// #############################################################################
123
125
126
127
129public:
132 int goi;
133
134 int *Elt1;
135 int *Elt2;
136
139 void null();
140 void free();
141 void init(groups::sims *Base_group, int f_ownership, int verbose_level);
142 long int compute_image(actions::action *A, int *Elt, long int i,
143 int verbose_level);
144};
145
146// #############################################################################
147// action_by_subfield_structure.cpp
148// #############################################################################
149
151
152
154public:
155 int n;
156 int Q;
157 const char *poly_q;
158 int q;
159 int s;
160 int m; // n * s
161 int *v1; // [m]
162 int *v2; // [m]
163 int *v3; // [m]
164
167
169 field_theory::finite_field *FQ;
171 field_theory::finite_field *Fq;
172
173 field_theory::subfield_structure *S;
174
175 int *Eltq;
176 int *Mtx; // [m * m]
177
180
183 void null();
184 void free();
185 void init(actions::action &A, field_theory::finite_field *Fq, int verbose_level);
186 long int compute_image_int(
187 actions::action &A, int *Elt, long int a, int verbose_level);
189 actions::action &A, int *Elt, int *input, int *output,
190 int verbose_level);
191};
192
193// #############################################################################
194// action_on_andre.cpp
195// #############################################################################
196
198
199
201public:
202
205 geometry::andre_construction *Andre;
206 int k, n, q;
207 int k1, n1;
208 int N; // number of points in the plane
210 int *coords1; // [(k + 1) * (n + 1)];
211 int *coords2; // [(k + 1) * (n + 1)];
212 int *coords3; // [k * n];
213
216 void null();
217 void free();
219 geometry::andre_construction *Andre, int verbose_level);
220 long int compute_image(int *Elt, long int i,
221 int verbose_level);
222 long int compute_image_of_point(int *Elt, long int pt_idx,
223 int verbose_level);
224 long int compute_image_of_line(int *Elt, long int line_idx,
225 int verbose_level);
226};
227
228// #############################################################################
229// action_on_bricks.cpp
230// #############################################################################
231
233
234
236public:
237
239 combinatorics::brick_domain *B;
242
245 void null();
246 void free();
247 void init(actions::action *A, combinatorics::brick_domain *B, int f_linear_action,
248 int verbose_level);
249 long int compute_image(int *Elt, long int i,
250 int verbose_level);
251 long int compute_image_linear_action(int *Elt, long int i,
252 int verbose_level);
253 long int compute_image_permutation_action(int *Elt, long int i,
254 int verbose_level);
255};
256
257// #############################################################################
258// action_on_cosets.cpp
259// #############################################################################
260
262
263
265public:
267 field_theory::finite_field *F;
269 int n;
270 int *subspace_basis; // [dimension_of_subspace * n]
271 int *base_cols; // [dimension_of_subspace]
272 // the pivot column for the subspace basis
273 // to be used if a vector v[len]
274 // is reduced modulo a subspace
275
278 int *Points; // ordered list of point ranks
279 long int *lint_Points; // ordered list of point ranks
280
281 int *v1;
282 int *v2;
283
284 void (*unrank_point)(int *v, int a, void *data);
285 int (*rank_point)(int *v, void *data);
286 void (*unrank_point_lint)(int *v, long int a, void *data);
287 long int (*rank_point_lint)(int *v, void *data);
289
292 void null();
293 void freeself();
294 void init(int nb_points, int *Points,
296 field_theory::finite_field *F,
298 int n,
299 int *subspace_basis,
300 int *base_cols,
301 void (*unrank_point)(int *v, int a, void *data),
302 int (*rank_point)(int *v, void *data),
303 void *rank_unrank_data,
304 int verbose_level);
305 void init_lint(int nb_points, long int *Points,
307 field_theory::finite_field *F,
309 int n,
310 int *subspace_basis,
311 int *base_cols,
312 void (*unrank_point)(int *v, long int a, void *data),
313 long int (*rank_point)(int *v, void *data),
314 void *rank_unrank_data,
315 int verbose_level);
316 void reduce_mod_subspace(int *v, int verbose_level);
317 long int compute_image(int *Elt, long int i, int verbose_level);
318
319};
320
321// #############################################################################
322// action_on_determinant.cpp
323// #############################################################################
324
326
327
329public:
332 int m;
333 int q;
335 // gcd(m, q - 1) if f_projective
336 // q - 1 otherwise
337
340 void null();
341 void free();
342 void init(actions::action &A, int f_projective, int m, int verbose_level);
343 long int compute_image(actions::action *A, int *Elt, long int i,
344 int verbose_level);
345};
346
347// #############################################################################
348// action_on_factor_space.cpp
349// #############################################################################
350
352
353
355public:
356 algebra::vector_space *VS;
357
358
359 // VS->dimension = length of vectors in large space
360
361 int *subspace_basis; // [subspace_basis_size * VS->dimension]
363 int *base_cols; // [subspace_basis_size]
364 // the pivot column for the subspace basis
365 // to be used if a vector v[len] is reduced modulo a subspace
366
367 long int degree;
368 // the number of projective points in the small space
369 // (i.e., the factor space)
370 // (q^factor_space_len - 1) / (q - 1),
371 // as computed by compute_degree();
372 long int large_degree;
373 // the number of projective points in the large space
374 // (q^len - 1) / (q - 1),
375 // as computed by compute_large_degree();
376
378 // = VS->dimension - subspace_basis_size
379
381 // [factor_space_len]
382 // the list of columns that are not pivot columns,
383 // i.e. not in base_cols[]
384 // this is the set-theoretic complement of base_cols
386 // [nb_points]
387 // projection_table[i] = j
388 // means that the Gauss reduced vector in
389 // the coset of point_list[i]
390 // is in coset_reps_Gauss[j]
391 long int *preimage_table; // [degree]
392 int *tmp; // [factor_space_len]
393 int *Tmp1; // [VS->dimension]
394 int *Tmp2; // [VS->dimension]
396
398
401 // [nb_cosets]
402 // ordered list of Gauss reduced coset representatives
403 // the entries are ranks of vectors in the large space
404
405 int *tmp_w; // [VS->dimension] temporary vector for use in rank
406 int *tmp_w1;
407 // [subspace_basis_size]
408 // temporary vector for lexleast_element_in_coset
409 int *tmp_v1;
410 // [len] temporary vector
411 // for use in lexleast_element_in_coset
412 int *tmp_v2;
413 // [len] temporary vector
414 // for use in lexleast_element_in_coset
415
418 void null();
419 void free();
420 void init_light(
421 algebra::vector_space *VS,
423 long int *subspace_basis_ranks, int subspace_basis_size,
424 int verbose_level);
426 algebra::vector_space *VS,
428 long int *subspace_basis_ranks, int subspace_basis_size,
429 long int *point_list, int nb_points,
430 int verbose_level);
431 void print_coset_table();
433 long int *point_list, int nb_points);
434 void init_coset_table(
435 long int *point_list, int nb_points,
436 int verbose_level);
437 void init_by_rank(
438 algebra::vector_space *VS,
440 long int *subspace_basis_ranks, int subspace_basis_size,
441 int f_compute_tables, int verbose_level);
443 algebra::vector_space *VS,
446 int f_compute_tables, int verbose_level);
447 void init2(actions::action &A_base, actions::action &A,
448 int f_compute_tables, int verbose_level);
449 void compute_projection_table(int verbose_level);
450 long int compute_degree();
451 long int compute_large_degree();
452 void list_all_elements();
453 void reduce_mod_subspace(int *v, int verbose_level);
454 long int lexleast_element_in_coset(long int rk, int verbose_level);
455 // This function computes the lexleast
456 // element in the coset modulo the subspace.
457 // It does so by looping over all q^subspace_basis_size
458 // elements in the subspace and ranking the corresponding
459 // vector in the large space using rank_in_large_space(v2).
460 long int project_onto_Gauss_reduced_vector(long int rk, int verbose_level);
461 long int project(long int rk, int verbose_level);
462 // unranks the vector rk, and reduces it
463 // modulo the subspace basis.
464 // The non-pivot components are considered
465 // as a vector in F_q^factor_space_len
466 // and ranked using the rank function for projective space.
467 // This rank is returned.
468 // If the vector turns out to lie in the
469 // subspace, -1 is returned.
470 long int preimage(long int rk, int verbose_level);
471 void embed(int *from, int *to);
472 void unrank(int *v, long int rk, int verbose_level);
473 long int rank(int *v, int verbose_level);
474 void unrank_in_large_space(int *v, long int rk);
475 long int rank_in_large_space(int *v);
476 void unrank_in_small_space(int *v, long int rk);
477 long int rank_in_small_space(int *v);
478 long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level);
479};
480
481// #############################################################################
482// action_on_flags.cpp
483// #############################################################################
484
485
487
488
490public:
492 int n;
493 field_theory::finite_field *F;
494 int *type;
496 geometry::flag *Flag;
499 int *M1;
500 int *M2;
501
504 void null();
505 void free();
506 void init(actions::action *A, int *type, int type_len,
507 int verbose_level);
508 long int compute_image(int *Elt, long int i, int verbose_level);
509};
510
511// #############################################################################
512// action_on_galois_group.cpp:
513// #############################################################################
514
516
517
519public:
522 int m;
523 int q;
525
528 void null();
529 void free();
530 void init(actions::action *A, int m, int verbose_level);
531 long int compute_image(int *Elt, long int i,
532 int verbose_level);
533};
534
535
536// #############################################################################
537// action_on_grassmannian.cpp
538// #############################################################################
539
541
542
544public:
545 int n;
546 int k;
547 int q;
548 field_theory::finite_field *F;
550
552 geometry::grassmann *G;
553 int *M1;
554 int *M2;
555
557 int big_n;
558 geometry::grassmann_embedded *GE;
559 int *subspace_basis; // [n * big_n]
560 int *subspace_basis2; // [n * big_n]
561
562 ring_theory::longinteger_object degree;
564
566 void (*print_function)(std::ostream &ost, long int a, void *data);
568
571 void null();
572 void free();
573 void init(actions::action &A,
574 geometry::grassmann *G, int verbose_level);
576 void (*print_function)(std::ostream &ost, long int a, void *data),
578 int verbose_level);
579 void init_embedding(int big_n, int *ambient_space,
580 int verbose_level);
581 void unrank(long int i, int *v, int verbose_level);
582 long int rank(int *v, int verbose_level);
584 ring_theory::longinteger_object &i, ring_theory::longinteger_object &j,
585 int verbose_level);
586 long int compute_image_int(actions::action *A, int *Elt,
587 long int i, int verbose_level);
588 long int compute_image_int_ordinary(actions::action *A, int *Elt,
589 long int i, int verbose_level);
590 long int compute_image_int_embedded(actions::action *A, int *Elt,
591 long int i, int verbose_level);
592 void print_point(long int a, std::ostream &ost);
593};
594
595// #############################################################################
596// action_on_homogeneous_polynomials.cpp
597// #############################################################################
598
599
601
602
604public:
605 int n; // the dimension M->n
606 int q;
608 ring_theory::homogeneous_polynomial_domain *HPD;
610 field_theory::finite_field *F;
613
614 // wedge product
615 int dimension; // = HPD->nb_monomials
616 int *v1; // [dimension]
617 int *v2; // [dimension]
618 int *v3; // [dimension]
619 int *Elt1;
620
624
627 void null();
628 void free();
629 void init(actions::action *A, ring_theory::homogeneous_polynomial_domain *HPD,
630 int verbose_level);
632 int nb_equations, int verbose_level);
633 void unrank_point(int *v, long int rk);
634 long int rank_point(int *v);
635 long int compute_image_int(int *Elt, long int a, int verbose_level);
637 int *Elt, int *input, int *output, int verbose_level);
639 int *Elt, int *M, int verbose_level);
640};
641
642// #############################################################################
643// action_on_interior_direct_product.cpp
644// #############################################################################
645
646
648
649
651public:
656
657
660 void init(actions::action *A, int nb_rows, int verbose_level);
661 long int compute_image(int *Elt, long int a, int verbose_level);
662};
663
664
665
666// #############################################################################
667// action_on_k_subsets.cpp
668// #############################################################################
669
671
672
674public:
676 int k;
678 int *set1; // [k]
679 int *set2; // [k]
680
683 void null();
684 void free();
685 void init(actions::action *A, int k, int verbose_level);
686 long int compute_image(int *Elt, long int i, int verbose_level);
687};
688
689// #############################################################################
690// action_on_orbits.cpp
691// #############################################################################
692
694
695
696
698public:
703
706 void null();
707 void free();
709 int verbose_level);
710 long int compute_image(int *Elt, long int i, int verbose_level);
711};
712
713// #############################################################################
714// action_on_orthogonal.cpp
715// #############################################################################
716
717
719
720
722public:
724 orthogonal_geometry::orthogonal *O;
725 int *v1;
726 int *v2;
727 int *w1;
728 int *w2;
734
737 void null();
738 void free();
740 orthogonal_geometry::orthogonal *O,
742 int verbose_level);
743 void unrank_point(int *v, int rk);
744 int rank_point(int *v);
745 long int map_a_point(int *Elt, long int i, int verbose_level);
746 long int map_a_line(int *Elt, long int i, int verbose_level);
747 long int compute_image_int(int *Elt, long int i, int verbose_level);
748};
749
750// #############################################################################
751// action_on_set_partitions.cpp:
752// #############################################################################
753
754
756
757
758
760public:
766 int *v1;
767 int *v2;
768
771 void null();
772 void free();
773 void init(int partition_size,
775 int verbose_level);
776 long int compute_image(
777 int *Elt,
778 long int a, int verbose_level);
779};
780
781// #############################################################################
782// action_on_sets.cpp
783// #############################################################################
784
785
787
788
789
791public:
794 long int **sets;
795 long int *image_set;
796 int *perm;
798
801 void null();
802 void free();
803 void init(int nb_sets, int set_size,
804 long int *input_sets, int verbose_level);
805 int find_set(long int *set, int verbose_level);
806 long int compute_image(actions::action *A, int *Elt,
807 long int i, int verbose_level);
808 void print_sets_sorted();
810 void test_sets();
811};
812
813int action_on_sets_compare(void *a, void *b, void *data);
814int action_on_sets_compare_inverted(void *a, void *b, void *data);
815
816// #############################################################################
817// action_on_sign.cpp
818// #############################################################################
819
821
822
824public:
827 int *perm; // [perm_degree]
828 int degree; // 2
829
832 void null();
833 void free();
834 void init(actions::action *A, int verbose_level);
835 long int compute_image(int *Elt, long int i, int verbose_level);
836};
837
838// #############################################################################
839// action_on_spread_set.cpp
840// #############################################################################
841
842
844
845
847public:
848
849 int k;
850 int n; // = 2 * k
851 int k2; // = k^2
852 int q;
853 field_theory::finite_field *F;
854 int low_level_point_size; // = k * k
856
860
861 int *Elt1;
862 int *Elt2;
863
864 int *mtx1; // [k * k]
865 int *mtx2; // [k * k]
866 int *subspace1; // [k * n]
867 int *subspace2; // [k * n]
868
871 void null();
872 void free();
875 int k, field_theory::finite_field *F, int verbose_level);
876 void report(std::ostream &ost, int verbose_level);
877 long int compute_image_int(int *Elt, long int rk, int verbose_level);
878 void matrix_to_subspace(int *mtx, int *subspace, int verbose_level);
879 void subspace_to_matrix(int *subspace, int *mtx, int verbose_level);
880 void unrank_point(long int rk, int *mtx, int verbose_level);
881 long int rank_point(int *mtx, int verbose_level);
882 void compute_image_low_level(int *Elt, int *input, int *output,
883 int verbose_level);
884};
885
886// #############################################################################
887// action_on_subgroups.cpp
888// #############################################################################
889
891
892
894public:
895
901 int **sets;
902 int *image_set; // [subgroup_order]
903 int *perm;
905 int *Elt1;
906
909 void null();
910 void free();
913 int verbose_level);
914 long int compute_image(int *Elt, long int a, int verbose_level);
915
916};
917
918int action_on_subgroups_compare(void *a, void *b, void *data);
919int action_on_subgroups_compare_inverted(void *a, void *b, void *data);
920
921// #############################################################################
922// action_on_wedge_product.cpp
923// #############################################################################
924
925
927
928
930public:
931
932 int n;
933 int q;
935 field_theory::finite_field *F;
937 long int degree;
938
939 // wedge product
940 int wedge_dimension; // {n \choose 2}
941 int *wedge_v1; // [wedge_dimension]
942 int *wedge_v2; // [wedge_dimension]
943 int *wedge_v3; // [wedge_dimension]
944
947 void null();
948 void free();
949 void init(actions::action &A, int verbose_level);
950 void unrank_point(int *v, long int rk);
951 long int rank_point(int *v);
952 long int compute_image_int(
953 actions::action &A, int *Elt, long int a, int verbose_level);
955 int verbose_level);
956 int element_entry_ij(actions::action &A, int *Elt, int I, int J,
957 int verbose_level);
958 int element_entry_ijkl(actions::action &A, int *Elt,
959 int i, int j, int k, int l, int verbose_level);
961 actions::action &A, int *Elt, int *input, int *output,
962 int verbose_level);
963};
964
965
966// #############################################################################
967// product_action.cpp
968// #############################################################################
969
971
972
974public:
982
983 int *Elt1, *Elt2, *Elt3;
984 // temporary storage
986 // temporary storage, used in element_store()
987
988 data_structures::page_storage *Elts;
989
992 void null();
993 void free();
995 int verbose_level);
996 long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level);
997 void element_one(actions::action *A, int *Elt, int verbose_level);
998 int element_is_one(actions::action *A, int *Elt, int verbose_level);
999 void element_unpack(uchar *elt, int *Elt, int verbose_level);
1000 void element_pack(int *Elt, uchar *elt, int verbose_level);
1001 void element_retrieve(actions::action *A, int hdl, int *Elt,
1002 int verbose_level);
1003 int element_store(actions::action *A, int *Elt, int verbose_level);
1004 void element_mult(int *A, int *B, int *AB, int verbose_level);
1005 void element_invert(int *A, int *Av, int verbose_level);
1006 void element_transpose(int *A, int *At, int verbose_level);
1007 void element_move(int *A, int *B, int verbose_level);
1008 void element_print(int *A, std::ostream &ost);
1009 void element_print_latex(int *A, std::ostream &ost);
1010 void make_element(int *Elt, int *data, int verbose_level);
1011};
1012
1013
1014}}}
1015
1016
1017#endif /* ORBITER_SRC_LIB_GROUP_ACTIONS_INDUCED_ACTIONS_INDUCED_ACTIONS_H_ */
1018
1019
1020
1021
a permutation group in a fixed action.
Definition: actions.h:99
a matrix group over a finite field in projective, vector space or affine action
Definition: groups.h:318
Schreier trees for orbits of groups on points.
Definition: groups.h:839
a permutation group represented via a stabilizer chain
Definition: groups.h:1273
a subgroup of a group using a list of elements
Definition: groups.h:2039
induced action by conjugation on the elements of a given group
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
long int multiply(actions::action *A, long int i, long int j, int verbose_level)
void init(groups::sims *Base_group, int f_ownership, int verbose_level)
induced action of PSL(2,q) on a conic (the only type implemented so far)
long int compute_image_int(actions::action &A, int *Elt, long int a, int verbose_level)
void compute_image_int_low_level(actions::action &A, int *Elt, int *input, int *output, int verbose_level)
void init(int nb_points, long int *points, int verbose_level)
void init_single_orbit_from_schreier_vector(data_structures_groups::schreier_vector *Schreier_vector, int pt, int verbose_level)
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
induced action on a the set of elements of a group by right multiplication
void init(groups::sims *Base_group, int f_ownership, int verbose_level)
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
induced action on the vector space arising from a field over a subfield
long int compute_image_int(actions::action &A, int *Elt, long int a, int verbose_level)
void compute_image_int_low_level(actions::action &A, int *Elt, int *input, int *output, int verbose_level)
void init(actions::action &A, field_theory::finite_field *Fq, int verbose_level)
induced action on the elements of a projective plane constructed via Andre / Bruck / Bose
long int compute_image(int *Elt, long int i, int verbose_level)
long int compute_image_of_line(int *Elt, long int line_idx, int verbose_level)
void init(actions::action *An, actions::action *An1, geometry::andre_construction *Andre, int verbose_level)
long int compute_image_of_point(int *Elt, long int pt_idx, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
long int compute_image_linear_action(int *Elt, long int i, int verbose_level)
long int compute_image_permutation_action(int *Elt, long int i, int verbose_level)
void init(actions::action *A, combinatorics::brick_domain *B, int f_linear_action, int verbose_level)
induced action on the cosets of a subspace by right multiplication
void init(int nb_points, int *Points, actions::action *A_linear, field_theory::finite_field *F, int dimension_of_subspace, int n, int *subspace_basis, int *base_cols, void(*unrank_point)(int *v, int a, void *data), int(*rank_point)(int *v, void *data), void *rank_unrank_data, int verbose_level)
void init_lint(int nb_points, long int *Points, actions::action *A_linear, field_theory::finite_field *F, int dimension_of_subspace, int n, int *subspace_basis, int *base_cols, void(*unrank_point)(int *v, long int a, void *data), long int(*rank_point)(int *v, void *data), void *rank_unrank_data, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
induced action on the determinant of a group of matrices (used to compute the subgroup PSL)
void init(actions::action &A, int f_projective, int m, int verbose_level)
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
induced action on the factor space of a vector space modulo a subspace
void init_coset_table(long int *point_list, int nb_points, int verbose_level)
void init_by_rank(algebra::vector_space *VS, actions::action &A_base, actions::action &A, long int *subspace_basis_ranks, int subspace_basis_size, int f_compute_tables, int verbose_level)
void init_from_coordinate_vectors(algebra::vector_space *VS, actions::action &A_base, actions::action &A, int *subspace_basis, int subspace_basis_size, int f_compute_tables, int verbose_level)
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
void init_by_rank_table_mode(algebra::vector_space *VS, actions::action &A_base, actions::action &A, long int *subspace_basis_ranks, int subspace_basis_size, long int *point_list, int nb_points, int verbose_level)
void init2(actions::action &A_base, actions::action &A, int f_compute_tables, int verbose_level)
void init_light(algebra::vector_space *VS, actions::action &A_base, actions::action &A, long int *subspace_basis_ranks, int subspace_basis_size, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
void init(actions::action *A, int *type, int type_len, int verbose_level)
induced action on the galois group (used to compute the projectivity subgroup of a collineation group...
induced action on the grassmannian (subspaces of a fixed dimension of a vectors space)
void(* print_function)(std::ostream &ost, long int a, void *data)
long int compute_image_int(actions::action *A, int *Elt, long int i, int verbose_level)
void add_print_function(void(*print_function)(std::ostream &ost, long int a, void *data), void *print_function_data, int verbose_level)
void init_embedding(int big_n, int *ambient_space, int verbose_level)
long int compute_image_int_embedded(actions::action *A, int *Elt, long int i, int verbose_level)
void init(actions::action &A, geometry::grassmann *G, int verbose_level)
void compute_image_longinteger(actions::action *A, int *Elt, ring_theory::longinteger_object &i, ring_theory::longinteger_object &j, int verbose_level)
long int compute_image_int_ordinary(actions::action *A, int *Elt, long int i, int verbose_level)
induced action on the set of homogeneous polynomials over a finite field
void init(actions::action *A, ring_theory::homogeneous_polynomial_domain *HPD, int verbose_level)
void init(actions::action *A, int k, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
induced action on the set of orbits (usually by the normalizer)
void init(actions::action *A, groups::schreier *Sch, int f_play_it_safe, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
long int map_a_line(int *Elt, long int i, int verbose_level)
long int map_a_point(int *Elt, long int i, int verbose_level)
void init(actions::action *original_action, orthogonal_geometry::orthogonal *O, int f_on_points, int f_on_lines, int f_on_points_and_lines, int verbose_level)
long int compute_image_int(int *Elt, long int i, int verbose_level)
void init(int partition_size, actions::action *A, int verbose_level)
void init(int nb_sets, int set_size, long int *input_sets, int verbose_level)
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
induced action on the sign function of a permutation group (to compute the even subgroup)
long int compute_image(int *Elt, long int i, int verbose_level)
void init(actions::action *A, int verbose_level)
induced action on a spread set via the associated spread
void subspace_to_matrix(int *subspace, int *mtx, int verbose_level)
void compute_image_low_level(int *Elt, int *input, int *output, int verbose_level)
void matrix_to_subspace(int *mtx, int *subspace, int verbose_level)
long int compute_image_int(int *Elt, long int rk, int verbose_level)
void init(actions::action *A_PGL_n_q, actions::action *A_PGL_k_q, groups::sims *G_PGL_k_q, int k, field_theory::finite_field *F, int verbose_level)
void init(actions::action *A, groups::sims *S, int nb_subgroups, int subgroup_order, groups::subgroup **Subgroups, int verbose_level)
long int compute_image(int *Elt, long int a, int verbose_level)
induced wedge product action on the exterior square of a vector space
int element_entry_ijkl(actions::action &A, int *Elt, int i, int j, int k, int l, int verbose_level)
void compute_image_int_low_level(actions::action &A, int *Elt, int *input, int *output, int verbose_level)
int element_entry_frobenius(actions::action &A, int *Elt, int verbose_level)
long int compute_image_int(actions::action &A, int *Elt, long int a, int verbose_level)
int element_entry_ij(actions::action &A, int *Elt, int I, int J, int verbose_level)
void element_pack(int *Elt, uchar *elt, int verbose_level)
void element_retrieve(actions::action *A, int hdl, int *Elt, int verbose_level)
void init(actions::action *A1, actions::action *A2, int f_use_projections, int verbose_level)
void element_unpack(uchar *elt, int *Elt, int verbose_level)
void element_mult(int *A, int *B, int *AB, int verbose_level)
void make_element(int *Elt, int *data, int verbose_level)
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
void element_invert(int *A, int *Av, int verbose_level)
void element_transpose(int *A, int *At, int verbose_level)
int element_store(actions::action *A, int *Elt, int verbose_level)
int element_is_one(actions::action *A, int *Elt, int verbose_level)
void element_one(actions::action *A, int *Elt, int verbose_level)
unsigned char uchar
Definition: foundations.h:204
int action_on_subgroups_compare(void *a, void *b, void *data)
int action_on_sets_compare_inverted(void *a, void *b, void *data)
int action_on_sets_compare(void *a, void *b, void *data)
int action_on_subgroups_compare_inverted(void *a, void *b, void *data)
representation_type
enumeration specific to action_by_representation
the orbiter library for the classification of combinatorial objects