18namespace layer3_group_actions {
27static long int induced_action_element_image_of(action &A,
long int a,
28 void *elt,
int verbose_level);
29static void induced_action_element_image_of_low_level(action &A,
30 int *input,
int *output,
void *elt,
int verbose_level);
31static void induced_action_element_one(action &A,
32 void *elt,
int verbose_level);
33static int induced_action_element_is_one(action &A,
34 void *elt,
int verbose_level);
35static void induced_action_element_unpack(action &A,
36 void *elt,
void *Elt,
int verbose_level);
37static void induced_action_element_pack(action &A,
38 void *Elt,
void *elt,
int verbose_level);
39static void induced_action_element_retrieve(action &A,
40 int hdl,
void *elt,
int verbose_level);
41static int induced_action_element_store(action &A,
42 void *elt,
int verbose_level);
43static void induced_action_element_mult(action &A,
44 void *a,
void *b,
void *ab,
int verbose_level);
45static void induced_action_element_invert(action &A,
46 void *a,
void *av,
int verbose_level);
47static void induced_action_element_transpose(action &A,
48 void *a,
void *at,
int verbose_level);
49static void induced_action_element_move(action &A,
50 void *a,
void *b,
int verbose_level);
51static void induced_action_element_dispose(action &A,
52 int hdl,
int verbose_level);
53static void induced_action_element_print(action &A,
54 void *elt, std::ostream &ost);
55static void induced_action_element_print_quick(action &A,
56 void *elt, std::ostream &ost);
57static void induced_action_element_print_latex(action &A,
58 void *elt, std::ostream &ost);
59static void induced_action_element_print_latex_with_print_point_function(
61 void *elt, std::ostream &ost,
62 void (*point_label)(std::stringstream &sstr,
long int pt,
void *data),
63 void *point_label_data);
64static void induced_action_element_print_verbose(action &A,
65 void *elt, std::ostream &ost);
66static void induced_action_element_code_for_make_element(action &A,
67 void *elt,
int *data);
68static void induced_action_element_print_for_make_element(action &A,
69 void *elt, std::ostream &ost);
70static void induced_action_element_print_for_make_element_no_commas(
71 action &A,
void *elt, std::ostream &ost);
72static void induced_action_print_point(action &A,
long int a, std::ostream &ost);
73static void induced_action_unrank_point(action &A,
long int rk,
int *v);
74static long int induced_action_rank_point(action &A,
int *v);
79 label.assign(
"function_pointers_induced_action");
100 induced_action_element_print_latex_with_print_point_function;
103 induced_action_element_code_for_make_element;
105 induced_action_element_print_for_make_element;
107 induced_action_element_print_for_make_element_no_commas;
114static long int induced_action_element_image_of(
action &A,
115 long int a,
void *elt,
int verbose_level)
117 int *Elt = (
int *) elt;
119 int f_v = (verbose_level >= 1);
123 cout <<
"induced_action_element_image_of "
124 "computing image of " << a
125 <<
" in action " << A.
label << endl;
129 cout <<
"induced_action_element_image_of "
130 "action_by_right_multiplication_t" << endl;
132 induced_actions::action_by_right_multiplication *ABRM = A.
G.
ABRM;
137 cout <<
"induced_action_element_image_of "
138 "no subaction" << endl;
141 b = ABRM->compute_image(sub, Elt, a, verbose_level - 1);
145 cout <<
"induced_action_element_image_of "
146 "action_by_restriction_t" << endl;
148 induced_actions::action_by_restriction *ABR = A.
G.
ABR;
153 cout <<
"induced_action_element_image_of "
154 "no subaction" << endl;
158 cout <<
"induced_action_element_image_of "
159 "before ABR->compute_image a=" << a << endl;
160 cout <<
"verbose_level = " << verbose_level << endl;
162 b = ABR->compute_image(sub, Elt, a, verbose_level - 1);
166 cout <<
"induced_action_element_image_of "
167 "action_by_conjugation_t" << endl;
169 induced_actions::action_by_conjugation *ABC = A.
G.
ABC;
174 cout <<
"induced_action_element_image_of "
175 "no subaction" << endl;
178 b = ABC->compute_image(sub, Elt, a, verbose_level - 1);
182 cout <<
"induced_action_element_image_of "
183 "action_by_representation_t" << endl;
185 induced_actions::action_by_representation *Rep = A.
G.
Rep;
190 cout <<
"induced_action_element_image_of "
191 "no subaction" << endl;
194 b = Rep->compute_image_int(*sub, Elt, a, verbose_level - 1);
198 cout <<
"induced_action_element_image_of "
199 "action_on_determinant_t" << endl;
201 induced_actions::action_on_determinant *AD = A.
G.
AD;
206 cout <<
"induced_action_element_image_of "
207 "no subaction" << endl;
210 b = AD->compute_image(sub, Elt, a, verbose_level - 1);
214 cout <<
"induced_action_element_image_of "
215 "action_on_galois_group_t" << endl;
223 cout <<
"induced_action_element_image_of "
224 "action_on_sign_t" << endl;
226 induced_actions::action_on_sign *OnSign = A.
G.
OnSign;
232 cout <<
"induced_action_element_image_of "
233 "action_on_grassmannian_t" << endl;
235 induced_actions::action_on_grassmannian *AG = A.
G.
AG;
241 cout <<
"induced_action_element_image_of "
242 "no subaction" << endl;
245 b = AG->compute_image_int(sub, Elt, a, verbose_level - 1);
249 cout <<
"induced_action_element_image_of "
250 "action_on_spread_set_t" << endl;
252 induced_actions::action_on_spread_set *AS = A.
G.
AS;
258 cout <<
"induced_action_element_image_of "
259 "action_on_orthogonal_t" << endl;
261 induced_actions::action_on_orthogonal *AO = A.
G.
AO;
268 cout <<
"induced_action_element_image_of "
269 "no subaction" << endl;
273 b = AO->compute_image_int(Elt, a, verbose_level - 1);
277 cout <<
"induced_action_element_image_of "
278 "action_on_wedge_product_t" << endl;
280 induced_actions::action_on_wedge_product *AW = A.
G.
AW;
286 cout <<
"induced_action_element_image_of "
287 "no subaction" << endl;
290 b = AW->compute_image_int(*sub, Elt, a, verbose_level - 1);
294 cout <<
"induced_action_element_image_of "
295 "action_on_homogeneous_polynomials_t" << endl;
297 induced_actions::action_on_homogeneous_polynomials *OnHP = A.
G.
OnHP;
303 cout <<
"induced_action_element_image_of "
304 "action_by_subfield_structure_t" << endl;
306 induced_actions::action_by_subfield_structure *SubfieldStructure =
313 cout <<
"induced_action_element_image_of "
314 "no subaction" << endl;
317 b = SubfieldStructure->compute_image_int(
318 *sub, Elt, a, verbose_level - 1);
322 cout <<
"induced_action_element_image_of "
323 "action_on_cosets_t" << endl;
325 induced_actions::action_on_cosets *AC = A.
G.
OnCosets;
335 cout <<
"induced_action_element_image_of "
336 "action_on_factor_space_t" << endl;
338 induced_actions::action_on_factor_space *AF = A.
G.
AF;
344 cout <<
"induced_action_element_image_of "
345 "no subaction" << endl;
348 b = AF->compute_image(sub, Elt, a, verbose_level - 1);
352 cout <<
"induced_action_element_image_of "
353 "action_on_sets_t" << endl;
355 induced_actions::action_on_sets *AOS = A.
G.
on_sets;
360 cout <<
"induced_action_element_image_of "
361 "no subaction" << endl;
364 b = AOS->compute_image(sub, Elt, a, verbose_level - 1);
368 cout <<
"induced_action_element_image_of "
369 "action_on_set_partitions_t" << endl;
376 cout <<
"induced_action_element_image_of "
377 "action_on_subgroups_t" << endl;
379 induced_actions::action_on_subgroups *AOS = A.
G.
on_subgroups;
385 cout <<
"induced_action_element_image_of "
386 "action_on_k_subsets_t" << endl;
388 induced_actions::action_on_k_subsets *On_k_subsets = A.
G.
on_k_subsets;
393 cout <<
"induced_action_element_image_of "
394 "no subaction" << endl;
397 b = On_k_subsets->compute_image(Elt, a, verbose_level - 1);
401 cout <<
"induced_action_element_image_of "
402 "action_on_orbits_t" << endl;
404 induced_actions::action_on_orbits *On_orbits = A.
G.
OnOrbits;
410 cout <<
"induced_action_element_image_of "
411 "action_on_flags_t" << endl;
413 induced_actions::action_on_flags *On_flags = A.
G.
OnFlags;
419 cout <<
"induced_action_element_image_of "
420 "action_on_bricks_t" << endl;
422 induced_actions::action_on_bricks *On_bricks = A.
G.
OnBricks;
427 cout <<
"induced_action_element_image_of "
428 "no subaction" << endl;
431 b = On_bricks->compute_image(Elt, a, verbose_level - 1);
435 cout <<
"induced_action_element_image_of "
436 "action_on_andre_t" << endl;
438 induced_actions::action_on_andre *On_andre = A.
G.
OnAndre;
445 cout <<
"induced_action_element_image_of "
446 "no subaction" << endl;
451 b = On_andre->compute_image(Elt, a, verbose_level - 1);
455 cout <<
"induced_action_element_image_of "
456 "action_on_pairs_t" << endl;
464 cout <<
"induced_action_element_image_of "
465 "no subaction, type = action_on_pairs_t" << endl;
469 u = sub->element_image_of(i, elt, verbose_level - 1);
470 v = sub->element_image_of(j, elt, verbose_level - 1);
475 cout <<
"induced_action_element_image_of "
476 "action_on_ordered_pairs_t" << endl;
480 long int a2, b2, swap, swap2, i, j, tmp, u, v, u2, v2;
484 cout <<
"induced_action_element_image_of "
485 "no subaction, type = action_on_ordered_pairs_t" << endl;
496 u = sub->element_image_of(i, elt, verbose_level - 1);
497 v = sub->element_image_of(j, elt, verbose_level - 1);
508 b2 = Combi.
ij2k_lint(u2, v2, sub->degree);
511 cout <<
"induced_action_element_image_of "
512 "action_on_ordered_pairs_t" << endl;
513 cout << a <<
" -> " << b << endl;
514 cout <<
"(" << i <<
"," << j <<
") -> "
515 "(" << u <<
"," << v <<
")" << endl;
516 cout <<
"under" << endl;
517 sub->element_print(elt, cout);
523 cout <<
"induced_action_element_image_of base_change_t" << endl;
528 cout <<
"induced_action_element_image_of "
529 "no subaction, type = base_change_t" << endl;
532 b = sub->element_image_of(a, elt, verbose_level - 1);
536 cout <<
"induced_action_element_image_of product_action_t" << endl;
538 induced_actions::product_action *PA;
545 cout <<
"induced_action_element_image_of action_on_interior_direct_product_t" << endl;
547 induced_actions::action_on_interior_direct_product *IDP;
553 cout <<
"induced_action_element_image_of type_G "
554 "unknown:: type_G = " << A.
type_G << endl;
555 AG.action_print_symmetry_group_type(cout, A.
type_G);
556 cout <<
"action:" << endl;
561 cout <<
"induced_action_element_image_of type=";
562 AG.action_print_symmetry_group_type(cout, A.
type_G);
563 cout <<
" image of " << a <<
" is " << b << endl;
568static void induced_action_element_image_of_low_level(action &A,
569 int *input,
int *output,
void *elt,
int verbose_level)
571 int *Elt = (
int *) elt;
572 int f_v = (verbose_level >= 1);
575 cout <<
"induced_action_element_image_of_low_level "
576 "computing image of ";
578 cout <<
" in action " << A.label << endl;
582 cout <<
"action_by_right_multiplication_t" << endl;
585 cout <<
"induced_action_element_image_of_low_level "
586 "action_by_right_multiplication_t "
587 "not yet implemented" << endl;
590 action_by_right_multiplication *ABRM = A.G.ABRM;
595 cout <<
"induced_action_element_image_of "
596 "no subaction" << endl;
599 ABRM->compute_image(sub, Elt, a, b, verbose_level - 1);
604 cout <<
"action_by_restriction_t" << endl;
613 cout <<
"induced_action_element_image_of "
614 "type action_by_restriction_t, "
615 "no subaction" << endl;
618 sub->image_of_low_level(elt, input, output, verbose_level - 1);
622 cout <<
"action_by_conjugation_t" << endl;
624 cout <<
"induced_action_element_image_of_low_level "
625 "action_by_conjugation_t not yet implemented" << endl;
628 action_by_conjugation *ABC = A.G.ABC;
633 cout <<
"induced_action_element_image_of "
634 "no subaction" << endl;
637 ABC->compute_image(sub, Elt, a, b, verbose_level - 1);
642 cout <<
"action_by_representation_t" << endl;
644 induced_actions::action_by_representation *Rep = A.G.Rep;
650 cout <<
"induced_action_element_image_of "
651 "no subaction" << endl;
654 Rep->compute_image_int_low_level(*sub,
655 Elt, input, output, verbose_level - 1);
659 cout <<
"action_on_determinant_t" << endl;
661 cout <<
"induced_action_element_image_of_low_level "
662 "action_on_determinant_t not yet implemented" << endl;
667 cout <<
"action_on_galois_group_t" << endl;
669 cout <<
"induced_action_element_image_of_low_level "
670 "action_on_galois_group_t not yet implemented" << endl;
675 cout <<
"action_on_sign_t" << endl;
677 cout <<
"induced_action_element_image_of_low_level "
678 "action_on_sign_t not yet implemented" << endl;
683 cout <<
"action_on_grassmannian_t" << endl;
685 cout <<
"induced_action_element_image_of_low_level "
686 "action_on_grassmannian_t not yet implemented" << endl;
689 action_on_grassmannian *AG = A.G.AG;
695 cout <<
"induced_action_element_image_of "
696 "no subaction" << endl;
699 b = AG->compute_image_int(sub, Elt, a, verbose_level - 1);
704 cout <<
"action_on_spread_set_t" << endl;
706 induced_actions::action_on_spread_set *AS = A.G.AS;
708 AS->compute_image_low_level(Elt, input, output, verbose_level - 1);
712 cout <<
"action_on_orthogonal_t" << endl;
714 cout <<
"induced_action_element_image_of_low_level "
715 "action_on_orthogonal_t not yet implemented" << endl;
720 cout <<
"action_on_wedge_product_t" << endl;
722 induced_actions::action_on_wedge_product *AW = A.G.AW;
728 cout <<
"induced_action_element_image_of "
729 "no subaction" << endl;
732 AW->compute_image_int_low_level(*sub,
733 Elt, input, output, verbose_level - 1);
737 cout <<
"action_on_homogeneous_polynomials_t" << endl;
739 induced_actions::action_on_homogeneous_polynomials *OnHP = A.G.OnHP;
741 OnHP->compute_image_int_low_level(Elt,
742 input, output, verbose_level - 1);
746 cout <<
"action_by_subfield_structure_t" << endl;
748 induced_actions::action_by_subfield_structure *SubfieldStructure =
749 A.G.SubfieldStructure;
756 cout <<
"induced_action_element_image_of "
757 "no subaction" << endl;
760 SubfieldStructure->compute_image_int_low_level(*sub,
761 Elt, input, output, verbose_level - 1);
765 cout <<
"action_on_cosets_t" << endl;
767 cout <<
"induced_action_element_image_of_low_level "
768 "action_on_cosets_t not yet implemented" << endl;
773 cout <<
"action_on_factor_space_t" << endl;
775 cout <<
"induced_action_element_image_of_low_level "
776 "action_on_factor_space_t not yet implemented" << endl;
779 action_on_factor_space *AF = A.G.AF;
785 cout <<
"induced_action_element_image_of "
786 "no subaction" << endl;
789 b = AF->compute_image(sub, Elt, a, verbose_level - 1);
794 cout <<
"action_on_sets_t" << endl;
796 cout <<
"induced_action_element_image_of_low_level "
797 "action_on_sets_t not yet implemented" << endl;
802 cout <<
"induced_action_element_image_of "
803 "action_on_set_partitions_t" << endl;
809 cout <<
"action_on_subgroups_t" << endl;
811 cout <<
"induced_action_element_image_of_low_level "
812 "action_on_subgroups_t not yet implemented" << endl;
817 cout <<
"action_on_k_subsets_t" << endl;
819 cout <<
"induced_action_element_image_of_low_level "
820 "action_on_k_subsets_t not yet implemented" << endl;
825 cout <<
"action_on_bricks_t" << endl;
827 cout <<
"induced_action_element_image_of_low_level "
828 "action_on_bricks_t not yet implemented" << endl;
833 cout <<
"action_on_andre_t" << endl;
835 cout <<
"induced_action_element_image_of_low_level "
836 "action_on_andre_t not yet implemented" << endl;
841 cout <<
"action_on_pairs_t" << endl;
843 cout <<
"induced_action_element_image_of_low_level "
844 "action_on_pairs_t not yet implemented" << endl;
852 cout <<
"induced_action_element_image_of "
853 "no subaction, type = action_on_pairs_t" << endl;
856 k2ij(a, i, j, sub->degree);
857 u = sub->element_image_of(i, elt, verbose_level - 1);
858 v = sub->element_image_of(j, elt, verbose_level - 1);
859 b = ij2k(u, v, sub->degree);
864 cout <<
"action_on_ordered_pairs_t" << endl;
866 cout <<
"induced_action_element_image_of_low_level "
867 "action_on_ordered_pairs_t not yet implemented" << endl;
872 cout <<
"base_change_t" << endl;
874 cout <<
"induced_action_element_image_of_low_level "
875 "base_change_t not yet implemented" << endl;
881 cout <<
"induced_action_element_image_of "
882 "no subaction, type = base_change_t" << endl;
885 b = sub->element_image_of(a, elt, verbose_level - 1);
890 cout <<
"product_action_t" << endl;
892 cout <<
"induced_action_element_image_of_low_level "
893 "product_action_t not yet implemented" << endl;
898 PA = A.G.product_action_data;
899 b = PA->compute_image(&A, (
int *)elt, a, verbose_level - 1);
904 cout <<
"action_on_interior_direct_product_t" << endl;
908 cout <<
"action_on_interior_direct_product_t "
909 "not yet implemented" << endl;
913 cout <<
"induced_action_element_image_of_low_level "
914 "type_G unknown:: type_G = " << A.type_G << endl;
918 cout <<
"induced_action_element_image_of_low_level done" << endl;
921 cout <<
" in action " << A.label <<
" is ";
928static void induced_action_element_one(action &A,
929 void *elt,
int verbose_level)
931 int f_v = (verbose_level >= 1);
935 cout <<
"induced_action_element_one ";
938 induced_actions::product_action *PA;
940 PA = A.G.product_action_data;
941 PA->element_one(&A, (
int *) elt, verbose_level);
946 cout <<
"induced_action_element_one "
947 "no subaction" << endl;
950 sub->element_one(elt, verbose_level);
954static int induced_action_element_is_one(action &A,
955 void *elt,
int verbose_level)
957 int f_v = (verbose_level >= 1);
961 cout <<
"induced_action_element_is_one ";
964 induced_actions::product_action *PA;
966 PA = A.G.product_action_data;
967 return PA->element_is_one(&A, (
int *) elt, verbose_level);
972 cout <<
"induced_action_element_is_one "
973 "no subaction" << endl;
976 return sub->element_is_one(elt, verbose_level);
980static void induced_action_element_unpack(action &A,
981 void *elt,
void *Elt,
int verbose_level)
983 int f_v = (verbose_level >= 1);
987 cout <<
"induced_action_element_unpack" << endl;
990 induced_actions::product_action *PA;
992 PA = A.G.product_action_data;
993 PA->element_unpack((
uchar *)elt, (
int *)Elt, verbose_level);
998 cout <<
"induced_action_element_unpack "
999 "no subaction" << endl;
1002 sub->element_unpack(elt, Elt, verbose_level);
1006static void induced_action_element_pack(action &A,
1007 void *Elt,
void *elt,
int verbose_level)
1009 int f_v = (verbose_level >= 1);
1013 cout <<
"induced_action_element_pack" << endl;
1016 induced_actions::product_action *PA;
1018 PA = A.G.product_action_data;
1019 PA->element_pack((
int *)Elt, (
uchar *)elt, verbose_level);
1024 cout <<
"induced_action_element_pack "
1025 "no subaction" << endl;
1028 sub->element_pack(Elt, elt, verbose_level);
1032static void induced_action_element_retrieve(action &A,
1033 int hdl,
void *elt,
int verbose_level)
1035 int f_v = (verbose_level >= 1);
1039 cout <<
"induced_action_element_retrieve" << endl;
1042 induced_actions::product_action *PA;
1044 PA = A.G.product_action_data;
1045 PA->element_retrieve(&A, hdl,
1046 (
int *)elt, verbose_level);
1051 cout <<
"induced_action_element_retrieve "
1052 "no subaction" << endl;
1055 sub->element_retrieve(hdl, elt, verbose_level);
1059static int induced_action_element_store(action &A,
1060 void *elt,
int verbose_level)
1062 int f_v = (verbose_level >= 1);
1066 cout <<
"induced_action_element_store" << endl;
1069 induced_actions::product_action *PA;
1071 PA = A.G.product_action_data;
1072 return PA->element_store(&A, (
int *)elt, verbose_level);
1077 cout <<
"induced_action_element_store "
1078 "no subaction" << endl;
1081 return sub->element_store(elt, verbose_level);
1085static void induced_action_element_mult(action &A,
1086 void *a,
void *b,
void *ab,
int verbose_level)
1088 int f_v = (verbose_level >= 1);
1092 cout <<
"induced_action_element_mult" << endl;
1095 induced_actions::product_action *PA;
1097 PA = A.G.product_action_data;
1098 PA->element_mult((
int *)a, (
int *)b, (
int *)ab, verbose_level);
1103 cout <<
"induced_action_element_mult "
1104 "no subaction" << endl;
1107 sub->element_mult(a, b, ab, verbose_level);
1110 cout <<
"induced_action_element_mult done" << endl;
1114static void induced_action_element_invert(action &A,
1115 void *a,
void *av,
int verbose_level)
1117 int f_v = (verbose_level >= 1);
1121 cout <<
"induced_action_element_invert" << endl;
1124 induced_actions::product_action *PA;
1126 PA = A.G.product_action_data;
1127 PA->element_invert((
int *)a, (
int *)av,
1133 cout <<
"induced_action_element_invert "
1134 "no subaction" << endl;
1137 sub->element_invert(a, av, verbose_level);
1141static void induced_action_element_transpose(action &A,
1142 void *a,
void *at,
int verbose_level)
1144 int f_v = (verbose_level >= 1);
1148 cout <<
"induced_action_element_transpose" << endl;
1151 induced_actions::product_action *PA;
1153 PA = A.G.product_action_data;
1154 PA->element_transpose((
int *)a, (
int *)at,
1160 cout <<
"induced_action_element_transpose "
1161 "no subaction" << endl;
1164 sub->element_transpose(a, at, verbose_level);
1168static void induced_action_element_move(action &A,
1169 void *a,
void *b,
int verbose_level)
1171 int f_v = (verbose_level >= 1);
1175 cout <<
"induced_action_element_move" << endl;
1178 induced_actions::product_action *PA;
1180 PA = A.G.product_action_data;
1181 PA->element_move((
int *)a, (
int *)b,
1187 cout <<
"induced_action_element_move "
1188 "no subaction" << endl;
1191 sub->element_move(a, b, verbose_level);
1195static void induced_action_element_dispose(action &A,
1196 int hdl,
int verbose_level)
1198 int f_v = (verbose_level >= 1);
1202 cout <<
"induced_action_element_dispose" << endl;
1213 cout <<
"induced_action_element_dispose "
1214 "no subaction" << endl;
1217 sub->element_dispose(hdl, verbose_level);
1221static void induced_action_element_print(action &A,
1222 void *elt, ostream &ost)
1225 induced_actions::product_action *PA;
1227 PA = A.G.product_action_data;
1228 PA->element_print((
int *)elt, ost);
1230 else if (A.f_has_subaction) {
1234 cout <<
"induced_action_element_print "
1235 "no subaction" << endl;
1238 sub->element_print_quick(elt, ost);
1246 n = sub->find_fixed_points(elt, fp, 0);
1247 ost <<
"with " << n <<
" fixed points in action "
1248 << sub->label << endl;
1250 sub->element_print_base_images((
int *)elt, ost);
1256 cout <<
"induced_action_element_print "
1257 "not of type product_action_t and "
1258 "no subaction" << endl;
1263static void induced_action_element_print_quick(action &A,
1264 void *elt, ostream &ost)
1267 induced_actions::product_action *PA;
1269 PA = A.G.product_action_data;
1270 PA->element_print((
int *)elt, ost);
1272 else if (A.f_has_subaction) {
1276 cout <<
"induced_action_element_print "
1277 "no subaction" << endl;
1280 sub->element_print_quick(elt, ost);
1284 cout <<
"induced_action_element_print_quick "
1285 "not of type product_action_t and "
1286 "no subaction" << endl;
1291static void induced_action_element_print_latex(action &A,
1292 void *elt, ostream &ost)
1295 induced_actions::product_action *PA;
1297 PA = A.G.product_action_data;
1298 PA->element_print_latex((
int *)elt, ost);
1304 cout <<
"induced_action_element_print_latex "
1305 "no subaction" << endl;
1308 sub->element_print_latex(elt, ost);
1312static void induced_action_element_print_latex_with_print_point_function(
1314 void *elt, std::ostream &ost,
1315 void (*point_label)(std::stringstream &sstr,
long int pt,
void *data),
1316 void *point_label_data)
1319 int *Elt = (
int *) elt;
1324 cout <<
"induced_action_element_print_latex_with_print_point_function "
1325 "degree = " << A.degree << endl;
1328 for (i = 0; i < A.degree; i++) {
1335 j = A.element_image_of(i, Elt, 0 );
1341 A.degree, point_label, point_label_data);
1351 PA = A.G.product_action_data;
1352 PA->element_print_latex((
int *)elt, ost);
1358 cout <<
"induced_action_element_print_latex "
1359 "no subaction" << endl;
1362 sub->element_print_latex_with_print_point_function(
1363 elt, ost, point_label, point_label_data);
1369static void induced_action_element_print_verbose(action &A,
1370 void *elt, ostream &ost)
1373 induced_actions::product_action *PA;
1375 PA = A.G.product_action_data;
1376 PA->element_print((
int *)elt, ost);
1383 cout <<
"induced_action_element_print_verbose "
1384 "no subaction" << endl;
1387 sub->element_print_verbose(elt, ost);
1391static void induced_action_element_code_for_make_element(action &A,
1392 void *elt,
int *data)
1402 cout <<
"induced_action_element_code_for_"
1403 "make_element no subaction" << endl;
1406 sub->element_code_for_make_element(elt, data);
1410static void induced_action_element_print_for_make_element(action &A,
1411 void *elt, ostream &ost)
1421 cout <<
"induced_action_element_print_for_"
1422 "make_element no subaction" << endl;
1425 sub->element_print_for_make_element(elt, ost);
1429static void induced_action_element_print_for_make_element_no_commas(
1430 action &A,
void *elt, ostream &ost)
1440 cout <<
"induced_action_element_print_for_"
1441 "make_element_no_commas no subaction" << endl;
1444 sub->element_print_for_make_element_no_commas(elt, ost);
1448static void induced_action_print_point(action &A,
1449 long int a, ostream &ost)
1454 cout <<
"induced_action_print_point type=";
1455 AG.action_print_symmetry_group_type(cout, A.type_G);
1465 cout <<
"induced_action_print_point no subaction" << endl;
1477 cout <<
"induced_action_print_point no subaction" << endl;
1489 cout <<
"induced_action_print_point no subaction" << endl;
1501 cout <<
"induced_action_print_point no subaction" << endl;
1516 induced_actions::action_on_sets *AOS = A.G.on_sets;
1523 cout <<
"induced_action_print_point no subaction" << endl;
1529 for (i = 0; i < AOS->set_size; i++) {
1530 ost <<
"$$" << endl;
1531 ost <<
"$$" << endl;
1532 b = AOS->sets[AOS->perm[a]][i];
1533 sub->print_point(b, ost);
1548 cout <<
"induced_action_print_point no subaction" << endl;
1560 cout <<
"induced_action_print_point no subaction" << endl;
1572 cout <<
"induced_action_print_point no subaction" << endl;
1583 cout <<
"induced_action_print_point no subaction" << endl;
1595 cout <<
"induced_action_print_point "
1596 "no subaction, type = action_on_pairs_t" << endl;
1599 Combi.
k2ij(a, i, j, sub->degree);
1600 cout <<
"a={" << i <<
"," << j <<
"}";
1605 int a2, swap, tmp, i, j;
1609 cout <<
"induced_action_print_point "
1610 "no subaction, type = action_on_ordered_pairs_t" << endl;
1615 Combi.
k2ij(a2, i, j, sub->degree);
1621 cout <<
"a=(" << i <<
"," << j <<
")";
1627 cout <<
"induced_action_print_point "
1628 "no subaction, type = base_change_t" << endl;
1641 cout <<
"action_on_grassmannian_t" << endl;
1643 induced_actions::action_on_grassmannian *AG = A.G.AG;
1650 cout <<
"induced_action_print_point "
1651 "no subaction" << endl;
1656 AG->print_point(a, ost);
1661 cout <<
"action_on_spread_set_t" << endl;
1669 cout <<
"action_on_orthogonal_t" << endl;
1680 cout <<
"induced_action_print_point no subaction" << endl;
1688 cout <<
"action_on_interior_direct_product_t" << endl;
1690 induced_actions::action_on_interior_direct_product *IDP;
1693 IDP = A.G.OnInteriorDirectProduct;
1694 i = a / IDP->nb_cols;
1695 j = a % IDP->nb_cols;
1696 ost <<
"(" << i <<
"," << j <<
")";
1699 cout <<
"induced_action_print_point type_G unknown:: type_G = ";
1700 AG.action_print_symmetry_group_type(cout, A.type_G);
1707static void induced_action_unrank_point(action &A,
long int rk,
int *v)
1718 cout <<
"induced_action_unrank_point no subaction" << endl;
1725 induced_actions::action_by_restriction *ABR = A.G.ABR;
1730 cout <<
"induced_action_unrank_point no subaction" << endl;
1734 rk0 = ABR->original_point(rk);
1735 sub->unrank_point(rk0, v);
1743 cout <<
"induced_action_unrank_point no subaction" << endl;
1755 cout <<
"induced_action_unrank_point no subaction" << endl;
1775 cout <<
"induced_action_unrank_point no subaction" << endl;
1792 cout <<
"induced_action_unrank_point no subaction" << endl;
1804 cout <<
"induced_action_unrank_point no subaction" << endl;
1816 cout <<
"induced_action_unrank_point no subaction" << endl;
1827 cout <<
"induced_action_unrank_point no subaction" << endl;
1838 cout <<
"induced_action_unrank_point "
1839 "no subaction, type = action_on_pairs_t" << endl;
1851 cout <<
"induced_action_unrank_point "
1852 "no subaction, type = action_on_ordered_pairs_t" << endl;
1858 k2ij(a2, i, j, sub->degree);
1864 cout <<
"a=(" << i <<
"," << j <<
")";
1871 cout <<
"induced_action_unrank_point "
1872 "no subaction, type = base_change_t" << endl;
1885 cout <<
"action_on_grassmannian_t" << endl;
1887 induced_actions::action_on_grassmannian *AG = A.G.AG;
1889 AG->unrank(rk, v, 0 );
1893 cout <<
"action_on_spread_set_t" << endl;
1901 cout <<
"action_on_orthogonal_t" << endl;
1903 induced_actions::action_on_orthogonal *AO = A.G.AO;
1905 AO->unrank_point(v, rk);
1913 cout <<
"induced_action_unrank_point no subaction" << endl;
1921 cout <<
"induced_action_unrank_point "
1922 "action_on_wedge_product_t" << endl;
1924 induced_actions::action_on_wedge_product *AW = A.G.AW;
1930 cout <<
"induced_action_unrank_point "
1931 "no subaction" << endl;
1934 AW->unrank_point(v, rk);
1939 cout <<
"induced_action_unrank_point "
1940 "action_by_representation_t" << endl;
1942 induced_actions::action_by_representation *Rep = A.G.Rep;
1944 Rep->unrank_point(rk, v, 0 );
1948 cout <<
"induced_action_unrank_point type_G unknown:: type_G = ";
1949 AG.action_print_symmetry_group_type(cout, A.type_G);
1956static long int induced_action_rank_point(action &A,
int *v)
1968 cout <<
"induced_action_rank_point no subaction" << endl;
1975 induced_actions::action_by_restriction *ABR = A.G.ABR;
1980 cout <<
"induced_action_rank_point no subaction" << endl;
1984 rk0 = sub->rank_point(v);
1985 rk = ABR->restricted_point_idx(rk0);
1993 cout <<
"induced_action_rank_point no subaction" << endl;
2005 cout <<
"induced_action_rank_point no subaction" << endl;
2025 cout <<
"induced_action_rank_point no subaction" << endl;
2042 cout <<
"induced_action_rank_point no subaction" << endl;
2054 cout <<
"induced_action_rank_point no subaction" << endl;
2066 cout <<
"induced_action_rank_point no subaction" << endl;
2077 cout <<
"induced_action_rank_point no subaction" << endl;
2088 cout <<
"induced_action_rank_point "
2089 "no subaction, type = action_on_pairs_t" << endl;
2101 cout <<
"induced_action_rank_point "
2102 "no subaction, type = action_on_ordered_pairs_t" << endl;
2108 k2ij(a2, i, j, sub->degree);
2114 cout <<
"a=(" << i <<
"," << j <<
")";
2121 cout <<
"induced_action_rank_point "
2122 "no subaction, type = base_change_t" << endl;
2135 cout <<
"action_on_grassmannian_t" << endl;
2144 cout <<
"induced_action_rank_point "
2145 "no subaction" << endl;
2155 cout <<
"action_on_spread_set_t" << endl;
2163 cout <<
"action_on_orthogonal_t" << endl;
2165 induced_actions::action_on_orthogonal *AO = A.G.AO;
2167 rk = AO->rank_point(v);
2175 cout <<
"induced_action_rank_point no subaction" << endl;
2183 cout <<
"induced_action_rank_point "
2184 "action_on_wedge_product_t" << endl;
2186 induced_actions::action_on_wedge_product *AW = A.G.AW;
2192 cout <<
"induced_action_rank_point "
2193 "no subaction" << endl;
2196 rk = AW->rank_point(v);
2201 cout <<
"induced_action_rank_point "
2202 "action_by_representation_t" << endl;
2204 induced_actions::action_by_representation *Rep = A.G.Rep;
2206 rk = Rep->rank_point(v, 0 );
2210 cout <<
"induced_action_rank_point type_G unknown:: type_G = ";
2211 AG.action_print_symmetry_group_type(cout, A.type_G);
a collection of combinatorial functions
long int ij2k_lint(long int i, long int j, long int n)
void perm_print_with_print_point_function(std::ostream &ost, int *a, int n, void(*point_label)(std::stringstream &sstr, long int pt, void *data), void *point_label_data)
void k2ij(int k, int &i, int &j, int n)
void k2ij_lint(long int k, long int &i, long int &j, long int n)
global functions related to group actions
long int(* ptr_rank_point)(action &A, int *v)
void(* ptr_element_print_for_make_element)(action &A, void *elt, std::ostream &ost)
void(* ptr_element_dispose)(action &A, int hdl, int verbose_level)
int(* ptr_element_linear_entry_frobenius)(action &A, void *elt, int verbose_level)
void(* ptr_unrank_point)(action &A, long int rk, int *v)
void(* ptr_element_transpose)(action &A, void *a, void *at, int verbose_level)
void(* ptr_element_print)(action &A, void *elt, std::ostream &ost)
void(* ptr_element_print_latex_with_print_point_function)(action &A, void *elt, std::ostream &ost, void(*point_label)(std::stringstream &sstr, long int pt, void *data), void *point_label_data)
void(* ptr_element_print_quick)(action &A, void *elt, std::ostream &ost)
int(* ptr_element_linear_entry_ij)(action &A, void *elt, int i, int j, int verbose_level)
void(* ptr_element_unpack)(action &A, void *elt, void *Elt, int verbose_level)
void(* ptr_element_move)(action &A, void *a, void *b, int verbose_level)
void(* ptr_element_image_of_low_level)(action &A, int *input, int *output, void *elt, int verbose_level)
int(* ptr_element_is_one)(action &A, void *elt, int verbose_level)
long int(* ptr_element_image_of)(action &A, long int a, void *elt, int verbose_level)
void(* ptr_element_print_for_make_element_no_commas)(action &A, void *elt, std::ostream &ost)
void(* ptr_print_point)(action &A, long int i, std::ostream &ost)
void(* ptr_element_invert)(action &A, void *a, void *av, int verbose_level)
void(* ptr_element_print_latex)(action &A, void *elt, std::ostream &ost)
void(* ptr_element_one)(action &A, void *elt, int verbose_level)
void(* ptr_element_print_verbose)(action &A, void *elt, std::ostream &ost)
void(* ptr_element_code_for_make_element)(action &A, void *elt, int *data)
void(* ptr_element_retrieve)(action &A, int hdl, void *elt, int verbose_level)
void(* ptr_element_pack)(action &A, void *Elt, void *elt, int verbose_level)
int(* ptr_element_store)(action &A, void *elt, int verbose_level)
void init_function_pointers_induced_action()
void(* ptr_element_mult)(action &A, void *a, void *b, void *ab, int verbose_level)
a permutation group in a fixed action.
symmetry_group_type type_G
long int compute_image(int *Elt, long int i, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
long int compute_image_int(int *Elt, long int a, int verbose_level)
long int compute_image(int *Elt, long int a, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
long int compute_image(int *Elt, long int a, int verbose_level)
long int compute_image(int *Elt, long int i, int verbose_level)
long int compute_image_int(int *Elt, long int rk, int verbose_level)
long int compute_image(int *Elt, long int a, int verbose_level)
long int compute_image(actions::action *A, int *Elt, long int i, int verbose_level)
#define Lint_vec_print(A, B, C)
#define Int_vec_print(A, B, C)
@ action_by_restriction_t
@ action_on_factor_space_t
@ action_on_galois_group_t
@ action_by_representation_t
@ action_on_grassmannian_t
@ action_on_homogeneous_polynomials_t
@ action_on_wedge_product_t
@ action_on_interior_direct_product_t
@ action_by_conjugation_t
@ action_by_right_multiplication_t
@ action_on_set_partitions_t
@ action_on_ordered_pairs_t
@ action_by_subfield_structure_t
@ action_on_determinant_t
the orbiter library for the classification of combinatorial objects
induced_actions::action_on_galois_group * on_Galois_group
induced_actions::action_by_restriction * ABR
induced_actions::action_on_orbits * OnOrbits
induced_actions::action_on_sign * OnSign
induced_actions::action_on_homogeneous_polynomials * OnHP
induced_actions::action_on_spread_set * AS
induced_actions::action_on_wedge_product * AW
induced_actions::action_by_conjugation * ABC
induced_actions::action_by_representation * Rep
induced_actions::action_on_interior_direct_product * OnInteriorDirectProduct
induced_actions::action_on_bricks * OnBricks
induced_actions::action_by_subfield_structure * SubfieldStructure
induced_actions::action_on_grassmannian * AG
induced_actions::action_on_flags * OnFlags
induced_actions::product_action * product_action_data
induced_actions::action_on_sets * on_sets
induced_actions::action_on_set_partitions * OnSetPartitions
induced_actions::action_on_determinant * AD
induced_actions::action_by_right_multiplication * ABRM
induced_actions::action_on_orthogonal * AO
induced_actions::action_on_subgroups * on_subgroups
induced_actions::action_on_factor_space * AF
induced_actions::action_on_cosets * OnCosets
induced_actions::action_on_andre * OnAndre
induced_actions::action_on_k_subsets * on_k_subsets