16namespace layer5_applications {
88 int verbose_level = 1;
89 int f_v = (verbose_level >= 1);
93 cout <<
"semifield_level_two::~semifield_level_two" << endl;
104 cout <<
"semifield_level_two::~semifield_level_two before Basis" << endl;
132 cout <<
"semifield_level_two::~semifield_level_two before class_rep_rank" << endl;
177 cout <<
"semifield_level_two::~semifield_level_two before f_Fusion" << endl;
185 cout <<
"semifield_level_two::~semifield_level_two before Fusion_idx" << endl;
194 cout <<
"semifield_level_two::~semifield_level_two before Fusion_elt" << endl;
207 cout <<
"semifield_level_two::~semifield_level_two before defining_flag_orbit" << endl;
215 cout <<
"semifield_level_two::~semifield_level_two before So" << endl;
223 cout <<
"semifield_level_two::~semifield_level_two before Fo" << endl;
231 cout <<
"semifield_level_two::~semifield_level_two before Pt" << endl;
240 cout <<
"semifield_level_two::~semifield_level_two before Go" << endl;
249 cout <<
"semifield_level_two::~semifield_level_two before Stabilizer_gens" << endl;
325 cout <<
"semifield_level_two::~semifield_level_two done" << endl;
334 int f_v = (verbose_level >= 1);
339 cout <<
"semifield_level_two::init" << endl;
356 cout <<
"semifield_level_two::init "
357 "the order of GL(" <<
k <<
"," <<
q <<
") "
364 cout <<
"semifield_level_two::init "
365 "before M->init_gl_classes M->n=" <<
M->
n << endl;
369 cout <<
"semifield_level_two::init "
370 "after M->init_gl_classes" << endl;
412 cout <<
"semifield_starter::init done" << endl;
419 int f_v = (verbose_level >= 1);
420 int f_vv = (verbose_level >= 2);
424 cout <<
"semifield_level_two::init_desired_pivots" << endl;
428 for (i = 0; i <
k; i++) {
437 cout <<
"semifield_level_two::init_desired_pivots "
443 cout <<
"semifield_level_two::init_desired_pivots done" << endl;
448 int c,
int verbose_level)
451 int f_v = (verbose_level >= 1);
452 int f_vv = (verbose_level >= 2);
461 cout <<
"semifield_starter::list_all_elements_in_conjugacy_class "
475 cout <<
"creating sims:" << endl;
481 cout <<
"Sims object for centralizer of order "
482 << Co <<
" has been created, transversal lengths are ";
491 cout <<
"Class " << c <<
" has length " << Cl <<
":" << endl;
498 for (rk = 0; rk < cl; rk++) {
501 cout <<
"element " << rk <<
" / " << cl <<
":" << endl;
515 cout <<
"Has rank " << r << endl;
520 cout <<
"Coset representative:" << endl;
526 cout <<
"The elements of class " << c <<
" are: ";
534 cout <<
"semifield_level_two::list_all_elements_in_conjugacy_class done" << endl;
541 int f_v = (verbose_level >= 1);
544 cout <<
"semifield_level_two::compute_level_two, nb_stages=" << nb_stages << endl;
547 if (nb_stages >= 1) {
549 cout <<
"semifield_level_two::compute_level_two "
550 "before downstep" << endl;
554 cout <<
"semifield_level_two::compute_level_two "
560 if (nb_stages >= 2) {
562 cout <<
"semifield_level_two::compute_level_two compute the stabilizers." << endl;
568 cout <<
"semifield_level_two::compute_level_two "
569 "before compute_stabilizers_downstep" << endl;
573 cout <<
"semifield_level_two::compute_level_two "
574 "after compute_stabilizers_downstep" << endl;
578 if (nb_stages >= 3) {
580 cout <<
"semifield_level_two::compute_level_two "
581 "before upstep" << endl;
583 upstep(verbose_level - 1);
585 cout <<
"semifield_level_two::compute_level_two "
586 "after upstep, nb_orbits=" <<
nb_orbits << endl;
590 if (nb_stages >= 4) {
592 cout <<
"semifield_level_two::compute_level_two "
593 "before write_level_info_file" << endl;
597 cout <<
"semifield_level_two::compute_level_two "
598 "after write_level_info_file" << endl;
603 cout <<
"semifield_level_two::compute_level_two done" << endl;
611 int f_v = (verbose_level >= 1);
612 int f_vv = (verbose_level >= 2);
616 cout <<
"semifield_level_two::downstep" << endl;
620 cout <<
"semifield_level_two::downstep "
621 "before make_classes" << endl;
626 cout <<
"semifield_level_two::downstep "
634 cout <<
"semifield_level_two::downstep after "
635 "C->make_classes nb_classes = " <<
nb_classes << endl;
639 if (f_write_class_reps) {
641 const char *fname =
"Class_reps.tex";
642 C->
report(fname, verbose_level);
645 const char *fname =
"Class_reps.tex";
650 fp <<
"\\section{Conjugacy Classes}" << endl;
652 fp <<
"Representative " << i <<
" / "
662 cout <<
"semifield_level_two::downstep "
663 "after make_classes" << endl;
676 cout <<
"semifield_level_two::downstep "
677 "class " << i <<
" / " <<
nb_classes <<
" :" << endl;
683 cout <<
"representative:" << endl;
701 cout <<
"semifield_level_two::downstep "
702 "class " << i <<
" before identify_matrix" << endl;
708 cout <<
"class_rep_plus_I_Basis[i]" << endl;
715 cout <<
"R_i_plus_I_class_idx[i]="
722 cout <<
"class_rep_plus_I_Basis_inv[i]" << endl;
728 int f_elements_exponential =
FALSE;
729 string symbol_for_print;
732 symbol_for_print.assign(
"\\alpha");
734 cout <<
"Representative R_i of class " << i
738 "to conjugacy class "
741 cout <<
"R_i:" << endl;
742 int_matrix_print(
Elt,
k,
k);
743 cout <<
"R_i + I:" << endl;
744 int_matrix_print(
Elt2,
k,
k);
746 cout <<
"class_rep_plus_I_Basis_inv[i]:" << endl;
748 cout <<
"$$" << endl;
749 cout <<
"\\left[" << endl;
753 cout <<
"\\right]" << endl;
754 cout <<
"$$" << endl;
789 for (j = 0; j < 2; j++) {
804 cout <<
"semifield_level_two::downstep done" << endl;
811 int f_v = (verbose_level >= 1);
812 int f_vv = (verbose_level >= 2);
817 cout <<
"semifield_level_two::compute_stabilizers_downstep, "
818 "verbose_level=" << verbose_level << endl;
825 cout <<
"semifield_level_two::compute_stabilizers_downstep "
837 cout <<
"semifield_level_two::compute_stabilizers_downstep "
839 <<
" before Flag_orbit_stabilizer[i].init_centralizer_of_matrix" << endl;
845 cout <<
"semifield_level_two::compute_stabilizers_downstep "
847 <<
" after Flag_orbit_stabilizer[i].init_centralizer_of_matrix" << endl;
851 cout <<
"centralizer:" << endl;
857 cout <<
"semifield_level_two::compute_stabilizers_downstep "
859 <<
" a == b, extending Flag_orbit_stabilizer[i]" << endl;
873 2 , verbose_level - 3);
878 cout <<
"semifield_level_two::compute_stabilizers_downstep "
880 <<
" a == b, extending Flag_orbit_stabilizer[i] done" << endl;
887 cout <<
"semifield_level_two::compute_stabilizers_downstep "
893 for (j = 0; j < 2; j++) {
896 cout <<
" : nb of matrices = "
899 <<
" stab order = " << go;
902 cout <<
"i : class_to_flag_orbit" << endl;
908 cout <<
"Stabilizers of middle object:" << endl;
914 <<
" has stabilizer order " << go << endl;
921 cout <<
"semifield_level_two::compute_stabilizers_downstep "
929 int f_v = (verbose_level >= 1);
930 int f_vv = (verbose_level >= 2);
932 int f, coset, idx, i;
936 cout <<
"semifield_level_two::upstep "
938 <<
" verbose_level = " << verbose_level << endl;
955 cout <<
"semifield_level_two::upstep "
962 cout <<
"semifield_level_two::upstep "
978 cout <<
"working on new up orbit " <<
nb_orbits
979 <<
" copying stabilizer over idx=" << idx << endl;
983 cout <<
"semifield_level_two::upstep "
985 <<
" before setup_stabilizer" << endl;
1003 cout <<
"semifield_level_two::upstep "
1005 <<
" after setup_stabilizer" << endl;
1010 cout <<
"semifield_level_two::upstep f=" << f << endl;
1018 for (coset = 0; coset < 2; coset++) {
1024 cout <<
"semifield_level_two::upstep "
1026 <<
" coset=" << coset <<
" / " << 2 << endl;
1030 cout <<
"semifield_level_two::upstep "
1032 <<
" coset=" << coset <<
" / " << 2 <<
" before trace(a, b)" << endl;
1034 trace(f, coset, a, b,
1035 f_automorphism, Aut, verbose_level - 3);
1037 cout <<
"semifield_level_two::upstep "
1039 <<
" coset=" << coset <<
" / " << 2 <<
" after trace" << endl;
1044 cout <<
"semifield_level_two::upstep "
1046 <<
" coset=" << coset <<
" / " << 2 <<
" before trace(b, a)" << endl;
1048 trace(f, coset, b, a,
1049 f_automorphism, Aut, verbose_level - 3);
1051 cout <<
"semifield_level_two::upstep "
1053 <<
" coset=" << coset <<
" / " << 2 <<
" after trace" << endl;
1056 if (f_automorphism) {
1058 cout <<
"semifield_level_two::upstep "
1060 <<
" coset=" << coset <<
" / " << 2 <<
" found automorphism" << endl;
1062 Aut_gens[nb_aut_gens++] = Aut;
1067 cout <<
"semifield_level_two::upstep After tracing, we found " << nb_aut_gens
1068 <<
" automorphisms" << endl;
1074 cout <<
"semifield_level_two::upstep After tracing, "
1075 "creating coset reps" << endl;
1078 coset_reps->
init(
A, verbose_level - 2);
1079 coset_reps->
allocate(nb_aut_gens + 1, verbose_level - 2);
1081 for (i = 0; i < nb_aut_gens; i++) {
1088 cout <<
"semifield_level_two::upstep We are now extending the group by a factor "
1089 "of " << nb_aut_gens + 1 <<
":" << endl;
1093 coset_reps, nb_aut_gens + 1, verbose_level - 3);
1102 cout <<
"semifield_level_two::upstep The new group order is " << go << endl;
1105 cout <<
"semifield_level_two::upstep generators:" << endl;
1139 cout <<
"semifield_level_two::upstep We found "
1140 <<
nb_orbits <<
" orbits at level two" << endl;
1143 cout <<
"i : defining_flag_orbit[i] : go" << endl;
1159 cout <<
"semifield_level_two::upstep The representative of class " << idx
1160 <<
" is the following matrix of rank " << a << endl;
1162 cout <<
"semifield_level_two::upstep The stabilizer has order " << go << endl;
1164 cout <<
"The stabilizer is generated by the "
1165 "following matrices:" << endl;
1171 cout <<
"creating sims:" << endl;
1175 cout <<
"Sims object for group of order " << go1
1176 <<
" has been created, transversal lengths are ";
1177 S->print_transversal_lengths();
1189 cout <<
"semifield_level_two::upstep summary of "
1193 cout <<
"down orbit " << f <<
" is fused to down "
1195 "the element" << endl;
1197 cout <<
"Fusion element:" << endl;
1202 cout <<
"down orbit " << f <<
" is associated "
1208 cout <<
"semifield_level_two::upstep done" << endl;
1213 long int a,
long int b,
int &f_automorphism,
int *&Aut,
1217 int f_v = (verbose_level >= 1);
1218 int f_vv = (verbose_level >= 2);
1223 int d1, d2, d, cc1, cc2;
1226 cout <<
"semifield_level_two::trace a=" << a <<
" b=" << b <<
" f=" << f << endl;
1229 f_automorphism =
FALSE;
1236 cout <<
"semifield_level_two::trace c1=" << c1 <<
" c2=" << c2
1237 <<
" rk1=" << rk1 <<
" rk2=" << rk2
1238 <<
" a=" << a <<
" b=" << b << endl;
1248 for (i = 0; i <
k; i++) {
1249 for (j = 0; j <
k; j++) {
1253 for (i =
k; i <
n; i++) {
1257 cout <<
"semifield_level_two::trace transformation matrix Mtx1=" << endl;
1259 cout <<
"semifield_level_two::trace transformation matrix M1=" << endl;
1265 cout <<
"semifield_level_two::trace ELT1=" << endl;
1275 cout <<
"semifield_level_two::trace Mtx4 "
1276 "is not the identity matrix" << endl;
1280 cout <<
"semifield_level_two::trace after transform Mtx4=" << endl;
1282 cout <<
"semifield_level_two::trace after transform Mtx5=" << endl;
1284 cout <<
"semifield_level_two::trace after transform Mtx6=" << endl;
1289 cout <<
"semifield_level_two::trace before identify_matrix Mtx5" << endl;
1293 cout <<
"semifield_level_two::trace before identify_matrix Mtx6" << endl;
1298 cout <<
"semifield_level_two::trace before find_class_rep R1" << endl;
1302 cout <<
"semifield_level_two::trace before find_class_rep R2" << endl;
1307 cout <<
"semifield_level_two::trace f=" << f
1308 <<
" c1=" << c1 <<
" c2=" << c2 <<
" coset=" << coset
1309 <<
" rk1=" << rk1 <<
" rk2=" << rk2
1310 <<
" idx1 = " << idx1 <<
" idx2 = " << idx2 << endl;
1314 if (idx1 == c1 || idx1 == c2) {
1316 cout <<
"semifield_level_two::trace automorphism" << endl;
1328 cout <<
"semifield_level_two::trace after transform (2) Mtx4=" << endl;
1330 cout <<
"semifield_level_two::trace after transform (2) Mtx5=" << endl;
1332 cout <<
"semifield_level_two::trace after transform (2) Mtx6=" << endl;
1337 if (c1 != c2 && idx1 == c2) {
1339 cout <<
"semifield_level_two::trace multiplying Basis_inv to the right" << endl;
1356 cout <<
"semifield_level_two::trace after transform (3) Mtx4=" << endl;
1358 cout <<
"semifield_level_two::trace after transform (3) Mtx5=" << endl;
1360 cout <<
"semifield_level_two::trace after transform (3) Mtx6=" << endl;
1375 image1 = SF->AS->element_image_of(0,
ELT1, 0 );
1376 image2 = SF->AS->element_image_of(a,
ELT1, 0 );
1377 image3 = SF->AS->element_image_of(b,
ELT1, 0 );
1379 cout <<
"images: " << endl;
1380 cout <<
"0 -> " << image1 << endl;
1381 cout << a <<
" -> " << image2 << endl;
1382 cout << b <<
" -> " << image3 << endl;
1392 int_vec_heapsort(set1, 3);
1393 int_vec_heapsort(set2, 3);
1394 if (int_vec_compare(set1, set2, 3)) {
1395 cout <<
"Error: The automorphism does not stabilize "
1396 "the subspace." << endl;
1400 f_automorphism =
TRUE;
1407 cout <<
"semifield_level_two::trace Fusion" << endl;
1416 cout <<
"d1 != d2" << endl;
1422 if (cc1 != cc2 && idx1 == cc2) {
1424 cout <<
"semifield_level_two::trace "
1425 "multiplying Basis_inv to the right" << endl;
1443 cout <<
"semifield_level_two::trace done" << endl;
1448 int *ELT1,
int *Mtx,
int *ELT2,
int *ELT3,
1457 int f_v = (verbose_level >= 1);
1462 cout <<
"semifield_level_two::multiply_to_the_right" << endl;
1467 for (i = 0; i <
k; i++) {
1468 for (j = 0; j <
k; j++) {
1471 M[(
k + i) *
n +
k + j] = a;
1480 cout <<
"semifield_level_two::multiply_to_the_right done" << endl;
1486 long int *&Candidates,
int &nb_candidates,
int verbose_level)
1488 int f_v = (verbose_level >= 1);
1499 cout <<
"semifield_level_two::compute_candidates_at_level_two_case" << endl;
1502 alloc_length = 1024;
1507 for (i = 0; i < 2; i++) {
1517 cout <<
"semifield_level_two::compute_candidates_at_level_two_case "
1518 "Level 2, Looking at orbit " << orbit <<
" / "
1526 cout <<
"semifield_level_two::compute_candidates_at_level_two_case "
1538 int N, N1, v[2], j, h, b1, b2;
1557 for (i = 0; i < N; i++) {
1560 for (i = 0; i < N1; i++) {
1567 for (Cnt[i]++; Cnt[i] < N; Cnt[i]++) {
1581 if (i < 2 &&
Mtx1[i *
k + 0]) {
1588 Mtx2, i + 1,
k, B, base_cols,
1593 for (h = 1; h < N1; h++) {
1599 for (j = 0; j < (i + 1) *
k; j++) {
1600 b1 =
F->
mult(Mtx_stack[0][j], v[0]);
1601 b2 =
F->
mult(Mtx_stack[1][j], v[1]);
1605 cout <<
"semifield_level_two::compute_candidates_at_level_two_case "
1606 "testing linear combination ";
1607 int_vec_print(cout, v, 2);
1609 int_matrix_print(
Mtx2, i + 1,
k);
1612 Mtx2, i + 1,
k, B, base_cols,
1632 if ((nb_tested & ((1 << 17) - 1)) == 0) {
1633 cout <<
"semifield_level_two::compute_candidates_at_level_two_case "
1634 "orbit " << orbit <<
" / " <<
nb_orbits <<
" Cnt=";
1636 cout <<
" number tested = " << nb_tested
1637 <<
" Number of candidates = " << nb_candidates << endl;
1641 if (!test_candidate(Mtx_stack, 2,
Mtx1, verbose_level - 2)) {
1642 cout <<
"we survived the tests but "
1643 "test_candidate fails" << endl;
1644 int_matrix_print(
Mtx1,
k,
k);
1651 cout <<
"semifield_level_two::compute_candidates_at_level_two_case "
1652 "orbit r < 0" << endl;
1653 cout <<
"Mtx1:" << endl;
1668 cout <<
"semifield_level_two::compute_candidates_at_level_two_case "
1669 "Level 2: orbit " << orbit <<
" / " <<
nb_orbits
1670 <<
": nb_tested = " << nb_tested <<
", found "
1671 << nb_candidates <<
" candidates, sorting them now." << endl;
1678 for (i = 0; i < 2; i++) {
1691 cout <<
"Level 2: orbit " << orbit <<
" / "
1693 << nb_candidates <<
" candidates:" << endl;
1697 cout <<
"semifield_level_two::compute_candidates_at_level_two_case "
1706 int f_v = (verbose_level >= 1);
1710 cout <<
"semifield_level_two::allocate_candidates_at_level_two" << endl;
1718 cout <<
"semifield_level_two::allocate_candidates_at_level_two done" << endl;
1723 int orbit,
int verbose_level)
1726 int f_v = (verbose_level >= 1);
1732 cout <<
"semifield_level_two::test_if_file_exists_candidates_at_level_two_case file "
1733 << fname <<
" exists" << endl;
1739 cout <<
"semifield_level_two::test_if_file_exists_candidates_at_level_two_case file "
1740 << fname <<
" does not exist" << endl;
1747 int orbit,
int verbose_level)
1750 int f_v = (verbose_level >= 1);
1756 cout <<
"semifield_level_two::test_if_txt_file_exists_candidates_at_level_two_case file "
1757 << fname <<
" exists" << endl;
1763 cout <<
"semifield_level_two::test_if_txt_file_exists_candidates_at_level_two_case file "
1764 << fname <<
" does not exist" << endl;
1774 int f_v = (verbose_level >= 1);
1779 cout <<
"semifield_level_two::find_all_candidates_at_level_two" << endl;
1782 for (orbit = 0; orbit <
nb_orbits; orbit++) {
1785 cout <<
"Level 2, looking at orbit " << orbit
1791 orbit, verbose_level)) {
1795 orbit, verbose_level - 1);
1798 orbit, verbose_level)) {
1802 orbit, verbose_level - 1);
1806 orbit, verbose_level - 1);
1810 cout <<
"semifield_level_two::find_all_candidates_"
1811 "at_level_two Cannot find candidate file. "
1812 "before compute_candidates_at_level_two_case" << endl;
1819 cout <<
"semifield_level_two::find_all_candidates_"
1820 "at_two_three after compute_candidates_at_"
1821 "level_two_case" << endl;
1824 cout <<
"semifield_level_two::find_all_candidates_"
1825 "at_two_three before write_candidates_at_"
1826 "level_two_case" << endl;
1830 orbit, verbose_level - 1);
1832 cout <<
"semifield_level_two::find_all_candidates_"
1833 "at_two_three after write_candidates_at_"
1834 "level_two_case" << endl;
1842 fname_test, orbit, 0);
1844 if (
SC->f_level_two_prefix) {
1845 sprintf(fname_test,
"%sC2_orbit%d_type%d_int8.bin",
1849 sprintf(fname_test,
"C2_orbit%d_type%d_int8.bin",
1855 cout <<
"Type files for orbit " << orbit
1856 <<
" exist" << endl;
1859 cout <<
"Type files for orbit " << orbit
1860 <<
" do not exist" << endl;
1864 int window_bottom, window_size;
1867 window_bottom =
k - 1;
1868 window_size =
k - 2;
1872 window_bottom, window_size,
1873 Set, Set_sz, Nb_sets,
1876 for (h = 0; h < Nb_sets; h++) {
1882 if (
SC->f_level_two_prefix) {
1883 sprintf(fname,
"%sC2_orbit%d_type%d_int8.bin",
1887 sprintf(fname,
"C2_orbit%d_type%d_int8.bin",
1894 cout <<
"Written file " << fname <<
" of size "
1898 for (h = 0; h < Nb_sets; h++) {
1909 cout <<
"semifield_level_two::find_all_candidates_at_level_two" << endl;
1910 cout <<
"orbit : Level 2 Nb_candidates" << endl;
1911 for (orbit = 0; orbit <
nb_orbits; orbit++) {
1912 cout << orbit <<
" : "
1917 cout <<
"semifield_level_two::find_all_candidates_at_level_two done" << endl;
1922 long int *&Candidates,
int &Nb_candidates,
int orbit,
1925 int f_v = (verbose_level >= 1);
1930 cout <<
"semifield_level_two::read_candidates_at_level_two_case" << endl;
1936 cout <<
"Reading candidates from file "
1937 << fname <<
" of size "
1945 cout <<
"Reading candidates from file "
1946 << fname <<
" of size " << Fio.
file_size(fname)
1948 cout <<
"We found " <<
Nb_candidates <<
" candidates" << endl;
1952 cout <<
"semifield_level_two::read_candidates_at_level_two_case file " << fname
1953 <<
" does not exist" << endl;
1957 cout <<
"semifield_level_two::read_candidates_at_level_two_case done" << endl;
1962 long int *&Candidates,
int &Nb_candidates,
int orbit,
1965 int f_v = (verbose_level >= 1);
1970 cout <<
"semifield_level_two::read_candidates_at_level_"
1971 "two_case_txt_file" << endl;
1977 cout <<
"Reading candidates from file "
1978 << fname <<
" of size "
1986 cout <<
"Reading candidates from file "
1987 << fname <<
" of size " << Fio.
file_size(fname)
1992 cout <<
"semifield_level_two::read_candidates_at_level_"
1993 "two_case_txt_file file " << fname
1994 <<
" does not exist" << endl;
1998 cout <<
"semifield_level_two::read_candidates_at_level_"
1999 "two_case_txt_file done" << endl;
2005 long int *Candidates,
int Nb_candidates,
int orbit,
2008 int f_v = (verbose_level >= 1);
2013 cout <<
"semifield_level_two::write_candidates_"
2014 "at_level_two_case" << endl;
2025 cout <<
"Written file " << fname <<
" of size "
2030 cout <<
"semifield_level_two::write_candidates_"
2031 "at_level_two_case done" << endl;
2039 int f_v = (verbose_level >= 1);
2042 cout <<
"semifield_level_two::read_candidates_at_level_"
2043 "two_by_type" << endl;
2057 window_size =
k - 2;
2062 for (h = 0; h < Nb_sets; h++) {
2068 if (
SC->f_level_two_prefix) {
2069 sprintf(fname,
"%sC2_orbit%d_type%d_int8.bin",
2073 sprintf(fname,
"C2_orbit%d_type%d_int8.bin", orbit, h);
2076 cout <<
"Reading file " << fname <<
" of size "
2079 cout <<
"semifield_level_two::read_candidates_at_"
2080 "level_two_by_type file " << fname
2081 <<
" does not exist" << endl;
2091 cout <<
"semifield_level_two::read_candidates_at_level_"
2092 "two_by_type initializing set_of_sets" << endl;
2095 Candidates_by_type->
init(underlying_set_size,
2096 Nb_sets, Set, Set_sz, verbose_level);
2099 for (h = 0; h < Nb_sets; h++) {
2106 cout <<
"semifield_level_two::read_candidates_at_level_"
2107 "two_by_type done" << endl;
2112 int *basis,
int *pivots,
int verbose_level)
2114 int f_v = (verbose_level >= 1);
2122 cout <<
"semifield_level_two::get_basis_and_pivots"
2123 "pivots po=" << po << endl;
2129 ext = up_orbit_rep[po];
2130 idx = down_orbit_classes[ext * 2 + 0];
2144 cout <<
"semifield_level_two::get_basis_and_pivots"
2145 "pivots po=" << po <<
" done" << endl;
2150 ofstream &ost,
int verbose_level)
2152 int f_v = (verbose_level >= 1);
2158 cout <<
"semifield_level_two::report" << endl;
2175 cout <<
"semifield_level_two::report "
2176 "before Conjugacy classes" << endl;
2179 ost <<
"\\section{Conjugacy classes without eigenvalue one}" << endl;
2181 ost <<
"There are " <<
nb_classes <<
" conjugacy classes without eigenvalue one:\\\\" << endl;
2183 ost <<
"\\begin{enumerate}[(1)]" << endl;
2185 ost <<
"\\item" << endl;
2187 int f_elements_exponential =
FALSE;
2188 string symbol_for_print;
2190 symbol_for_print.assign(
"\\alpha");
2196 cout <<
"Representative of class " << i <<
" / " <<
nb_classes
2197 <<
" is matrix " << a <<
":\\\\" << endl;
2199 ost <<
"Representative of class " << i <<
" / " <<
nb_classes
2200 <<
" is matrix " << a <<
":\\\\" << endl;
2202 ost <<
"$$" << endl;
2203 ost <<
"\\left[" << endl;
2205 symbol_for_print,
Mtx,
k,
k);
2215 strong_generators *Centralizer_gens;
2216 int *down_orbit_of_class;
2233 Centralizer_gens->init_centralizer_of_matrix(
2235 Centralizer_gens->group_order(go);
2236 ost <<
"Centralizer has order " << go <<
"\\\\" << endl;
2237 Centralizer_gens->print_generators_tex(ost);
2240 ost <<
"\\end{enumerate}" << endl;
2244 cout <<
"semifield_level_two::report before flag orbits" << endl;
2248 ost <<
"\\section{Flag orbits at level 2}" << endl;
2250 ost <<
"\\begin{enumerate}[(1)]" << endl;
2255 ost <<
"\\item" << endl;
2259 ost <<
"\\\\" << endl;
2262 ost <<
"f\\_Fusion = " <<
f_Fusion[i] <<
"\\\\" << endl;
2263 ost <<
"Fusion\\_idx = " <<
Fusion_idx[i] <<
"\\\\" << endl;
2265 ost <<
"Fusion\\_elt = \\\\" << endl;
2266 ost <<
"$$" << endl;
2268 ost <<
"$$" << endl;
2272 ost <<
"Flag orbit stabilizer has order " << go <<
"\\\\" << endl;
2277 ost <<
"\\end{enumerate}" << endl;
2280 cout <<
"semifield_level_two::report before Orbits at level 2" << endl;
2282 ost <<
"\\section{Orbits at level 2}" << endl;
2284 ost <<
"\\begin{enumerate}[(1)]" << endl;
2288 ost <<
"\\item" << endl;
2297 ext = up_orbit_rep[i];
2299 idx = down_orbit_classes[ext * 2 + 0];
2314 int f_elements_exponential =
FALSE;
2315 string symbol_for_print;
2317 symbol_for_print.assign(
"\\alpha");
2322 ost <<
"Representative " << i <<
" / " <<
nb_orbits
2323 <<
" classes " << idx <<
","
2325 ost <<
"\\{" << endl;
2331 ost <<
"\\}" << endl;
2332 ost <<
"$$" << endl;
2333 ost <<
"\\left\\{" << endl;
2334 ost <<
"\\left[" << endl;
2337 ost <<
"\\right], \\;";
2338 ost <<
"\\left[" << endl;
2340 symbol_for_print,
Mtx,
k,
k);
2342 ost <<
"\\right\\}" << endl;
2344 ost << go <<
"}" << endl;
2345 ost <<
"$$" << endl;
2350 ost <<
"\\end{enumerate}" << endl;
2353 cout <<
"semifield_level_two::report "
2354 "after Orbits at level 2" << endl;
2364 cout <<
"semifield_level_two::report done" << endl;
2371 fname.append(
"Level_2_info.csv");
2379 int f_v = (verbose_level >= 1);
2383 cout <<
"semifield_level_two::write_level_info_file" << endl;
2387 const char *column_label[] = {
2403 for (j = 0; j < nb_vecs; j++) {
2404 f <<
"," << column_label[j];
2413 <<
"," <<
Pt[i] << endl;
2418 cout <<
"Written file " << fname <<
" of size "
2421 cout <<
"semifield_level_two::write_level_info_file done" << endl;
2428 int f_v = (verbose_level >= 1);
2436 cout <<
"semifield_level_two::read_level_info_file" << endl;
2440 cout <<
"semifield_level_two::read_level_info_file " << fname << endl;
2443 cout <<
"semifield_lifting::read_level_info_file "
2444 "error trying to read the file " << fname << endl;
2459 for (i = 0; i < m; i++) {
2461 So[i] =
M[i *
n + 2];
2462 Fo[i] =
M[i *
n + 3];
2463 Go[i] =
M[i *
n + 4];
2464 Pt[i] =
M[i *
n + 5];
2470 cout <<
"semifield_level_two::read_level_info_file done" << endl;
conjugacy class in GL(n,q) described using rational normal form
ring_theory::longinteger_object * class_length
void print_matrix_and_centralizer_order_latex(std::ostream &ost, gl_class_rep *R)
void make_classes(gl_class_rep *&R, int &nb_classes, int f_no_eigenvalue_one, int verbose_level)
void report(std::ostream &ost, int verbose_level)
void make_matrix_from_class_rep(int *Mtx, gl_class_rep *R, int verbose_level)
int find_class_rep(gl_class_rep *Reps, int nb_reps, gl_class_rep *R, int verbose_level)
void identify_matrix(int *Mtx, gl_class_rep *R, int *Basis, int verbose_level)
set of sets with entries over long int
void init(long int underlying_set_size, int nb_sets, long int **Pts, int *Sz, int verbose_level)
a collection of functions related to sorted vectors
void lint_vec_heapsort(long int *v, int len)
void lint_vec_append_and_reallocate_if_necessary(long int *&vec, int &used_length, int &alloc_length, long int a, int verbose_level)
void latex_matrix(std::ostream &f, int f_elements_exponential, std::string &symbol_for_print, int *M, int m, int n)
linear_algebra::linear_algebra * Linear_algebra
various functions related to geometries
void AG_element_unrank(int q, int *v, int stride, int len, long int a)
int rank_of_rectangular_matrix_memory_given(int *A, int m, int n, int *B, int *base_cols, int verbose_level)
int is_identity_matrix(int *A, int n)
void identity_matrix(int *A, int n)
void matrix_inverse(int *A, int *Ainv, int n, int verbose_level)
void add_vector(int *A, int *B, int *C, int m)
basic number theoretic functions
int i_power_j(int i, int j)
a collection of functions related to file io
void write_set_to_file_as_int8(std::string &fname, long int *the_set, int set_size, int verbose_level)
void read_set_from_file_lint(std::string &fname, long int *&the_set, int &set_size, int verbose_level)
long int file_size(std::string &fname)
void lint_matrix_read_csv(std::string &fname, long int *&M, int &m, int &n, int verbose_level)
void read_set_from_file_int8(std::string &fname, long int *&the_set, int &set_size, int verbose_level)
domain to compute with objects of type longinteger
void integral_division_exact(longinteger_object &a, longinteger_object &b, longinteger_object &a_over_b)
a class to represent arbitrary precision integers
void element_print_latex(void *elt, std::ostream &ost)
void coset_unrank(groups::sims *G, groups::sims *U, long int rank, int *Elt, int verbose_level)
void element_print_quick(void *elt, std::ostream &ost)
void element_print(void *elt, std::ostream &ost)
void print_quick(std::ostream &ost, void *elt)
void element_mult(void *a, void *b, void *ab, int verbose_level)
void element_invert(void *a, void *av, int verbose_level)
void element_one(void *elt, int verbose_level)
void make_element(int *Elt, int *data, int verbose_level)
void element_move(void *a, void *b, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
to hold a vector of group elements
void allocate(int length, int verbose_level)
void init(actions::action *A, int verbose_level)
void init_gl_classes(int verbose_level)
field_theory::finite_field * GFq
a permutation group represented via a stabilizer chain
void group_order(ring_theory::longinteger_object &go)
void print_transversal_lengths()
a strong generating set for a permutation group with respect to a fixed action
void diagonally_repeat(actions::action *An, strong_generators *Sn, int verbose_level)
void add_single_generator(int *Elt, int group_index, int verbose_level)
sims * create_sims(int verbose_level)
void print_generators_tex()
void print_generators(std::ostream &ost)
void init_centralizer_of_matrix(actions::action *A, int *Mtx, int verbose_level)
void add_generators(data_structures_groups::vector_ge *coset_reps, int group_index, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
void compute_image_low_level(int *Elt, int *input, int *output, int verbose_level)
classification of semifields using poset classification
induced_actions::action_on_spread_set * A_on_S
std::string level_two_prefix
groups::matrix_group * Mtx
void make_fname_candidates_at_level_two_orbit_txt(std::string &fname, int orbit)
void matrix_unrank(long int rk, int *Mtx)
actions::action * A0_linear
void make_fname_candidates_at_level_two_orbit(std::string &fname, int orbit)
void candidates_classify_by_first_column(long int *Input_set, int input_set_sz, int window_bottom, int window_size, long int **&Set, int *&Set_sz, int &Nb_sets, int verbose_level)
void make_fname_candidates_at_level_two_orbit_by_type(std::string &fname, int orbit, int h)
long int matrix_rank(int *Mtx)
void compute_candidates_at_level_two_case(int orbit, long int *&Candidates, int &nb_candidates, int verbose_level)
void downstep(int verbose_level)
void compute_stabilizers_downstep(int verbose_level)
void find_all_candidates_at_level_two(int verbose_level)
void write_level_info_file(int verbose_level)
int * defining_flag_orbit
void create_fname_level_info_file(std::string &fname)
void trace(int f, int coset, long int a, long int b, int &f_automorphism, int *&Aut, int verbose_level)
int * class_to_flag_orbit
void write_candidates_at_level_two_case(long int *Candidates, int Nb_candidates, int orbit, int verbose_level)
void read_candidates_at_level_two_case(long int *&Candidates, int &Nb_candidates, int orbit, int verbose_level)
void upstep(int verbose_level)
void read_level_info_file(int verbose_level)
algebra::gl_class_rep * R
long int * class_rep_rank
int * flag_orbit_number_of_matrices
int ** class_rep_plus_I_Basis_inv
void report(std::ofstream &ost, int verbose_level)
field_theory::finite_field * F
void allocate_candidates_at_level_two(int verbose_level)
int test_if_file_exists_candidates_at_level_two_case(int orbit, int verbose_level)
long int * class_rep_plus_I_rank
algebra::gl_class_rep * R2
void read_candidates_at_level_two_by_type(data_structures::set_of_sets_lint *&Candidates_by_type, int orbit, int verbose_level)
groups::strong_generators * Stabilizer_gens
void compute_level_two(int nb_stages, int verbose_level)
int test_if_txt_file_exists_candidates_at_level_two_case(int orbit, int verbose_level)
groups::strong_generators * Flag_orbit_stabilizer
int * R_i_plus_I_class_idx
void list_all_elements_in_conjugacy_class(int c, int verbose_level)
void read_candidates_at_level_two_case_txt_file(long int *&Candidates, int &Nb_candidates, int orbit, int verbose_level)
void init_desired_pivots(int verbose_level)
algebra::gl_class_rep * R1
void init(semifield_classify *SC, int verbose_level)
int ** class_rep_plus_I_Basis
void multiply_to_the_right(int *ELT1, int *Mtx, int *ELT2, int *ELT3, int verbose_level)
void get_basis_and_pivots(int po, int *basis, int *pivots, int verbose_level)
#define Int_vec_zero(A, B)
#define Int_matrix_print(A, B, C)
#define NEW_OBJECTS(type, n)
#define Int_vec_copy(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects
groups::matrix_group * matrix_grp