| ofs | hex dump | ascii |
|---|
| 0000 | 62 30 56 49 4d 20 38 2e 30 00 00 00 00 10 00 00 3f 52 40 5d 35 22 9e 00 4c 1c 00 00 73 65 62 61 | b0VIM.8.0.......?R@]5"..L...seba |
| 0020 | 73 74 69 61 6e 6f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | stiano.......................... |
| 0040 | 00 00 00 00 50 50 30 31 36 35 55 62 75 6e 74 75 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ....PP0165Ubuntu................ |
| 0060 | 00 00 00 00 00 00 00 00 00 00 00 00 7e 73 65 62 61 73 74 69 61 6e 6f 2f 44 72 6f 70 62 6f 78 2f | ............~sebastiano/Dropbox/ |
| 0080 | 70 68 64 2f 6b 75 6d 6d 65 72 2d 64 65 67 72 65 65 73 2f 67 69 74 2f 6b 75 6d 6d 65 72 2d 64 65 | phd/kummer-degrees/git/kummer-de |
| 00a0 | 67 72 65 65 73 2f 6b 75 6d 6d 65 72 5f 64 65 67 72 65 65 2e 73 61 67 65 00 00 00 00 00 00 00 00 | grees/kummer_degree.sage........ |
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03e0 | 00 00 00 00 00 00 00 00 00 75 74 66 2d 38 0d 55 33 32 31 30 00 00 00 00 23 22 21 20 13 12 55 00 | .........utf-8.U3210....#"!...U. |
| 0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 04a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 04c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 04e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 05a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 05c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 05e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 06a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 06c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 06e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 08a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 08c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 08e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 09a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 09c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 09e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0a00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0c00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0c60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0c80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0e00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1000 | 74 70 0a 00 7f 00 00 00 02 00 00 00 00 00 00 00 48 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 | tp..............H............... |
| 1020 | 01 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 50 00 00 00 00 00 00 00 49 00 00 00 00 00 00 00 | ................P.......I....... |
| 1040 | 01 00 00 00 00 00 00 00 09 00 00 00 00 00 00 00 77 00 00 00 00 00 00 00 99 00 00 00 00 00 00 00 | ................w............... |
| 1060 | 01 00 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 43 00 00 00 00 00 00 00 10 01 00 00 00 00 00 00 | ................C............... |
| 1080 | 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 1c 00 00 00 00 00 00 00 75 01 00 00 00 00 00 00 | ........................u....... |
| 10a0 | 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 44 00 00 00 00 00 00 00 9a 01 00 00 00 00 00 00 | ................D............... |
| 10c0 | 01 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 5e 00 00 00 00 00 00 00 db 01 00 00 00 00 00 00 | ................^............... |
| 10e0 | 01 00 00 00 00 00 00 00 0b 00 00 00 00 00 00 00 5f 00 00 00 00 00 00 00 48 02 00 00 00 00 00 00 | ................_.......H....... |
| 1100 | 01 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 64 00 00 00 00 00 00 00 a7 02 00 00 00 00 00 00 | ................d............... |
| 1120 | 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 2f 00 00 00 00 00 00 00 0b 03 00 00 00 00 00 00 | ................/............... |
| 1140 | 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 2f 00 00 00 00 00 00 00 0b 03 00 00 00 00 00 00 | ................/............... |
| 1160 | 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 11e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 12e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 14a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 14c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 14e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 15a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 15c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 15e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 16e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 19a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 19c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 19e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1c00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1c60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1c80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2000 | 61 64 00 00 17 00 00 00 53 01 00 00 00 10 00 00 48 00 00 00 00 00 00 00 b3 0f 00 00 65 0f 00 00 | ad......S.......H...........e... |
| 2020 | 55 0f 00 00 53 0f 00 00 06 0f 00 00 bb 0e 00 00 76 0e 00 00 27 0e 00 00 d7 0d 00 00 9f 0d 00 00 | U...S...........v...'........... |
| 2040 | 54 0d 00 00 08 0d 00 00 b8 0c 00 00 6f 0c 00 00 22 0c 00 00 e9 0b 00 00 e7 0b 00 00 9b 0b 00 00 | T...........o..."............... |
| 2060 | 51 0b 00 00 3c 0b 00 00 02 0b 00 00 b2 0a 00 00 68 0a 00 00 5d 0a 00 00 0f 0a 00 00 e8 09 00 00 | Q...<...........h...]........... |
| 2080 | c9 09 00 00 c8 09 00 00 7c 09 00 00 6b 09 00 00 6a 09 00 00 1b 09 00 00 ef 08 00 00 9f 08 00 00 | ........|...k...j............... |
| 20a0 | 52 08 00 00 39 08 00 00 ea 07 00 00 9e 07 00 00 75 07 00 00 5f 07 00 00 43 07 00 00 39 07 00 00 | R...9...........u..._...C...9... |
| 20c0 | 1f 07 00 00 1e 07 00 00 d0 06 00 00 81 06 00 00 32 06 00 00 e6 05 00 00 97 05 00 00 47 05 00 00 | ................2...........G... |
| 20e0 | f9 04 00 00 cf 04 00 00 bc 04 00 00 a0 04 00 00 9f 04 00 00 52 04 00 00 0b 04 00 00 bb 03 00 00 | ....................R........... |
| 2100 | b1 03 00 00 b0 03 00 00 80 03 00 00 7f 03 00 00 34 03 00 00 e5 02 00 00 bc 02 00 00 a3 02 00 00 | ................4............... |
| 2120 | 86 02 00 00 61 02 00 00 3d 02 00 00 f2 01 00 00 a1 01 00 00 53 01 00 00 52 01 00 00 00 00 00 00 | ....a...=...........S...R....... |
| 2140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 2160 | 20 20 20 20 20 20 20 23 20 63 61 73 65 20 6e 3d 32 20 61 6e 64 20 62 3d 32 2c 20 69 6e 20 77 68 | .......#.case.n=2.and.b=2,.in.wh |
| 2180 | 69 63 68 20 63 61 73 65 20 69 74 20 69 73 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 51 5f 34 2e | ich.case.it.is.contained.in.Q_4. |
| 21a0 | 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 49 74 20 69 73 20 63 6f 6e | .....................#.It.is.con |
| 21c0 | 74 61 69 6e 65 64 20 69 6e 20 51 5f 7b 6c 63 6d 28 32 5e 7b 6e 2b 31 7d 2c 63 79 63 5f 65 6d 62 | tained.in.Q_{lcm(2^{n+1},cyc_emb |
| 21e0 | 28 62 29 29 7d 2c 20 65 78 63 65 70 74 20 69 6e 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | (b))},.except.in................ |
| 2200 | 20 20 20 20 20 20 23 20 53 70 65 63 69 61 6c 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65 20 66 | ......#.Special.element.of.the.f |
| 2220 | 6f 72 6d 20 5c 7a 65 74 61 5f 7b 32 5e 7b 6e 2b 31 7d 7d 5c 73 71 72 74 28 62 29 2e 00 20 20 20 | orm.\zeta_{2^{n+1}}\sqrt(b)..... |
| 2240 | 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 67 20 3c 20 30 20 61 6e 64 20 6e 20 3e 20 31 3a | .............if.g.<.0.and.n.>.1: |
| 2260 | 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 43 61 73 65 20 6f 66 20 6e 65 67 61 74 | .................#.Case.of.negat |
| 2280 | 69 76 65 20 67 00 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 67 20 69 6e 20 42 5b 6e 2d 31 | ive.g.............for.g.in.B[n-1 |
| 22a0 | 5d 3a 00 20 20 20 20 20 20 20 20 69 66 20 6e 2d 31 20 3c 20 6c 65 6e 28 42 29 3a 00 20 20 20 20 | ]:.........if.n-1.<.len(B):..... |
| 22c0 | 20 20 20 20 23 20 64 65 61 6c 74 20 77 69 74 68 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 65 6c | ....#.dealt.with.immediately.bel |
| 22e0 | 6f 77 29 2e 00 20 20 20 20 20 20 20 20 23 20 54 68 69 73 20 69 73 20 6e 6f 74 20 64 6f 6e 65 20 | ow)..........#.This.is.not.done. |
| 2300 | 69 6e 20 63 61 73 65 20 77 65 20 61 72 65 20 69 6e 20 74 68 65 20 65 78 74 72 61 20 22 66 61 6b | in.case.we.are.in.the.extra."fak |
| 2320 | 65 22 20 6c 65 76 65 6c 20 28 74 68 69 73 20 63 61 73 65 00 20 20 20 20 20 20 20 20 23 20 57 65 | e".level.(this.case.........#.We |
| 2340 | 20 61 64 64 20 74 68 65 20 6e 65 77 20 65 6c 65 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 73 68 6f | .add.the.new.elements.to.the.sho |
| 2360 | 72 74 6c 69 73 74 2c 20 6d 6f 64 69 66 79 69 6e 67 20 4d 20 69 66 20 6e 65 65 64 65 64 2e 00 00 | rtlist,.modifying.M.if.needed... |
| 2380 | 20 20 20 20 66 6f 72 20 6e 20 69 6e 20 72 61 6e 67 65 28 20 31 2c 20 4e 2b 31 20 29 3a 20 23 20 | ....for.n.in.range(.1,.N+1.):.#. |
| 23a0 | 31 20 5c 6c 65 71 20 6e 20 5c 6c 65 71 20 4e 00 00 20 20 20 20 4d 20 3d 20 31 00 20 20 20 20 23 | 1.\leq.n.\leq.N......M.=.1.....# |
| 23c0 | 20 73 68 6f 72 74 6c 69 73 74 2c 20 77 65 20 64 65 63 6c 61 72 65 20 69 74 20 68 65 72 65 20 61 | .shortlist,.we.declare.it.here.a |
| 23e0 | 6e 64 20 69 6e 63 72 65 61 73 65 20 69 74 20 61 70 70 72 6f 70 72 69 61 74 65 6c 79 20 61 74 20 | nd.increase.it.appropriately.at. |
| 2400 | 65 61 63 68 20 73 74 65 70 2e 00 20 20 20 20 23 20 77 68 6f 6c 65 20 69 6e 74 65 72 73 65 63 74 | each.step......#.whole.intersect |
| 2420 | 69 6f 6e 20 77 69 74 68 20 51 5f 5c 69 6e 66 74 79 2c 20 61 6c 73 6f 20 67 72 6f 77 73 20 77 69 | ion.with.Q_\infty,.also.grows.wi |
| 2440 | 74 68 20 6e 2e 20 41 73 20 77 69 74 68 20 74 68 65 00 20 20 20 20 23 20 54 68 65 20 69 6e 74 65 | th.n..As.with.the.....#.The.inte |
| 2460 | 67 65 72 73 20 4d 2c 20 67 69 76 69 6e 67 20 74 68 65 20 73 6d 61 6c 6c 65 73 74 20 63 79 63 6c | gers.M,.giving.the.smallest.cycl |
| 2480 | 6f 74 6f 6d 69 63 20 66 69 65 6c 64 20 69 6e 20 77 68 69 63 68 20 6c 69 65 73 20 74 68 65 00 00 | otomic.field.in.which.lies.the.. |
| 24a0 | 20 20 20 20 73 70 65 63 69 61 6c 5f 65 6c 65 6d 65 6e 74 20 3d 20 28 31 2c 31 29 00 20 20 20 20 | ....special_element.=.(1,1)..... |
| 24c0 | 73 68 6f 72 74 6c 69 73 74 20 3d 20 5b 5d 00 20 20 20 20 23 20 69 73 6e 6f 20 73 70 65 63 69 61 | shortlist.=.[].....#.isno.specia |
| 24e0 | 6c 20 65 6c 65 6d 65 6e 74 20 61 74 20 74 68 69 73 20 6c 65 76 65 6c 2e 00 20 20 20 20 23 20 61 | l.element.at.this.level......#.a |
| 2500 | 73 20 28 6e 2c 62 29 2e 20 57 65 20 75 73 65 20 74 68 65 20 76 61 6c 75 65 20 28 31 2c 31 29 20 | s.(n,b)..We.use.the.value.(1,1). |
| 2520 | 28 73 70 65 63 69 61 6c 20 65 6c 65 6d 65 6e 74 20 2d 31 29 20 74 6f 20 73 61 79 20 74 68 61 74 | (special.element.-1).to.say.that |
| 2540 | 20 74 68 65 72 65 00 20 20 20 20 23 20 54 68 65 20 22 73 70 65 63 69 61 6c 20 65 6c 65 6d 65 6e | .there.....#.The."special.elemen |
| 2560 | 74 22 20 69 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 5c 7a 65 74 61 5f 7b 32 5e 6e 7d 5c 73 71 | t".is.of.the.form.\zeta_{2^n}\sq |
| 2580 | 72 74 7b 62 7d 2c 20 77 68 69 63 68 20 77 65 20 65 6e 63 6f 64 65 00 20 20 20 20 23 20 64 65 63 | rt{b},.which.we.encode.....#.dec |
| 25a0 | 6c 61 72 65 20 69 74 20 62 65 66 6f 72 65 20 73 74 61 72 74 69 6e 67 20 74 6f 20 6c 6f 6f 70 20 | lare.it.before.starting.to.loop. |
| 25c0 | 6f 76 65 72 20 6e 20 61 6e 64 20 77 65 20 62 75 69 6c 64 20 69 74 20 69 6e 63 72 65 6d 65 6e 74 | over.n.and.we.build.it.increment |
| 25e0 | 61 6c 6c 79 2e 00 20 20 20 20 23 20 65 6c 65 6d 65 6e 74 20 69 73 20 64 65 61 6c 74 20 77 69 74 | ally......#.element.is.dealt.wit |
| 2600 | 68 20 6c 61 74 65 72 29 2e 20 54 68 65 20 73 68 6f 72 74 6c 69 73 74 20 67 72 6f 77 73 20 61 74 | h.later)..The.shortlist.grows.at |
| 2620 | 20 65 61 63 68 20 73 74 65 70 2c 20 73 6f 20 77 65 00 20 20 20 20 23 20 63 6f 6d 69 6e 67 20 66 | .each.step,.so.we.....#.coming.f |
| 2640 | 72 6f 6d 20 74 61 6b 69 6e 67 20 61 20 73 75 69 74 61 62 6c 65 20 72 6f 6f 74 20 6f 66 20 61 20 | rom.taking.a.suitable.root.of.a. |
| 2660 | 6e 65 67 61 74 69 76 65 20 67 65 6e 65 72 61 74 6f 72 3b 20 74 68 69 73 20 73 70 65 63 69 61 6c | negative.generator;.this.special |
| 2680 | 00 20 20 20 20 23 20 74 68 69 73 20 73 68 6f 72 74 6c 69 73 74 20 28 61 6e 64 20 61 20 22 73 70 | .....#.this.shortlist.(and.a."sp |
| 26a0 | 65 63 69 61 6c 20 65 6c 65 6d 65 6e 74 22 2c 20 6e 6f 74 20 61 6c 77 61 79 73 20 6f 66 20 74 68 | ecial.element",.not.always.of.th |
| 26c0 | 65 20 66 6f 72 6d 20 73 71 72 74 28 64 29 2c 00 20 20 20 20 23 20 54 68 65 20 69 6e 74 65 72 73 | e.form.sqrt(d),.....#.The.inters |
| 26e0 | 65 63 74 69 6f 6e 20 69 73 20 67 69 76 65 6e 20 62 79 20 61 64 64 69 6e 67 20 74 68 65 20 73 71 | ection.is.given.by.adding.the.sq |
| 2700 | 75 61 72 65 20 72 6f 6f 74 73 20 6f 66 20 74 68 65 20 65 6c 65 6d 65 6e 74 73 20 6f 66 00 00 20 | uare.roots.of.the.elements.of... |
| 2720 | 20 20 20 20 20 20 20 4e 20 3d 20 6d 61 78 28 33 2c 6c 65 6e 28 42 29 29 00 20 20 20 20 65 6c 73 | .......N.=.max(3,len(B)).....els |
| 2740 | 65 3a 00 20 20 20 20 20 20 20 20 4e 20 3d 20 6d 61 78 28 33 2c 6c 65 6e 28 42 29 2b 31 29 00 20 | e:.........N.=.max(3,len(B)+1).. |
| 2760 | 20 20 20 69 66 20 64 20 3d 3d 20 6c 65 6e 28 42 29 2d 31 3a 00 20 20 20 20 23 20 74 61 6b 69 6e | ...if.d.==.len(B)-1:.....#.takin |
| 2780 | 67 20 74 68 65 20 72 6f 6f 74 20 6f 66 20 61 6e 20 65 76 65 6e 20 70 6f 77 65 72 29 2e 00 20 20 | g.the.root.of.an.even.power).... |
| 27a0 | 20 20 23 20 31 2c 20 62 65 63 61 75 73 65 20 69 74 20 77 6f 75 6c 64 20 63 6f 6e 74 72 69 62 75 | ..#.1,.because.it.would.contribu |
| 27c0 | 74 65 20 74 6f 20 74 68 65 20 73 68 6f 72 74 6c 69 73 74 20 69 6e 20 74 68 65 20 6e 65 78 74 20 | te.to.the.shortlist.in.the.next. |
| 27e0 | 6c 65 76 65 6c 20 28 62 79 00 20 20 20 20 23 20 49 66 20 74 68 65 20 6e 65 67 61 74 69 76 65 20 | level.(by.....#.If.the.negative. |
| 2800 | 67 65 6e 65 72 61 74 6f 72 20 69 73 20 6f 6e 20 74 68 65 20 6c 61 73 74 20 6c 65 76 65 6c 2c 20 | generator.is.on.the.last.level,. |
| 2820 | 77 65 20 6e 65 65 64 20 74 6f 20 69 6e 63 72 65 61 73 65 20 4e 20 62 79 00 20 20 20 20 23 20 61 | we.need.to.increase.N.by.....#.a |
| 2840 | 6e 79 20 65 6c 65 6d 65 6e 74 20 6f 66 20 47 29 2e 00 20 20 20 20 23 20 74 68 65 6f 72 79 2c 20 | ny.element.of.G)......#.theory,. |
| 2860 | 74 68 69 73 20 69 73 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 79 20 69 6e 20 73 6f 6d 65 20 63 61 | this.is.not.necessary.in.some.ca |
| 2880 | 73 65 73 2c 20 65 2e 67 2e 20 69 66 20 32 20 64 6f 65 73 20 6e 6f 74 20 64 69 76 69 64 65 00 20 | ses,.e.g..if.2.does.not.divide.. |
| 28a0 | 20 20 20 23 20 57 65 20 61 6c 77 61 79 73 20 68 61 76 65 20 74 6f 20 69 6e 63 6c 75 64 65 20 6e | ...#.We.always.have.to.include.n |
| 28c0 | 3d 33 2c 20 62 65 63 61 75 73 65 20 6f 66 20 70 72 6f 62 6c 65 6d 20 77 69 74 68 20 73 71 72 74 | =3,.because.of.problem.with.sqrt |
| 28e0 | 28 32 29 20 69 6e 20 51 5f 38 20 28 69 6e 00 20 20 20 20 23 20 74 68 65 20 73 61 6d 65 20 61 73 | (2).in.Q_8.(in.....#.the.same.as |
| 2900 | 20 74 68 61 74 20 6f 66 20 51 28 5c 73 71 72 74 7b 32 5e 4e 7d 7b 47 7d 29 2e 00 20 20 20 20 23 | .that.of.Q(\sqrt{2^N}{G})......# |
| 2920 | 20 4e 20 69 73 20 73 75 63 68 20 74 68 61 74 20 66 6f 72 20 65 76 65 72 79 20 6e 20 3e 20 4e 20 | .N.is.such.that.for.every.n.>.N. |
| 2940 | 74 68 65 20 61 64 65 6c 69 63 20 66 61 69 6c 75 72 65 20 6f 66 20 51 28 5c 73 71 72 74 7b 32 5e | the.adelic.failure.of.Q(\sqrt{2^ |
| 2960 | 6e 7d 7b 47 7d 29 20 69 73 00 00 20 20 20 20 61 64 5f 66 61 69 6c 20 3d 20 5b 5d 00 20 20 20 20 | n}{G}).is......ad_fail.=.[]..... |
| 2980 | 23 20 54 68 65 20 74 61 62 6c 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 28 6f 72 20 70 | #.The.table.to.be.returned.(or.p |
| 29a0 | 72 69 6e 74 65 64 20 61 74 20 74 68 65 20 65 6e 64 29 2c 20 61 73 20 64 65 73 63 72 69 62 65 64 | rinted.at.the.end),.as.described |
| 29c0 | 20 61 62 6f 76 65 2e 00 00 64 65 66 20 61 64 65 6c 69 63 5f 66 61 69 6c 75 72 65 5f 67 62 28 20 | .above...def.adelic_failure_gb(. |
| 29e0 | 42 2c 20 64 20 29 3a 00 23 20 74 68 65 20 6c 61 73 74 20 72 6f 77 20 69 73 20 6f 66 20 74 68 65 | B,.d.):.#.the.last.row.is.of.the |
| 2a00 | 20 66 6f 72 6d 20 28 4d 30 2c 72 30 29 2e 00 23 20 45 61 63 68 20 64 69 76 69 73 6f 72 20 6f 66 | .form.(M0,r0)..#.Each.divisor.of |
| 2a20 | 20 4d 20 61 70 70 65 61 72 73 20 61 74 20 6d 6f 73 74 20 6f 6e 63 65 20 6f 6e 20 65 61 63 68 20 | .M.appears.at.most.once.on.each. |
| 2a40 | 72 6f 77 2c 20 61 6e 64 20 74 68 65 20 6c 61 73 74 20 65 6c 65 6d 65 6e 74 20 6f 66 00 23 20 51 | row,.and.the.last.element.of.#.Q |
| 2a60 | 5f 7b 32 5e 6e 7d 2e 00 23 20 64 69 76 69 73 6f 72 20 6f 66 20 4d 30 20 61 6e 64 20 72 20 69 73 | _{2^n}..#.divisor.of.M0.and.r.is |
| 2a80 | 20 74 68 65 20 64 65 67 72 65 65 20 6f 66 20 51 28 5c 73 71 72 74 7b 32 5e 7b 69 2b 31 7d 7d 7b | .the.degree.of.Q(\sqrt{2^{i+1}}{ |
| 2aa0 | 47 7d 29 20 5c 63 61 70 20 51 5f 64 20 6f 76 65 72 00 23 20 45 61 63 68 20 72 6f 77 20 52 3d 61 | G}).\cap.Q_d.over.#.Each.row.R=a |
| 2ac0 | 64 5f 66 61 69 6c 5b 69 5d 20 63 6f 6e 74 61 69 6e 73 20 61 20 76 61 72 69 61 62 6c 65 20 6e 75 | d_fail[i].contains.a.variable.nu |
| 2ae0 | 6d 62 65 72 20 6f 66 20 70 61 69 72 73 20 28 64 2c 72 29 2c 20 77 68 65 72 65 20 64 20 69 73 20 | mber.of.pairs.(d,r),.where.d.is. |
| 2b00 | 61 00 23 20 54 68 65 20 74 61 62 6c 65 20 61 64 5f 66 61 69 6c 20 68 61 73 20 4e 20 72 6f 77 73 | a.#.The.table.ad_fail.has.N.rows |
| 2b20 | 2c 20 77 68 65 72 65 20 4e 20 69 73 20 64 65 66 69 6e 65 64 20 62 65 6c 6f 77 2e 00 23 20 63 6f | ,.where.N.is.defined.below..#.co |
| 2b40 | 6e 74 61 69 6e 65 64 20 69 6e 20 51 5f 4d 30 2e 00 23 20 69 6e 74 65 67 65 72 20 73 75 63 68 20 | ntained.in.Q_M0..#.integer.such. |
| 2b60 | 74 68 61 74 20 74 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f 6e 20 6f 66 20 51 28 5c 73 71 72 74 | that.the.intersection.of.Q(\sqrt |
| 2b80 | 7b 32 5e 6e 7d 7b 47 7d 29 20 77 69 74 68 20 51 5f 5c 69 6e 66 74 79 20 69 73 00 23 20 4f 75 74 | {2^n}{G}).with.Q_\infty.is.#.Out |
| 2ba0 | 70 75 74 3a 20 61 20 74 61 62 6c 65 20 61 64 5f 66 61 69 6c 20 61 73 20 64 65 73 63 72 69 62 65 | put:.a.table.ad_fail.as.describe |
| 2bc0 | 64 20 62 65 6c 6f 77 2e 20 43 61 6c 6c 20 4d 30 20 74 68 65 20 73 6d 61 6c 6c 65 73 74 20 70 6f | d.below..Call.M0.the.smallest.po |
| 2be0 | 73 69 74 69 76 65 00 23 00 23 20 20 20 20 74 68 69 73 20 62 61 73 69 73 20 69 73 20 67 69 76 65 | sitive.#.#....this.basis.is.give |
| 2c00 | 6e 20 61 73 20 69 6e 70 75 74 20 66 6f 72 20 61 64 65 6c 69 63 5f 66 61 69 6c 75 72 65 5f 67 62 | n.as.input.for.adelic_failure_gb |
| 2c20 | 2e 00 23 20 20 20 20 70 72 6f 64 75 63 65 73 20 61 20 62 61 73 69 73 20 74 68 61 74 20 6d 61 79 | ..#....produces.a.basis.that.may |
| 2c40 | 20 68 61 76 65 20 6e 65 67 61 74 69 76 65 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 64 69 76 69 73 | .have.negative.elements.of.divis |
| 2c60 | 69 62 69 6c 69 74 79 20 30 2c 20 61 6e 64 00 23 20 20 20 20 74 68 65 20 63 6f 72 72 65 63 74 6e | ibility.0,.and.#....the.correctn |
| 2c80 | 65 73 73 20 6f 66 20 74 68 65 20 61 6c 67 6f 72 69 74 68 6d 3b 20 69 6e 20 66 61 63 74 2c 20 74 | ess.of.the.algorithm;.in.fact,.t |
| 2ca0 | 68 65 20 66 75 6e 63 74 69 6f 6e 20 61 64 6a 75 73 74 5f 73 69 67 6e 00 23 20 33 27 2e 20 4e 6f | he.function.adjust_sign.#.3'..No |
| 2cc0 | 74 69 63 65 20 74 68 61 74 20 74 68 65 20 65 78 69 73 74 65 6e 63 65 20 6f 6e 20 6e 65 67 61 74 | tice.that.the.existence.on.negat |
| 2ce0 | 69 76 65 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 42 5b 30 5d 20 64 6f 65 73 20 6e 6f 74 20 69 6e | ive.elements.in.B[0].does.not.in |
| 2d00 | 66 6c 75 65 6e 63 65 00 23 20 20 20 20 6e 65 67 61 74 69 76 65 20 65 6c 65 6d 65 6e 74 20 6f 66 | fluence.#....negative.element.of |
| 2d20 | 20 42 5b 64 5d 20 28 69 66 20 64 3d 2d 31 2c 20 74 68 65 6e 20 74 68 65 72 65 20 69 73 20 6e 6f | .B[d].(if.d=-1,.then.there.is.no |
| 2d40 | 20 6e 65 67 61 74 69 76 65 20 65 6c 65 6d 65 6e 74 29 2e 00 23 20 33 2e 20 46 6f 72 20 69 20 21 | .negative.element)..#.3..For.i.! |
| 2d60 | 3d 20 64 20 65 76 65 72 79 20 65 6c 65 6d 65 6e 74 20 6f 66 20 42 5b 69 5d 20 69 73 20 70 6f 73 | =.d.every.element.of.B[i].is.pos |
| 2d80 | 69 74 69 76 65 2c 20 61 6e 64 20 42 5b 64 5d 5b 30 5d 20 69 73 20 74 68 65 20 6f 6e 6c 79 00 23 | itive,.and.B[d][0].is.the.only.# |
| 2da0 | 20 20 20 20 32 5e 69 2d 74 68 20 70 6f 77 65 72 20 6f 66 20 61 20 73 74 72 6f 6e 67 6c 79 20 32 | ....2^i-th.power.of.a.strongly.2 |
| 2dc0 | 2d 69 6e 64 69 76 69 73 69 62 6c 65 20 72 61 74 69 6f 6e 61 6c 2e 00 23 20 20 20 20 6f 66 20 44 | -indivisible.rational..#....of.D |
| 2de0 | 65 62 72 79 2d 50 65 72 75 63 63 61 3b 20 69 2e 65 2e 20 65 61 63 68 20 65 6c 65 6d 65 6e 74 20 | ebry-Perucca;.i.e..each.element. |
| 2e00 | 6f 66 20 42 5b 69 5d 20 69 73 2c 20 75 70 20 74 6f 20 70 6c 75 73 20 6f 72 20 6d 69 6e 75 73 20 | of.B[i].is,.up.to.plus.or.minus. |
| 2e20 | 31 2c 20 74 68 65 00 23 20 32 2e 20 54 68 65 20 62 61 73 69 73 20 67 69 76 65 6e 20 62 79 20 42 | 1,.the.#.2..The.basis.given.by.B |
| 2e40 | 20 69 73 20 32 2d 6d 61 78 69 6d 61 6c 2c 20 74 68 61 74 20 69 73 20 74 6f 20 73 61 79 20 69 74 | .is.2-maximal,.that.is.to.say.it |
| 2e60 | 20 73 61 74 69 73 66 69 65 73 20 54 68 65 6f 72 65 6d 20 31 34 00 23 20 31 2e 20 45 61 63 68 20 | .satisfies.Theorem.14.#.1..Each. |
| 2e80 | 6c 69 73 74 20 42 5b 69 5d 20 63 6f 6e 74 61 69 6e 73 20 61 6c 6c 20 62 61 73 69 73 20 65 6c 65 | list.B[i].contains.all.basis.ele |
| 2ea0 | 6d 65 6e 74 73 20 6f 66 20 32 2d 64 69 76 69 73 69 62 69 6c 69 74 79 20 69 2e 00 23 20 6c 69 73 | ments.of.2-divisibility.i..#.lis |
| 2ec0 | 74 73 2c 20 61 6e 64 20 61 20 6e 6f 6e 20 6e 65 67 61 74 69 76 65 20 69 6e 74 65 67 65 72 20 64 | ts,.and.a.non.negative.integer.d |
| 2ee0 | 2e 20 54 68 65 79 20 68 61 76 65 20 74 6f 20 73 61 74 69 73 66 79 20 74 68 65 20 66 6f 6c 6c 6f | ..They.have.to.satisfy.the.follo |
| 2f00 | 77 69 6e 67 3a 00 23 20 49 6e 70 75 74 3a 20 61 20 67 6f 6f 64 20 62 61 73 69 73 20 42 20 66 6f | wing:.#.Input:.a.good.basis.B.fo |
| 2f20 | 72 20 74 68 65 20 74 6f 72 73 69 6f 6e 2d 66 72 65 65 20 67 72 6f 75 70 20 47 2c 20 6f 72 67 61 | r.the.torsion-free.group.G,.orga |
| 2f40 | 6e 69 7a 65 64 20 61 73 20 61 20 6c 69 73 74 20 6f 66 00 23 00 23 20 6f 76 65 72 20 51 5f 7b 32 | nized.as.a.list.of.#.#.over.Q_{2 |
| 2f60 | 5e 6e 7d 2e 00 23 20 6f 66 20 74 68 65 20 74 68 65 20 4b 75 6d 6d 65 72 20 65 78 74 65 6e 73 69 | ^n}..#.of.the.the.Kummer.extensi |
| 2f80 | 6f 6e 20 51 28 5c 73 71 72 74 7b 32 5e 6e 7d 7b 47 7d 29 20 77 69 74 68 20 74 68 65 20 4d 2d 74 | on.Q(\sqrt{2^n}{G}).with.the.M-t |
| 2fa0 | 68 20 63 79 63 6c 6f 74 6f 6d 69 63 20 66 69 65 6c 64 00 23 20 43 6f 6d 70 75 74 65 73 20 74 68 | h.cyclotomic.field.#.Computes.th |
| 2fc0 | 65 20 22 61 64 65 6c 69 63 20 4b 75 6d 6d 65 72 20 66 61 69 6c 75 72 65 22 2c 20 69 2e 65 2e 20 | e."adelic.Kummer.failure",.i.e.. |
| 2fe0 | 74 68 65 20 64 65 67 72 65 65 73 20 6f 66 20 74 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f 6e 00 | the.degrees.of.the.intersection. |
| 3000 | 61 64 00 00 e4 09 00 00 bc 0a 00 00 00 10 00 00 2f 00 00 00 00 00 00 00 d3 0f 00 00 c5 0f 00 00 | ad............../............... |
| 3020 | 99 0f 00 00 98 0f 00 00 72 0f 00 00 4c 0f 00 00 37 0f 00 00 36 0f 00 00 ea 0e 00 00 c2 0e 00 00 | ........r...L...7...6........... |
| 3040 | 90 0e 00 00 8b 0e 00 00 47 0e 00 00 46 0e 00 00 25 0e 00 00 06 0e 00 00 f1 0d 00 00 ae 0d 00 00 | ........G...F...%............... |
| 3060 | ad 0d 00 00 66 0d 00 00 23 0d 00 00 06 0d 00 00 e9 0c 00 00 d6 0c 00 00 ad 0c 00 00 9b 0c 00 00 | ....f...#....................... |
| 3080 | 9a 0c 00 00 71 0c 00 00 3b 0c 00 00 3a 0c 00 00 19 0c 00 00 14 0c 00 00 f5 0b 00 00 e0 0b 00 00 | ....q...;...:................... |
| 30a0 | db 0b 00 00 ba 0b 00 00 99 0b 00 00 98 0b 00 00 87 0b 00 00 6e 0b 00 00 3d 0b 00 00 2f 0b 00 00 | ....................n...=.../... |
| 30c0 | ff 0a 00 00 f5 0a 00 00 e0 0a 00 00 df 0a 00 00 bc 0a 00 00 bb 0a 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 32a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 32c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 32e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 34a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 34c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 34e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3a00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 | ................................ |
| 3ac0 | 72 65 74 75 72 6e 20 65 78 70 5f 64 65 67 20 2f 20 66 61 69 6c 75 72 65 5b 69 5d 5b 6a 5d 00 00 | return.exp_deg./.failure[i][j].. |
| 3ae0 | 20 20 20 20 20 20 20 20 66 61 69 6c 75 72 65 20 3d 20 46 54 00 20 20 20 20 65 6c 73 65 3a 00 20 | ........failure.=.FT.....else:.. |
| 3b00 | 20 20 20 20 20 20 20 20 20 20 20 66 61 69 6c 75 72 65 20 3d 20 74 6f 72 73 69 6f 6e 5f 74 61 62 | ...........failure.=.torsion_tab |
| 3b20 | 6c 65 5f 6f 64 64 28 20 64 61 74 61 20 29 00 20 20 20 20 20 20 20 20 65 6c 73 65 3a 00 20 20 20 | le_odd(.data.).........else:.... |
| 3b40 | 20 20 20 20 20 20 20 20 20 66 61 69 6c 75 72 65 20 3d 20 74 6f 72 73 69 6f 6e 5f 74 61 62 6c 65 | .........failure.=.torsion_table |
| 3b60 | 5f 65 76 65 6e 28 20 64 61 74 61 20 29 00 20 20 20 20 20 20 20 20 69 66 20 28 4d 2f 4e 29 25 32 | _even(.data.).........if.(M/N)%2 |
| 3b80 | 20 3d 3d 20 30 3a 00 20 20 20 20 69 66 20 74 6f 72 73 69 6f 6e 3a 20 00 00 20 20 20 20 69 20 3d | .==.0:.....if.torsion:.......i.= |
| 3ba0 | 20 64 69 76 73 5f 4e 30 2e 69 6e 64 65 78 28 67 63 64 28 4e 2c 4e 30 29 29 00 20 20 20 20 6a 20 | .divs_N0.index(gcd(N,N0)).....j. |
| 3bc0 | 3d 20 64 69 76 73 5f 4d 30 2e 69 6e 64 65 78 28 67 63 64 28 4d 2c 4d 30 29 29 00 20 20 20 20 00 | =.divs_M0.index(gcd(M,M0))...... |
| 3be0 | 20 20 20 20 20 20 20 20 65 78 70 5f 64 65 67 20 2a 3d 20 32 00 20 20 20 20 69 66 20 74 6f 72 73 | ........exp_deg.*=.2.....if.tors |
| 3c00 | 69 6f 6e 20 61 6e 64 20 4e 20 25 20 32 20 3d 3d 20 30 3a 00 20 20 20 20 00 20 20 20 20 65 78 70 | ion.and.N.%.2.==.0:..........exp |
| 3c20 | 5f 64 65 67 20 3d 20 65 75 6c 65 72 5f 70 68 69 28 4d 29 20 2a 20 4e 5e 72 00 00 20 20 20 20 28 | _deg.=.euler_phi(M).*.N^r......( |
| 3c40 | 28 72 2c 74 6f 72 73 69 6f 6e 29 2c 28 4d 30 2c 64 69 76 73 5f 4d 30 29 2c 28 4e 30 2c 64 69 76 | (r,torsion),(M0,divs_M0),(N0,div |
| 3c60 | 73 5f 4e 30 29 2c 46 54 29 20 3d 20 64 61 74 61 00 20 20 20 20 64 61 74 61 20 3d 20 74 6f 74 61 | s_N0),FT).=.data.....data.=.tota |
| 3c80 | 6c 5f 6b 75 6d 6d 65 72 5f 66 61 69 6c 75 72 65 28 47 2c 46 61 6c 73 65 29 00 00 20 20 20 20 20 | l_kummer_failure(G,False)....... |
| 3ca0 | 20 20 20 72 65 74 75 72 6e 20 2d 31 00 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 4d 20 69 73 | ...return.-1.........print."M.is |
| 3cc0 | 20 6e 6f 74 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 4e 22 00 20 20 20 20 69 66 20 4d 20 25 | .not.a.multiple.of.N".....if.M.% |
| 3ce0 | 20 4e 20 21 3d 20 30 3a 00 64 65 66 20 4b 75 6d 6d 65 72 44 65 67 72 65 65 28 20 47 2c 20 4d 2c | .N.!=.0:.def.KummerDegree(.G,.M, |
| 3d00 | 20 4e 20 29 3a 00 23 20 4d 20 6d 75 73 74 20 62 65 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 | .N.):.#.M.must.be.a.multiple.of. |
| 3d20 | 4e 2e 00 23 20 6d 75 6c 74 69 70 6c 69 63 61 74 69 76 65 20 67 72 6f 75 70 20 6f 66 20 51 2c 20 | N..#.multiplicative.group.of.Q,. |
| 3d40 | 72 65 74 75 72 6e 73 20 74 68 65 20 64 65 67 72 65 65 20 6f 66 20 51 5f 7b 4d 2c 4e 7d 20 6f 76 | returns.the.degree.of.Q_{M,N}.ov |
| 3d60 | 65 72 20 51 2e 00 23 20 47 69 76 65 6e 20 61 20 73 65 74 20 6f 66 20 67 65 6e 65 72 61 74 6f 72 | er.Q..#.Given.a.set.of.generator |
| 3d80 | 73 20 66 6f 72 20 61 20 66 69 6e 69 74 65 6c 79 20 67 65 6e 65 72 61 74 65 64 20 73 75 62 67 72 | s.for.a.finitely.generated.subgr |
| 3da0 | 6f 75 70 20 47 20 6f 66 20 74 68 65 00 00 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 5f 64 65 67 | oup.G.of.the......return.exp_deg |
| 3dc0 | 20 2f 20 6b 75 6d 6d 65 72 5f 66 61 69 6c 75 72 65 5f 66 72 6f 6d 5f 74 6f 74 61 6c 5f 74 61 62 | ./.kummer_failure_from_total_tab |
| 3de0 | 6c 65 28 20 4d 2c 20 4e 2c 20 64 61 74 61 20 29 00 20 20 20 20 20 20 20 20 65 78 70 5f 64 65 67 | le(.M,.N,.data.).........exp_deg |
| 3e00 | 20 2a 3d 20 32 00 20 20 20 20 69 66 20 74 6f 72 73 69 6f 6e 20 61 6e 64 20 4e 20 25 20 32 20 3d | .*=.2.....if.torsion.and.N.%.2.= |
| 3e20 | 3d 20 30 3a 00 20 20 20 20 65 78 70 5f 64 65 67 20 3d 20 65 75 6c 65 72 5f 70 68 69 28 4d 29 20 | =.0:.....exp_deg.=.euler_phi(M). |
| 3e40 | 2a 20 4e 5e 72 00 00 20 20 20 20 28 20 28 20 72 2c 20 74 6f 72 73 69 6f 6e 20 29 2c 20 28 20 4d | *.N^r......(.(.r,.torsion.),.(.M |
| 3e60 | 30 2c 20 64 69 76 73 5f 4d 30 20 29 2c 20 28 20 4e 30 2c 20 64 69 76 73 5f 4e 30 20 29 2c 20 46 | 0,.divs_M0.),.(.N0,.divs_N0.),.F |
| 3e80 | 54 20 29 20 3d 20 64 61 74 61 00 20 20 20 20 00 64 65 66 20 6b 75 6d 6d 65 72 5f 64 65 67 72 65 | T.).=.data......def.kummer_degre |
| 3ea0 | 65 5f 66 72 6f 6d 5f 74 6f 74 61 6c 5f 74 61 62 6c 65 28 20 4d 2c 20 4e 2c 20 64 61 74 61 20 29 | e_from_total_table(.M,.N,.data.) |
| 3ec0 | 3a 00 23 20 74 61 62 6c 65 20 63 6f 6d 70 75 74 65 64 20 62 79 20 54 6f 74 61 6c 4b 75 6d 6d 65 | :.#.table.computed.by.TotalKumme |
| 3ee0 | 72 46 61 69 6c 75 72 65 2e 00 23 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 64 65 67 72 65 65 20 | rFailure..#.Computes.the.degree. |
| 3f00 | 6f 66 20 74 68 65 20 4b 75 6d 6d 65 72 20 65 78 74 65 6e 73 69 6f 6e 20 28 4d 2c 4e 29 2c 20 62 | of.the.Kummer.extension.(M,N),.b |
| 3f20 | 79 20 74 61 6b 69 6e 67 20 61 73 20 69 6e 70 75 74 20 74 68 65 00 00 20 20 20 20 72 65 74 75 72 | y.taking.as.input.the......retur |
| 3f40 | 6e 20 46 54 31 5b 69 5d 5b 6a 5d 00 20 20 20 20 6a 20 3d 20 64 69 76 73 5f 4d 30 2e 69 6e 64 65 | n.FT1[i][j].....j.=.divs_M0.inde |
| 3f60 | 78 28 20 67 63 64 28 20 4d 2c 20 4d 30 20 29 20 29 00 20 20 20 20 69 20 3d 20 64 69 76 73 5f 4e | x(.gcd(.M,.M0.).).....i.=.divs_N |
| 3f80 | 30 2e 69 6e 64 65 78 28 20 67 63 64 28 20 4e 2c 20 4e 30 20 29 20 29 00 00 20 20 20 20 20 20 20 | 0.index(.gcd(.N,.N0.).)......... |
| 3fa0 | 20 20 20 20 20 46 54 31 20 3d 20 74 6f 72 73 69 6f 6e 5f 74 61 62 6c 65 5f 6f 64 64 28 20 64 61 | .....FT1.=.torsion_table_odd(.da |
| 3fc0 | 74 61 20 29 00 20 20 20 20 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 46 | ta.).........else:.............F |
| 3fe0 | 54 31 20 3d 20 74 6f 72 73 69 6f 6e 5f 74 61 62 6c 65 5f 65 76 65 6e 28 20 64 61 74 61 20 29 00 | T1.=.torsion_table_even(.data.). |
| 4000 | 61 64 00 00 3f 0c 00 00 cb 0c 00 00 00 10 00 00 1c 00 00 00 00 00 00 00 e2 0f 00 00 c6 0f 00 00 | ad..?........................... |
| 4020 | 9f 0f 00 00 5a 0f 00 00 55 0f 00 00 32 0f 00 00 31 0f 00 00 fe 0e 00 00 af 0e 00 00 82 0e 00 00 | ....Z...U...2...1............... |
| 4040 | 64 0e 00 00 25 0e 00 00 0a 0e 00 00 f1 0d 00 00 e6 0d 00 00 d2 0d 00 00 d1 0d 00 00 b9 0d 00 00 | d...%........................... |
| 4060 | 74 0d 00 00 5f 0d 00 00 44 0d 00 00 32 0d 00 00 1c 0d 00 00 0a 0d 00 00 fc 0c 00 00 e3 0c 00 00 | t..._...D...2................... |
| 4080 | e2 0c 00 00 cb 0c 00 00 8d 0c 00 00 8c 0c 00 00 57 0c 00 00 49 0c 00 00 2b 0c 00 00 18 0c 00 00 | ................W...I...+....... |
| 40a0 | fb 0b 00 00 e0 0b 00 00 c3 0b 00 00 ab 0b 00 00 5a 0b 00 00 11 0b 00 00 f0 0a 00 00 c4 0a 00 00 | ................Z............... |
| 40c0 | 7d 0a 00 00 63 0a 00 00 32 0a 00 00 13 0a 00 00 e1 09 00 00 9d 09 00 00 66 09 00 00 4f 09 00 00 | }...c...2...............f...O... |
| 40e0 | 19 09 00 00 17 09 00 00 03 09 00 00 d4 08 00 00 9b 08 00 00 56 08 00 00 6f 08 00 00 6e 08 00 00 | ....................V...o...n... |
| 4100 | b1 07 00 00 82 07 00 00 66 07 00 00 4d 07 00 00 4c 07 00 00 fd 06 00 00 fc 06 00 00 e4 06 00 00 | ........f...M...L............... |
| 4120 | c4 06 00 00 88 06 00 00 7f 06 00 00 61 06 00 00 40 06 00 00 13 06 00 00 e4 05 00 00 db 05 00 00 | ............a...@............... |
| 4140 | 9e 05 00 00 9d 05 00 00 8f 05 00 00 73 05 00 00 51 05 00 00 37 05 00 00 19 05 00 00 0b 05 00 00 | ............s...Q...7........... |
| 4160 | 0a 05 00 00 ba 04 00 00 6c 04 00 00 39 04 00 00 ea 03 00 00 b7 03 00 00 6e 03 00 00 47 03 00 00 | ........l...9...........n...G... |
| 4180 | 31 03 00 00 25 03 00 00 17 03 00 00 f0 02 00 00 cd 02 00 00 b1 02 00 00 94 02 00 00 72 02 00 00 | 1...%.......................r... |
| 41a0 | 55 02 00 00 3f 02 00 00 1c 02 00 00 08 02 00 00 07 02 00 00 bc 01 00 00 00 00 00 00 23 20 47 69 | U...?.......................#.Gi |
| 41c0 | 76 65 6e 20 74 68 65 20 65 78 70 6f 6e 65 6e 74 20 6d 61 74 72 69 78 20 4d 20 6f 66 20 61 20 6c | ven.the.exponent.matrix.M.of.a.l |
| 41e0 | 69 73 74 20 6f 66 20 72 61 74 69 6f 6e 61 6c 20 6e 75 6d 62 65 72 73 20 42 2c 20 72 65 74 75 72 | ist.of.rational.numbers.B,.retur |
| 4200 | 6e 73 20 74 68 65 00 00 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 64 72 65 74 29 00 20 20 20 20 | ns.the......return.(B,dret)..... |
| 4220 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 5b 64 5d 5b 69 5d 20 2a 3d 20 6e 65 67 00 20 | ................B[d][i].*=.neg.. |
| 4240 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 20 20 20 | ...............else:............ |
| 4260 | 20 20 20 20 20 20 20 20 20 64 72 65 74 20 3d 20 64 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .........dret.=.d............... |
| 4280 | 20 20 20 20 20 20 6e 65 67 20 3d 20 42 5b 64 5d 5b 69 5d 00 20 20 20 20 20 20 20 20 20 20 20 20 | ......neg.=.B[d][i]............. |
| 42a0 | 20 20 20 20 69 66 20 6e 65 67 20 3d 3d 20 30 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 | ....if.neg.==.0:.............if. |
| 42c0 | 42 5b 64 5d 5b 69 5d 20 3c 20 30 3a 00 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 | B[d][i].<.0:.........for.i.in.ra |
| 42e0 | 6e 67 65 28 6c 65 6e 28 42 5b 64 5d 29 29 3a 00 20 20 20 20 66 6f 72 20 64 20 69 6e 20 72 61 6e | nge(len(B[d])):.....for.d.in.ran |
| 4300 | 67 65 28 20 6c 65 6e 28 42 29 2d 31 2c 20 30 2c 20 2d 31 20 29 3a 00 20 20 20 20 64 72 65 74 20 | ge(.len(B)-1,.0,.-1.):.....dret. |
| 4320 | 3d 20 2d 31 00 20 20 20 20 6e 65 67 20 3d 20 30 00 64 65 66 20 61 64 6a 75 73 74 5f 73 69 67 6e | =.-1.....neg.=.0.def.adjust_sign |
| 4340 | 28 20 42 20 29 3a 00 23 20 61 6c 67 6f 72 69 74 68 6d 2c 20 73 6f 20 77 65 20 6b 65 65 70 20 74 | (.B.):.#.algorithm,.so.we.keep.t |
| 4360 | 68 65 6d 20 6e 65 67 61 74 69 76 65 2e 00 23 20 54 68 65 20 73 69 67 6e 20 6f 66 20 74 68 65 20 | hem.negative..#.The.sign.of.the. |
| 4380 | 64 3d 30 20 65 6c 65 6d 65 6e 74 73 20 69 73 20 6a 75 73 74 20 69 67 6e 6f 72 65 64 20 69 6e 20 | d=0.elements.is.just.ignored.in. |
| 43a0 | 74 68 65 20 6f 74 68 65 72 20 73 74 65 70 73 20 6f 66 20 74 68 65 00 23 20 70 61 72 61 6d 65 74 | the.other.steps.of.the.#.paramet |
| 43c0 | 65 72 20 6f 66 20 74 68 65 20 6f 6e 6c 79 20 6e 65 67 61 74 69 76 65 20 65 6c 65 6d 65 6e 74 20 | er.of.the.only.negative.element. |
| 43e0 | 72 65 6d 61 69 6e 65 64 2e 00 23 20 52 65 74 75 72 6e 73 20 61 20 70 61 69 72 20 28 42 2c 64 29 | remained..#.Returns.a.pair.(B,d) |
| 4400 | 2c 20 77 68 65 72 65 20 42 20 69 73 20 74 68 65 20 75 70 64 61 74 65 64 20 62 61 73 69 73 20 61 | ,.where.B.is.the.updated.basis.a |
| 4420 | 6e 64 20 64 20 69 73 20 74 68 65 20 64 69 76 69 73 69 62 69 6c 69 74 79 00 23 20 62 61 73 69 73 | nd.d.is.the.divisibility.#.basis |
| 4440 | 20 69 6e 20 74 68 65 20 66 6f 72 6d 61 74 20 72 65 74 75 72 6e 65 64 20 62 79 20 6d 61 6b 65 5f | .in.the.format.returned.by.make_ |
| 4460 | 67 6f 6f 64 5f 62 61 73 69 73 2e 00 23 20 6d 6f 73 74 20 6f 6e 65 20 6e 65 67 61 74 69 76 65 20 | good_basis..#.most.one.negative. |
| 4480 | 67 65 6e 65 72 61 74 6f 72 20 28 6f 66 20 70 6f 73 69 74 69 76 65 20 64 69 76 69 73 69 62 69 6c | generator.(of.positive.divisibil |
| 44a0 | 69 74 79 29 2e 20 54 68 65 20 69 6e 70 75 74 20 69 73 20 61 20 67 6f 6f 64 00 23 20 54 61 6b 65 | ity)..The.input.is.a.good.#.Take |
| 44c0 | 73 20 61 20 67 6f 6f 64 20 62 61 73 69 73 20 42 20 61 6e 64 20 61 64 6a 75 73 74 73 20 74 68 65 | s.a.good.basis.B.and.adjusts.the |
| 44e0 | 20 73 69 67 6e 20 6f 66 20 74 68 65 20 65 6c 65 6d 65 6e 74 73 20 73 6f 20 74 68 61 74 20 74 68 | .sign.of.the.elements.so.that.th |
| 4500 | 65 72 65 20 69 73 20 61 74 00 00 20 20 20 20 72 65 74 75 72 6e 20 47 42 00 20 20 20 20 20 20 20 | ere.is.at......return.GB........ |
| 4520 | 20 47 42 5b 64 5b 69 5d 5d 2e 61 70 70 65 6e 64 28 62 5b 69 5d 29 00 20 20 20 20 20 20 20 20 20 | .GB[d[i]].append(b[i]).......... |
| 4540 | 20 20 20 47 42 2e 61 70 70 65 6e 64 28 5b 5d 29 00 20 20 20 20 20 20 20 20 77 68 69 6c 65 28 20 | ...GB.append([]).........while(. |
| 4560 | 6c 65 6e 28 47 42 29 20 3c 3d 20 64 5b 69 5d 20 29 3a 00 20 20 20 20 66 6f 72 20 69 20 69 6e 20 | len(GB).<=.d[i].):.....for.i.in. |
| 4580 | 72 61 6e 67 65 28 6c 65 6e 28 64 29 29 3a 00 20 20 20 20 47 42 20 3d 20 5b 5b 5d 5d 00 00 20 20 | range(len(d)):.....GB.=.[[]].... |
| 45a0 | 20 20 20 20 20 20 63 6f 65 66 66 73 20 3d 20 66 69 6e 64 5f 63 6f 6d 62 69 6e 61 74 69 6f 6e 28 | ......coeffs.=.find_combination( |
| 45c0 | 20 65 78 70 6f 6e 65 6e 74 5f 6d 61 74 72 69 78 28 20 42 20 29 2c 20 6c 20 29 00 20 20 20 20 20 | .exponent_matrix(.B.),.l.)...... |
| 45e0 | 20 20 20 00 20 20 20 20 20 20 20 20 42 5b 6d 61 78 69 5d 20 3d 20 61 62 73 28 62 5b 6d 61 78 69 | ............B[maxi].=.abs(b[maxi |
| 4600 | 5d 29 5e 28 31 2f 28 6c 5e 64 5b 6d 61 78 69 5d 29 29 00 20 20 20 20 20 20 20 20 64 5b 6d 61 78 | ])^(1/(l^d[maxi])).........d[max |
| 4620 | 69 5d 20 3d 20 64 69 76 69 73 69 62 69 6c 69 74 79 28 20 4d 5b 6d 61 78 69 5d 2c 20 6c 20 29 00 | i].=.divisibility(.M[maxi],.l.). |
| 4640 | 20 20 20 20 20 20 20 20 4d 20 3d 20 65 78 70 6f 6e 65 6e 74 5f 6d 61 74 72 69 78 28 20 62 20 29 | ........M.=.exponent_matrix(.b.) |
| 4660 | 00 20 20 20 20 20 20 20 20 62 5b 6d 61 78 69 5d 20 3d 20 6e 65 77 5f 65 6c 65 6d 65 6e 74 00 20 | .........b[maxi].=.new_element.. |
| 4680 | 20 20 20 20 20 20 20 00 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 5f 65 6c 65 6d 65 6e 74 20 | ....................new_element. |
| 46a0 | 2a 3d 20 62 5b 69 5d 5e 28 20 78 5b 69 5d 20 2a 20 6c 5e 28 64 5b 6d 61 78 69 5d 2d 64 5b 69 5d | *=.b[i]^(.x[i].*.l^(d[maxi]-d[i] |
| 46c0 | 29 20 29 00 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 | ).).........for.i.in.range(len(d |
| 46e0 | 29 29 3a 00 20 20 20 20 20 20 20 20 6e 65 77 5f 65 6c 65 6d 65 6e 74 20 3d 20 31 00 00 20 20 20 | )):.........new_element.=.1..... |
| 4700 | 20 20 20 20 20 78 20 3d 20 5b 20 28 61 2f 63 6f 65 66 66 73 5b 6d 61 78 69 5d 29 2e 6c 69 66 74 | .....x.=.[.(a/coeffs[maxi]).lift |
| 4720 | 28 29 20 66 6f 72 20 61 20 69 6e 20 63 6f 65 66 66 73 20 5d 20 23 20 4e 6f 77 20 61 20 76 65 63 | ().for.a.in.coeffs.].#.Now.a.vec |
| 4740 | 74 6f 72 20 6f 66 20 69 6e 74 73 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 | tor.of.ints..................max |
| 4760 | 69 20 3d 20 69 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 64 20 3d 20 64 5b 69 | i.=.i.................maxd.=.d[i |
| 4780 | 5d 00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 5b 69 5d 20 3e 20 6d 61 78 64 20 61 6e 64 | ].............if.d[i].>.maxd.and |
| 47a0 | 20 63 6f 65 66 66 73 5b 69 5d 20 21 3d 20 30 3a 00 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 | .coeffs[i].!=.0:.........for.i.i |
| 47c0 | 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 29 29 3a 00 20 20 20 20 20 20 20 20 6d 61 78 64 20 3d 20 | n.range(len(d)):.........maxd.=. |
| 47e0 | 2d 31 00 20 20 20 20 20 20 20 20 6d 61 78 69 20 3d 20 2d 31 00 20 20 20 20 20 20 20 20 23 20 63 | -1.........maxi.=.-1.........#.c |
| 4800 | 6f 6d 62 69 6e 61 74 69 6f 6e 20 61 62 6f 76 65 29 20 68 61 73 20 6d 61 78 69 6d 61 6c 20 64 69 | ombination.above).has.maximal.di |
| 4820 | 76 69 73 69 62 69 6c 69 74 79 2e 00 20 20 20 20 20 20 20 20 23 20 43 6f 6d 70 75 74 65 73 20 77 | visibility..........#.Computes.w |
| 4840 | 68 69 63 68 20 62 61 73 69 73 20 65 6c 65 6d 65 6e 74 20 20 20 20 20 20 20 20 72 65 74 75 72 6e | hich.basis.element........return |
| 4860 | 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 42 2e 61 70 70 65 | .(B,torsion)..............B.appe |
| 4880 | 6e 64 28 67 72 29 00 20 20 20 20 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 20 20 72 | nd(gr).........else:...........r |
| 48a0 | 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 42 | eturn.(B,torsion)..............B |
| 48c0 | 2e 61 70 70 65 6e 64 28 67 72 29 00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 | .append(gr).............return.( |
| 48e0 | 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 42 2e 61 70 70 65 6e 64 | B,torsion)..............B.append |
| 4900 | 28 67 72 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 20 20 20 20 20 20 72 65 74 | (gr....return.(B,torsio......ret |
| 4920 | 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 42 2e 61 | urn.(B,torsion)..............B.a |
| 4940 | 70 70 65 6e 64 28 67 72 29 00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 | ppend(gr)..........return.(B,tor |
| 4960 | 73 69 6f 6e 29 00 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 | sion).....return.(B,torsion).... |
| 4980 | 20 20 20 20 20 20 20 20 20 20 42 2e 61 70 70 65 6e 64 28 67 72 29 00 20 20 20 20 20 20 20 20 20 | ..........B.append(gr).......... |
| 49a0 | 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 | .return.(B,torsion)............. |
| 49c0 | 20 42 2e 61 70 70 65 6e 64 28 67 72 29 00 20 20 20 20 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 | .B.append(gr).........else:..... |
| 49e0 | 20 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 | .....return.(B,torsion)......... |
| 4a00 | 20 20 20 20 20 42 2e 61 70 70 65 6e 64 28 67 72 29 00 20 20 20 20 20 72 65 74 75 72 6e 20 28 42 | .....B.append(gr)......return.(B |
| 4a20 | 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c | ,torsion).............return.(B, |
| 4a40 | 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 42 2e 61 70 70 65 6e 64 28 67 | torsion)..............B.append(g |
| 4a60 | 72 29 00 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 | r).....return.(B,torsion)....... |
| 4a80 | 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 | .return.(B,torsion)............. |
| 4aa0 | 20 42 2e 61 70 70 65 6e 64 28 67 72 29 00 20 20 20 20 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 | .B.append(gr).........else:..... |
| 4ac0 | 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 | ........return.(B,torsion)...... |
| 4ae0 | 20 20 20 20 20 20 20 20 42 2e 61 70 70 65 6e 64 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f | ........B.append....return.(B,to |
| 4b00 | 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 | rsion)...............return.(B,t |
| 4b20 | 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 42 2e 61 70 70 65 6e 64 28 67 72 | orsion)..............B.append(gr |
| 4b40 | 29 00 20 20 20 20 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 | ).........else:...............re |
| 4b60 | 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 42 2e | turn.(B,torsion)..............B. |
| 4b80 | 61 70 70 65 6e 64 28 67 72 29 00 20 20 20 20 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 | append(gr).........else:........ |
| 4ba0 | 20 20 20 20 20 62 72 65 61 6b 00 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e | .....break.....return.(B,torsion |
| 4bc0 | 29 00 00 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 | )......return.(B,torsion)....... |
| 4be0 | 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 72 | ....return.(B,torsion).........r |
| 4c00 | 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 72 65 74 75 | eturn.(B,torsion)...........retu |
| 4c20 | 72 6e 20 28 42 2c 74 6f 72 73 69 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e | rn.(B,torsi....return.(B,torsion |
| 4c40 | 29 00 00 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 20 20 20 20 72 65 74 75 72 | )............return.(B,....retur |
| 4c60 | 6e 20 28 42 2c 74 6f 72 73 69 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 42 2e 61 70 70 | n.(B,torsion)..............B.app |
| 4c80 | 65 6e 64 28 67 72 29 00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 | end(gr)..........return.(B,torsi |
| 4ca0 | 6f 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 42 2e 61 70 70 65 6e 64 28 67 72 29 00 20 20 | on)..............B.append(gr)... |
| 4cc0 | 20 20 20 20 20 20 65 6c 73 65 3a 20 20 20 20 72 65 74 75 72 6e 20 28 42 2c 74 6f 72 73 69 6f 6e | ......else:....return.(B,torsion |
| 4ce0 | 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 42 2e 61 70 70 65 6e 64 28 67 72 29 00 20 20 20 20 | )..............B.append(gr)..... |
| 4d00 | 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 00 20 20 20 20 | ....else:.............break..... |
| 4d20 | 20 20 20 20 65 6c 69 66 20 67 72 20 3d 3d 20 31 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 62 72 | ....elif.gr.==.1:.............br |
| 4d40 | 65 61 6b 00 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 72 73 69 6f 6e 20 3d 20 54 72 75 65 00 20 | eak.............torsion.=.True.. |
| 4d60 | 20 20 20 20 20 20 20 69 66 20 67 72 20 3d 3d 20 2d 31 3a 00 20 20 20 20 20 20 20 20 67 72 20 3d | .......if.gr.==.-1:.........gr.= |
| 4d80 | 20 70 72 6f 64 75 63 74 28 20 5b 20 42 4d 5f 70 72 69 6d 65 73 5b 69 5d 5e 72 5b 69 5d 20 66 6f | .product(.[.BM_primes[i]^r[i].fo |
| 4da0 | 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 72 29 29 20 5d 20 29 00 20 20 20 20 66 6f 72 | r.i.in.range(len(r)).].).....for |
| 4dc0 | 20 72 20 69 6e 20 42 4d 2e 72 6f 77 73 28 29 3a 00 00 20 20 20 20 74 6f 72 73 69 6f 6e 20 3d 20 | .r.in.BM.rows():......torsion.=. |
| 4de0 | 46 61 6c 73 65 00 20 20 20 20 42 20 3d 20 5b 5d 00 20 20 20 20 42 4d 5f 70 72 69 6d 65 73 2e 61 | False.....B.=.[].....BM_primes.a |
| 4e00 | 70 70 65 6e 64 28 2d 31 29 00 20 20 20 20 42 4d 20 3d 20 42 4d 2e 65 63 68 65 6c 6f 6e 5f 66 6f | ppend(-1).....BM.=.BM.echelon_fo |
| 4e20 | 72 6d 28 29 00 20 20 20 20 28 42 4d 2c 42 4d 5f 70 72 69 6d 65 73 29 20 3d 20 65 78 70 6f 6e 65 | rm().....(BM,BM_primes).=.expone |
| 4e40 | 6e 74 5f 6d 61 74 72 69 78 5f 77 69 74 68 5f 73 69 67 6e 5f 61 6e 64 5f 70 72 69 6d 65 73 28 20 | nt_matrix_with_sign_and_primes(. |
| 4e60 | 47 20 29 00 64 65 66 20 67 65 6e 65 72 61 74 6f 72 73 5f 74 6f 5f 62 61 73 69 73 28 20 47 20 29 | G.).def.generators_to_basis(.G.) |
| 4e80 | 3a 00 23 20 69 73 20 74 72 75 65 20 69 66 20 2d 31 20 69 73 20 69 6e 20 47 20 61 6e 64 20 66 61 | :.#.is.true.if.-1.is.in.G.and.fa |
| 4ea0 | 6c 73 65 20 6f 74 68 65 72 77 69 73 65 2e 00 23 20 52 65 74 75 72 6e 73 20 61 20 70 61 69 72 20 | lse.otherwise..#.Returns.a.pair. |
| 4ec0 | 28 42 2c 74 6f 72 73 69 6f 6e 29 20 77 68 65 72 65 20 42 20 69 73 20 61 20 6c 69 73 74 20 6f 66 | (B,torsion).where.B.is.a.list.of |
| 4ee0 | 20 72 61 74 69 6f 6e 61 6c 20 6e 75 6d 62 65 72 73 20 61 6e 64 20 74 6f 72 73 69 6f 6e 00 23 20 | .rational.numbers.and.torsion.#. |
| 4f00 | 43 6f 6d 70 75 74 65 73 20 61 20 62 61 73 69 73 20 66 6f 72 20 47 20 66 72 6f 6d 20 61 20 73 65 | Computes.a.basis.for.G.from.a.se |
| 4f20 | 74 20 6f 66 20 67 65 6e 65 72 61 74 6f 72 73 2e 00 00 20 20 20 20 72 65 74 75 72 6e 20 4d 20 2d | t.of.generators.......return.M.- |
| 4f40 | 20 6d 20 2b 20 72 2a 6e 20 2d 20 73 75 6d 28 20 6e 69 20 29 00 20 20 20 20 00 20 20 20 20 4d 20 | .m.+.r*n.-.sum(.ni.)..........M. |
| 4f60 | 3d 20 6d 61 78 28 20 6d 2c 20 6d 61 78 28 20 5b 20 68 5b 69 5d 20 2b 20 6e 69 5b 69 5d 20 66 6f | =.max(.m,.max(.[.h[i].+.ni[i].fo |
| 4f80 | 72 20 69 20 69 6e 20 72 61 6e 67 65 28 20 6c 65 6e 28 20 70 20 29 20 29 20 5d 20 29 20 29 00 20 | r.i.in.range(.len(.p.).).].).).. |
| 4fa0 | 20 20 20 6e 69 20 3d 20 5b 20 6d 69 6e 28 20 6e 2c 20 78 5b 30 5d 20 29 20 66 6f 72 20 78 20 69 | ...ni.=.[.min(.n,.x[0].).for.x.i |
| 4fc0 | 6e 20 70 20 5d 00 20 20 20 20 68 20 3d 20 5b 20 78 5b 31 5d 20 66 6f 72 20 78 20 69 6e 20 70 20 | n.p.].....h.=.[.x[1].for.x.in.p. |
| 4fe0 | 5d 00 64 65 66 20 63 6f 6d 70 75 74 65 5f 76 6c 28 20 70 2c 20 6e 2c 20 6d 2c 20 72 20 29 3a 00 | ].def.compute_vl(.p,.n,.m,.r.):. |
| 5000 | 61 64 00 00 c3 05 00 00 ef 06 00 00 00 10 00 00 44 00 00 00 00 00 00 00 ff 0f 00 00 b1 0f 00 00 | ad..............D............... |
| 5020 | 63 0f 00 00 46 0f 00 00 29 0f 00 00 1e 0f 00 00 13 0f 00 00 f7 0e 00 00 d2 0e 00 00 bb 0e 00 00 | c...F...)....................... |
| 5040 | 92 0e 00 00 91 0e 00 00 47 0e 00 00 02 0e 00 00 c9 0d 00 00 c8 0d 00 00 b0 0d 00 00 af 0d 00 00 | ........G....................... |
| 5060 | 5f 0d 00 00 28 0d 00 00 16 0d 00 00 04 0d 00 00 e4 0c 00 00 b5 0c 00 00 99 0c 00 00 80 0c 00 00 | _...(........................... |
| 5080 | 7f 0c 00 00 30 0c 00 00 2f 0c 00 00 17 0c 00 00 f7 0b 00 00 bb 0b 00 00 b2 0b 00 00 94 0b 00 00 | ....0.../....................... |
| 50a0 | 73 0b 00 00 46 0b 00 00 17 0b 00 00 0e 0b 00 00 d1 0a 00 00 d0 0a 00 00 c2 0a 00 00 a6 0a 00 00 | s...F........................... |
| 50c0 | 84 0a 00 00 6a 0a 00 00 4c 0a 00 00 3e 0a 00 00 3d 0a 00 00 ed 09 00 00 9f 09 00 00 6c 09 00 00 | ....j...L...>...=...........l... |
| 50e0 | 1d 09 00 00 ea 08 00 00 a1 08 00 00 7a 08 00 00 64 08 00 00 58 08 00 00 4a 08 00 00 23 08 00 00 | ............z...d...X...J...#... |
| 5100 | 00 08 00 00 e4 07 00 00 c7 07 00 00 a5 07 00 00 88 07 00 00 72 07 00 00 4f 07 00 00 3b 07 00 00 | ....................r...O...;... |
| 5120 | 3a 07 00 00 ef 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | :............................... |
| 5140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 51a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 51c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 51e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 52a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 52c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 52e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 53a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 53c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 53e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 54a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 54c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 54e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 55a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 55c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 55e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 56a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 56c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 56e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 23 20 47 69 76 65 6e 20 74 68 65 20 65 78 70 6f 6e | ...............#.Given.the.expon |
| 5700 | 65 6e 74 20 6d 61 74 72 69 78 20 4d 20 6f 66 20 61 20 6c 69 73 74 20 6f 66 20 72 61 74 69 6f 6e | ent.matrix.M.of.a.list.of.ration |
| 5720 | 61 6c 20 6e 75 6d 62 65 72 73 20 42 2c 20 72 65 74 75 72 6e 73 20 74 68 65 00 00 20 20 20 20 72 | al.numbers.B,.returns.the......r |
| 5740 | 65 74 75 72 6e 20 28 42 2c 64 72 65 74 29 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | eturn.(B,dret).................. |
| 5760 | 20 20 20 42 5b 64 5d 5b 69 5d 20 2a 3d 20 6e 65 67 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...B[d][i].*=.neg............... |
| 5780 | 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 72 65 74 | ..else:.....................dret |
| 57a0 | 20 3d 20 64 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 67 20 3d 20 42 | .=.d.....................neg.=.B |
| 57c0 | 5b 64 5d 5b 69 5d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 65 67 20 3d 3d | [d][i].................if.neg.== |
| 57e0 | 20 30 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 42 5b 64 5d 5b 69 5d 20 3c 20 30 3a 00 | .0:.............if.B[d][i].<.0:. |
| 5800 | 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 42 5b 64 5d 29 | ........for.i.in.range(len(B[d]) |
| 5820 | 29 3a 00 20 20 20 20 66 6f 72 20 64 20 69 6e 20 72 61 6e 67 65 28 20 6c 65 6e 28 42 29 2d 31 2c | ):.....for.d.in.range(.len(B)-1, |
| 5840 | 20 30 2c 20 2d 31 20 29 3a 00 20 20 20 20 64 72 65 74 20 3d 20 2d 31 00 20 20 20 20 6e 65 67 20 | .0,.-1.):.....dret.=.-1.....neg. |
| 5860 | 3d 20 30 00 64 65 66 20 61 64 6a 75 73 74 5f 73 69 67 6e 28 20 42 20 29 3a 00 23 20 61 6c 67 6f | =.0.def.adjust_sign(.B.):.#.algo |
| 5880 | 72 69 74 68 6d 2c 20 73 6f 20 77 65 20 6b 65 65 70 20 74 68 65 6d 20 6e 65 67 61 74 69 76 65 2e | rithm,.so.we.keep.them.negative. |
| 58a0 | 00 23 20 54 68 65 20 73 69 67 6e 20 6f 66 20 74 68 65 20 64 3d 30 20 65 6c 65 6d 65 6e 74 73 20 | .#.The.sign.of.the.d=0.elements. |
| 58c0 | 69 73 20 6a 75 73 74 20 69 67 6e 6f 72 65 64 20 69 6e 20 74 68 65 20 6f 74 68 65 72 20 73 74 65 | is.just.ignored.in.the.other.ste |
| 58e0 | 70 73 20 6f 66 20 74 68 65 00 23 20 70 61 72 61 6d 65 74 65 72 20 6f 66 20 74 68 65 20 6f 6e 6c | ps.of.the.#.parameter.of.the.onl |
| 5900 | 79 20 6e 65 67 61 74 69 76 65 20 65 6c 65 6d 65 6e 74 20 72 65 6d 61 69 6e 65 64 2e 00 23 20 52 | y.negative.element.remained..#.R |
| 5920 | 65 74 75 72 6e 73 20 61 20 70 61 69 72 20 28 42 2c 64 29 2c 20 77 68 65 72 65 20 42 20 69 73 20 | eturns.a.pair.(B,d),.where.B.is. |
| 5940 | 74 68 65 20 75 70 64 61 74 65 64 20 62 61 73 69 73 20 61 6e 64 20 64 20 69 73 20 74 68 65 20 64 | the.updated.basis.and.d.is.the.d |
| 5960 | 69 76 69 73 69 62 69 6c 69 74 79 00 23 20 62 61 73 69 73 20 69 6e 20 74 68 65 20 66 6f 72 6d 61 | ivisibility.#.basis.in.the.forma |
| 5980 | 74 20 72 65 74 75 72 6e 65 64 20 62 79 20 6d 61 6b 65 5f 67 6f 6f 64 5f 62 61 73 69 73 2e 00 23 | t.returned.by.make_good_basis..# |
| 59a0 | 20 6d 6f 73 74 20 6f 6e 65 20 6e 65 67 61 74 69 76 65 20 67 65 6e 65 72 61 74 6f 72 20 28 6f 66 | .most.one.negative.generator.(of |
| 59c0 | 20 70 6f 73 69 74 69 76 65 20 64 69 76 69 73 69 62 69 6c 69 74 79 29 2e 20 54 68 65 20 69 6e 70 | .positive.divisibility)..The.inp |
| 59e0 | 75 74 20 69 73 20 61 20 67 6f 6f 64 00 23 20 54 61 6b 65 73 20 61 20 67 6f 6f 64 20 62 61 73 69 | ut.is.a.good.#.Takes.a.good.basi |
| 5a00 | 73 20 42 20 61 6e 64 20 61 64 6a 75 73 74 73 20 74 68 65 20 73 69 67 6e 20 6f 66 20 74 68 65 20 | s.B.and.adjusts.the.sign.of.the. |
| 5a20 | 65 6c 65 6d 65 6e 74 73 20 73 6f 20 74 68 61 74 20 74 68 65 72 65 20 69 73 20 61 74 00 00 20 20 | elements.so.that.there.is.at.... |
| 5a40 | 20 20 72 65 74 75 72 6e 20 47 42 00 20 20 20 20 20 20 20 20 47 42 5b 64 5b 69 5d 5d 2e 61 70 70 | ..return.GB.........GB[d[i]].app |
| 5a60 | 65 6e 64 28 62 5b 69 5d 29 00 20 20 20 20 20 20 20 20 20 20 20 20 47 42 2e 61 70 70 65 6e 64 28 | end(b[i]).............GB.append( |
| 5a80 | 5b 5d 29 00 20 20 20 20 20 20 20 20 77 68 69 6c 65 28 20 6c 65 6e 28 47 42 29 20 3c 3d 20 64 5b | []).........while(.len(GB).<=.d[ |
| 5aa0 | 69 5d 20 29 3a 00 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 29 29 | i].):.....for.i.in.range(len(d)) |
| 5ac0 | 3a 00 20 20 20 20 47 42 20 3d 20 5b 5b 5d 5d 00 00 20 20 20 20 20 20 20 20 63 6f 65 66 66 73 20 | :.....GB.=.[[]]..........coeffs. |
| 5ae0 | 3d 20 66 69 6e 64 5f 63 6f 6d 62 69 6e 61 74 69 6f 6e 28 20 65 78 70 6f 6e 65 6e 74 5f 6d 61 74 | =.find_combination(.exponent_mat |
| 5b00 | 72 69 78 28 20 42 20 29 2c 20 6c 20 29 00 20 20 20 20 20 20 20 20 00 20 20 20 20 20 20 20 20 42 | rix(.B.),.l.)..................B |
| 5b20 | 5b 6d 61 78 69 5d 20 3d 20 61 62 73 28 62 5b 6d 61 78 69 5d 29 5e 28 31 2f 28 6c 5e 64 5b 6d 61 | [maxi].=.abs(b[maxi])^(1/(l^d[ma |
| 5b40 | 78 69 5d 29 29 00 20 20 20 20 20 20 20 20 64 5b 6d 61 78 69 5d 20 3d 20 64 69 76 69 73 69 62 69 | xi])).........d[maxi].=.divisibi |
| 5b60 | 6c 69 74 79 28 20 4d 5b 6d 61 78 69 5d 2c 20 6c 20 29 00 20 20 20 20 20 20 20 20 4d 20 3d 20 65 | lity(.M[maxi],.l.).........M.=.e |
| 5b80 | 78 70 6f 6e 65 6e 74 5f 6d 61 74 72 69 78 28 20 62 20 29 00 20 20 20 20 20 20 20 20 62 5b 6d 61 | xponent_matrix(.b.).........b[ma |
| 5ba0 | 78 69 5d 20 3d 20 6e 65 77 5f 65 6c 65 6d 65 6e 74 00 20 20 20 20 20 20 20 20 00 20 20 20 20 20 | xi].=.new_element............... |
| 5bc0 | 20 20 20 20 20 20 20 6e 65 77 5f 65 6c 65 6d 65 6e 74 20 2a 3d 20 62 5b 69 5d 5e 28 20 78 5b 69 | .......new_element.*=.b[i]^(.x[i |
| 5be0 | 5d 20 2a 20 6c 5e 28 64 5b 6d 61 78 69 5d 2d 64 5b 69 5d 29 20 29 00 20 20 20 20 20 20 20 20 66 | ].*.l^(d[maxi]-d[i]).).........f |
| 5c00 | 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 29 29 3a 00 20 20 20 20 20 20 20 20 6e | or.i.in.range(len(d)):.........n |
| 5c20 | 65 77 5f 65 6c 65 6d 65 6e 74 20 3d 20 31 00 00 20 20 20 20 20 20 20 20 78 20 3d 20 5b 20 28 61 | ew_element.=.1..........x.=.[.(a |
| 5c40 | 2f 63 6f 65 66 66 73 5b 6d 61 78 69 5d 29 2e 6c 69 66 74 28 29 20 66 6f 72 20 61 20 69 6e 20 63 | /coeffs[maxi]).lift().for.a.in.c |
| 5c60 | 6f 65 66 66 73 20 5d 20 23 20 4e 6f 77 20 61 20 76 65 63 74 6f 72 20 6f 66 20 69 6e 74 73 00 00 | oeffs.].#.Now.a.vector.of.ints.. |
| 5c80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 69 20 3d 20 69 00 20 20 20 20 20 20 20 | ................maxi.=.i........ |
| 5ca0 | 20 20 20 20 20 20 20 20 20 6d 61 78 64 20 3d 20 64 5b 69 5d 00 20 20 20 20 20 20 20 20 20 20 20 | .........maxd.=.d[i]............ |
| 5cc0 | 20 69 66 20 64 5b 69 5d 20 3e 20 6d 61 78 64 20 61 6e 64 20 63 6f 65 66 66 73 5b 69 5d 20 21 3d | .if.d[i].>.maxd.and.coeffs[i].!= |
| 5ce0 | 20 30 3a 00 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 | .0:.........for.i.in.range(len(d |
| 5d00 | 29 29 3a 00 20 20 20 20 20 20 20 20 6d 61 78 64 20 3d 20 2d 31 00 20 20 20 20 20 20 20 20 6d 61 | )):.........maxd.=.-1.........ma |
| 5d20 | 78 69 20 3d 20 2d 31 00 20 20 20 20 20 20 20 20 23 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 61 62 | xi.=.-1.........#.combination.ab |
| 5d40 | 6f 76 65 29 20 68 61 73 20 6d 61 78 69 6d 61 6c 20 64 69 76 69 73 69 62 69 6c 69 74 79 2e 00 20 | ove).has.maximal.divisibility... |
| 5d60 | 20 20 20 20 20 20 20 23 20 43 6f 6d 70 75 74 65 73 20 77 68 69 63 68 20 62 61 73 69 73 20 65 6c | .......#.Computes.which.basis.el |
| 5d80 | 65 6d 65 6e 74 20 28 77 69 74 68 20 6e 6f 6e 2d 7a 65 72 6f 20 63 6f 65 66 66 69 63 69 65 6e 74 | ement.(with.non-zero.coefficient |
| 5da0 | 20 69 6e 20 74 68 65 20 6c 69 6e 65 61 72 00 00 20 20 20 20 77 68 69 6c 65 20 63 6f 65 66 66 73 | .in.the.linear......while.coeffs |
| 5dc0 | 20 21 3d 20 5b 5d 3a 00 00 20 20 20 20 63 6f 65 66 66 73 20 3d 20 66 69 6e 64 5f 63 6f 6d 62 69 | .!=.[]:......coeffs.=.find_combi |
| 5de0 | 6e 61 74 69 6f 6e 28 20 65 78 70 6f 6e 65 6e 74 5f 6d 61 74 72 69 78 28 20 42 20 29 2c 20 6c 20 | nation(.exponent_matrix(.B.),.l. |
| 5e00 | 29 00 20 20 20 20 23 20 74 68 61 74 20 69 73 20 7a 65 72 6f 20 6d 6f 64 75 6c 6f 20 6c 2e 20 54 | ).....#.that.is.zero.modulo.l..T |
| 5e20 | 68 65 73 65 20 63 6f 65 66 66 69 63 69 65 6e 74 73 20 61 72 65 20 65 6c 65 6d 65 6e 74 73 20 6f | hese.coefficients.are.elements.o |
| 5e40 | 66 20 46 5f 6c 2e 00 20 20 20 20 23 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 63 6f 65 66 66 69 | f.F_l......#.Computes.the.coeffi |
| 5e60 | 65 63 69 65 6e 74 73 20 6f 66 20 61 20 6c 69 6e 65 61 72 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 | ecients.of.a.linear.combination. |
| 5e80 | 6f 66 20 74 68 65 20 72 6f 77 73 20 6f 66 20 4d 00 00 20 20 20 20 20 20 20 20 42 2e 61 70 70 65 | of.the.rows.of.M..........B.appe |
| 5ea0 | 6e 64 28 20 61 62 73 28 62 5b 69 5d 29 5e 28 31 2f 28 6c 5e 64 69 29 29 20 29 00 20 20 20 20 20 | nd(.abs(b[i])^(1/(l^di)).)...... |
| 5ec0 | 20 20 20 64 2e 61 70 70 65 6e 64 28 20 64 69 20 29 00 20 20 20 20 20 20 20 20 64 69 20 3d 20 64 | ...d.append(.di.).........di.=.d |
| 5ee0 | 69 76 69 73 69 62 69 6c 69 74 79 28 20 4d 5b 69 5d 2c 20 6c 20 29 00 20 20 20 20 66 6f 72 20 69 | ivisibility(.M[i],.l.).....for.i |
| 5f00 | 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 62 29 29 3a 00 20 20 20 20 42 20 3d 20 5b 5d 00 20 20 | .in.range(len(b)):.....B.=.[]... |
| 5f20 | 20 20 64 20 3d 20 5b 5d 00 20 20 20 20 4d 20 3d 20 65 78 70 6f 6e 65 6e 74 5f 6d 61 74 72 69 78 | ..d.=.[].....M.=.exponent_matrix |
| 5f40 | 28 20 62 20 29 00 64 65 66 20 6d 61 6b 65 5f 67 6f 6f 64 5f 62 61 73 69 73 28 20 62 2c 20 6c 20 | (.b.).def.make_good_basis(.b,.l. |
| 5f60 | 29 3a 00 23 20 75 73 69 6e 67 20 74 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 6f 75 74 6c 69 6e 65 | ):.#.using.the.algorithm.outline |
| 5f80 | 64 20 69 6e 20 74 68 65 20 70 72 6f 6f 66 20 6f 66 20 54 68 65 6f 72 65 6d 20 31 34 20 6f 66 20 | d.in.the.proof.of.Theorem.14.of. |
| 5fa0 | 28 44 65 62 72 79 2d 50 65 72 75 63 63 61 29 2e 00 23 20 47 69 76 65 6e 20 61 6e 79 20 62 61 73 | (Debry-Perucca)..#.Given.any.bas |
| 5fc0 | 69 73 20 62 20 6f 66 20 61 20 67 72 6f 75 70 20 47 20 63 6f 6d 70 75 74 65 73 20 61 6e 20 6c 2d | is.b.of.a.group.G.computes.an.l- |
| 5fe0 | 67 6f 6f 64 20 62 61 73 69 73 20 66 6f 72 20 47 2e 20 54 68 69 73 20 69 73 20 64 6f 6e 65 00 00 | good.basis.for.G..This.is.done.. |
| 6000 | 61 64 00 00 b8 01 00 00 4c 03 00 00 00 10 00 00 5e 00 00 00 00 00 00 00 b4 0f 00 00 8d 0f 00 00 | ad......L.......^............... |
| 6020 | 6f 0f 00 00 4e 0f 00 00 24 0f 00 00 ff 0e 00 00 f5 0e 00 00 e3 0e 00 00 e2 0e 00 00 98 0e 00 00 | o...N...$....................... |
| 6040 | 87 0e 00 00 53 0e 00 00 39 0e 00 00 25 0e 00 00 da 0d 00 00 b5 0d 00 00 9c 0d 00 00 69 0d 00 00 | ....S...9...%...............i... |
| 6060 | 68 0d 00 00 1e 0d 00 00 04 0d 00 00 ed 0c 00 00 dd 0c 00 00 ad 0c 00 00 89 0c 00 00 6e 0c 00 00 | h...........................n... |
| 6080 | 60 0c 00 00 50 0c 00 00 38 0c 00 00 12 0c 00 00 f0 0b 00 00 c6 0b 00 00 a3 0b 00 00 87 0b 00 00 | `...P...8....................... |
| 60a0 | 6d 0b 00 00 6c 0b 00 00 20 0b 00 00 d4 0a 00 00 a3 0a 00 00 73 0a 00 00 5c 0a 00 00 4c 0a 00 00 | m...l...............s...\...L... |
| 60c0 | 1c 0a 00 00 f8 09 00 00 dd 09 00 00 cf 09 00 00 bf 09 00 00 a7 09 00 00 81 09 00 00 5f 09 00 00 | ............................_... |
| 60e0 | 35 09 00 00 12 09 00 00 04 09 00 00 eb 08 00 00 d9 08 00 00 c0 08 00 00 a4 08 00 00 7a 08 00 00 | 5...........................z... |
| 6100 | 79 08 00 00 2c 08 00 00 0f 08 00 00 eb 07 00 00 ea 07 00 00 b3 07 00 00 82 07 00 00 33 07 00 00 | y...,.......................3... |
| 6120 | 0b 07 00 00 e6 06 00 00 c1 06 00 00 77 06 00 00 2b 06 00 00 e1 05 00 00 b6 05 00 00 6a 05 00 00 | ............w...+...........j... |
| 6140 | 56 05 00 00 2f 05 00 00 2e 05 00 00 04 05 00 00 03 05 00 00 ef 04 00 00 aa 04 00 00 95 04 00 00 | V.../........................... |
| 6160 | 94 04 00 00 79 04 00 00 78 04 00 00 4c 04 00 00 07 04 00 00 06 04 00 00 eb 03 00 00 b7 03 00 00 | ....y...x...L................... |
| 6180 | 81 03 00 00 7c 03 00 00 57 03 00 00 4c 03 00 00 58 03 00 00 4a 03 00 00 38 03 00 00 22 03 00 00 | ....|...W...L...X...J...8..."... |
| 61a0 | 10 03 00 00 f5 02 00 00 e0 02 00 00 9b 02 00 00 83 02 00 00 82 02 00 00 6e 02 00 00 63 02 00 00 | ........................n...c... |
| 61c0 | 4a 02 00 00 2f 02 00 00 f0 01 00 00 db 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 | J.../........................... |
| 61e0 | 4e 30 20 3d 20 31 00 20 20 20 20 23 20 43 6f 6d 20 20 20 20 4e 30 20 3d 20 31 00 20 20 20 20 23 | N0.=.1.....#.Com....N0.=.1.....# |
| 6200 | 20 43 6f 6d 70 75 74 69 6e 67 20 74 68 65 20 62 6f 75 6e 64 73 20 4d 30 20 61 6e 64 20 4e 30 00 | .Computing.the.bounds.M0.and.N0. |
| 6220 | 20 20 20 20 00 20 20 20 20 61 64 65 6c 69 63 20 20 20 20 4e 30 20 3d 20 31 00 20 20 20 20 23 20 | .........adelic....N0.=.1.....#. |
| 6240 | 43 6f 6d 70 75 74 69 6e 67 20 20 20 20 20 4e 30 20 3d 20 31 00 20 20 20 20 23 20 43 6f 6d 70 75 | Computing.....N0.=.1.....#.Compu |
| 6260 | 74 69 6e 20 20 20 20 4e 30 20 3d 20 31 00 20 20 20 20 4e 30 20 3d 20 31 00 20 20 20 20 23 20 43 | tin....N0.=.1.....N0.=.1.....#.C |
| 6280 | 6f 6d 20 20 20 20 20 4e 30 20 3d 20 31 00 20 20 20 20 23 20 43 6f 6d 70 75 74 69 20 20 20 20 4e | om.....N0.=.1.....#.Computi....N |
| 62a0 | 30 20 3d 20 31 00 20 20 20 20 23 20 43 6f 6d 70 75 74 69 6e 67 20 74 68 65 20 62 6f 75 6e 64 73 | 0.=.1.....#.Computing.the.bounds |
| 62c0 | 20 4d 30 20 61 6e 64 20 4e 30 00 20 20 20 20 00 20 20 20 20 61 64 65 6c 69 63 5f 66 61 69 6c 75 | .M0.and.N0..........adelic_failu |
| 62e0 | 20 20 20 20 4e 30 20 3d 20 31 00 20 20 20 20 23 20 43 6f 6d 70 20 20 20 20 4e 30 20 3d 20 31 00 | ....N0.=.1.....#.Comp....N0.=.1. |
| 6300 | 20 20 20 20 23 20 43 6f 6d 70 75 74 69 6e 67 20 20 20 20 20 4e 30 20 3d 20 31 00 20 20 20 20 23 | ....#.Computing.....N0.=.1.....# |
| 6320 | 20 43 20 20 20 20 4e 30 20 3d 20 31 00 20 20 20 20 23 20 43 6f 6d 70 75 20 20 20 20 4e 30 20 3d | .C....N0.=.1.....#.Compu....N0.= |
| 6340 | 20 31 00 20 20 20 20 23 20 43 20 20 20 20 20 20 4e 30 20 3d 20 31 00 20 20 20 20 23 20 43 6f 6d | .1.....#.C......N0.=.1.....#.Com |
| 6360 | 70 75 74 69 6e 67 20 74 68 65 20 62 6f 75 6e 64 73 20 4d 30 20 61 6e 64 20 4e 30 00 20 20 20 20 | puting.the.bounds.M0.and.N0..... |
| 6380 | 00 20 20 20 20 61 64 65 6c 69 63 5f 66 61 69 6c 75 72 65 5f 74 61 62 6c 65 20 3d 20 61 64 65 6c | .....adelic_failure_table.=.adel |
| 63a0 | 69 63 5f 66 61 69 6c 75 72 65 5f 67 62 28 20 47 42 2c 20 64 20 29 00 20 20 20 20 28 47 42 2c 64 | ic_failure_gb(.GB,.d.).....(GB,d |
| 63c0 | 29 20 3d 20 61 64 6a 75 73 74 5f 73 69 67 6e 28 20 6d 61 6b 65 5f 67 6f 6f 64 5f 62 61 73 69 73 | ).=.adjust_sign(.make_good_basis |
| 63e0 | 28 20 42 2c 20 32 20 29 20 29 00 20 20 20 20 23 20 43 6f 6d 70 75 74 65 20 61 64 65 6c 69 63 20 | (.B,.2.).).....#.Compute.adelic. |
| 6400 | 64 61 74 61 2e 00 00 20 20 20 20 28 20 62 61 64 5f 70 72 69 6d 65 73 2c 20 6c 5f 61 64 69 63 5f | data.......(.bad_primes,.l_adic_ |
| 6420 | 66 61 69 6c 75 72 65 5f 74 61 62 6c 65 20 29 20 3d 20 74 6f 74 61 6c 5f 6c 5f 61 64 69 63 5f 66 | failure_table.).=.total_l_adic_f |
| 6440 | 61 69 6c 75 72 65 28 20 42 20 29 00 20 20 20 20 23 20 43 6f 6d 70 75 74 65 20 6c 2d 61 64 69 63 | ailure(.B.).....#.Compute.l-adic |
| 6460 | 20 64 61 74 61 20 28 73 74 72 61 69 67 68 74 66 6f 72 77 61 72 64 29 00 00 20 20 20 20 72 20 3d | .data.(straightforward)......r.= |
| 6480 | 20 6c 65 6e 28 42 29 20 23 20 52 61 6e 6b 20 6f 66 20 47 00 00 20 20 20 20 20 20 20 20 72 65 74 | .len(B).#.Rank.of.G..........ret |
| 64a0 | 75 72 6e 20 46 61 6c 73 65 00 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 47 20 69 73 20 74 6f | urn.False.........print."G.is.to |
| 64c0 | 72 73 69 6f 6e 2e 20 54 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 69 73 20 63 79 63 6c 6f 74 6f 6d | rsion..The.extension.is.cyclotom |
| 64e0 | 69 63 2e 20 53 74 6f 70 70 69 6e 67 2e 22 00 20 20 20 20 69 66 20 6c 65 6e 28 42 29 20 3d 3d 20 | ic..Stopping.".....if.len(B).==. |
| 6500 | 30 3a 00 00 20 20 20 20 42 2c 20 74 6f 72 73 69 6f 6e 20 3d 20 67 65 6e 65 72 61 74 6f 72 73 5f | 0:......B,.torsion.=.generators_ |
| 6520 | 74 6f 5f 62 61 73 69 73 28 20 47 20 29 00 00 64 65 66 20 74 6f 74 61 6c 5f 6b 75 6d 6d 65 72 5f | to_basis(.G.)..def.total_kummer_ |
| 6540 | 66 61 69 6c 75 72 65 28 20 47 2c 20 6f 75 74 70 75 74 20 29 3a 00 23 20 72 65 74 75 72 6e 20 61 | failure(.G,.output.):.#.return.a |
| 6560 | 6e 79 20 76 61 6c 75 65 2e 00 23 20 49 66 20 6f 75 74 70 75 74 20 69 73 20 54 72 75 65 2c 20 6f | ny.value..#.If.output.is.True,.o |
| 6580 | 75 74 70 75 74 73 20 74 68 69 73 20 64 61 74 61 20 69 6e 20 61 20 68 75 6d 61 6e 2d 72 65 61 64 | utputs.this.data.in.a.human-read |
| 65a0 | 61 62 6c 65 20 77 61 79 20 61 6e 64 20 64 6f 65 73 20 6e 6f 74 00 23 20 20 20 63 6f 6d 70 75 74 | able.way.and.does.not.#...comput |
| 65c0 | 65 64 20 66 6f 72 20 61 20 74 6f 72 73 69 6f 6e 2d 66 72 65 65 20 70 61 72 74 20 6f 66 20 47 2e | ed.for.a.torsion-free.part.of.G. |
| 65e0 | 00 23 20 20 20 64 69 76 69 73 6f 72 20 6f 66 20 4d 30 20 61 6e 64 20 6e 20 69 73 20 74 68 65 20 | .#...divisor.of.M0.and.n.is.the. |
| 6600 | 6a 2d 74 68 20 64 69 76 69 73 6f 72 20 6f 66 20 4e 30 20 28 69 6e 20 74 68 65 20 63 6f 6d 70 75 | j-th.divisor.of.N0.(in.the.compu |
| 6620 | 74 65 64 20 6c 69 73 74 29 29 00 23 20 20 20 64 65 67 72 65 65 20 6f 66 20 51 5f 7b 6d 2c 6e 7d | ted.list)).#...degree.of.Q_{m,n} |
| 6640 | 20 28 69 2e 65 2e 2c 20 74 68 65 20 4b 75 6d 6d 65 72 20 66 61 69 6c 75 72 65 20 61 74 20 6d 2c | .(i.e.,.the.Kummer.failure.at.m, |
| 6660 | 6e 2c 20 77 68 65 72 65 20 6d 20 69 73 20 74 68 65 20 69 2d 74 68 00 23 20 2d 20 44 20 69 73 20 | n,.where.m.is.the.i-th.#.-.D.is. |
| 6680 | 61 20 74 61 62 6c 65 20 46 2c 20 77 68 65 72 65 20 46 5b 6a 5d 5b 69 5d 20 69 73 20 74 68 65 20 | a.table.F,.where.F[j][i].is.the. |
| 66a0 | 72 61 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 70 68 69 28 6d 29 6e 5e 72 20 61 6e 64 20 74 68 65 | ration.between.phi(m)n^r.and.the |
| 66c0 | 00 23 20 2d 20 4e 4e 20 69 73 20 74 68 65 20 70 61 69 72 20 28 4e 30 2c 64 69 76 69 73 6f 72 73 | .#.-.NN.is.the.pair.(N0,divisors |
| 66e0 | 28 4e 30 29 29 00 23 20 2d 20 4d 4d 20 69 73 20 74 68 65 20 70 61 69 72 20 28 4d 30 2c 64 69 76 | (N0)).#.-.MM.is.the.pair.(M0,div |
| 6700 | 69 73 6f 72 73 28 4d 30 29 29 00 23 20 20 20 74 6f 72 73 69 6f 6e 29 20 6f 72 20 46 61 6c 73 65 | isors(M0)).#...torsion).or.False |
| 6720 | 20 28 69 73 20 69 74 20 64 6f 65 73 20 6e 6f 74 29 2e 00 23 20 2d 20 74 20 69 73 20 61 20 70 61 | .(is.it.does.not)..#.-.t.is.a.pa |
| 6740 | 69 72 2c 20 77 68 65 72 65 20 74 5b 30 5d 20 69 73 20 74 68 65 20 72 61 6e 6b 20 6f 66 20 47 20 | ir,.where.t[0].is.the.rank.of.G. |
| 6760 | 61 6e 64 20 74 5b 31 5d 20 69 73 20 65 69 74 68 65 72 20 54 72 75 65 20 28 69 66 20 47 20 68 61 | and.t[1].is.either.True.(if.G.ha |
| 6780 | 73 00 23 20 49 66 20 6f 75 74 70 75 74 3d 46 61 6c 73 65 2c 20 72 65 74 75 72 6e 73 20 61 20 34 | s.#.If.output=False,.returns.a.4 |
| 67a0 | 2d 75 70 6c 65 20 28 74 2c 4d 4d 2c 4e 4e 2c 44 29 3a 00 23 20 49 6e 70 75 74 3a 20 61 6e 79 20 | -uple.(t,MM,NN,D):.#.Input:.any. |
| 67c0 | 73 65 74 20 6f 66 20 67 65 6e 65 72 61 74 6f 72 73 20 66 6f 72 20 61 20 73 75 62 67 72 6f 75 70 | set.of.generators.for.a.subgroup |
| 67e0 | 20 47 20 6f 66 20 51 2a 2e 00 00 20 20 20 20 74 6f 74 61 6c 5f 6b 75 6d 6d 65 72 5f 66 61 69 6c | .G.of.Q*.......total_kummer_fail |
| 6800 | 75 72 65 28 20 47 2c 20 54 72 75 65 20 29 00 64 65 66 20 54 6f 74 61 6c 4b 75 6d 6d 65 72 46 61 | ure(.G,.True.).def.TotalKummerFa |
| 6820 | 69 6c 75 72 65 28 20 47 20 29 3a 00 23 20 54 68 69 73 20 69 73 20 61 20 77 72 61 70 70 65 72 20 | ilure(.G.):.#.This.is.a.wrapper. |
| 6840 | 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 74 6f 74 61 6c 5f 6b 75 6d 6d 65 72 5f 66 61 69 6c 75 72 | function.for.total_kummer_failur |
| 6860 | 65 28 20 47 2c 20 54 72 75 65 20 29 2c 20 73 65 65 20 62 65 6c 6f 77 2e 00 00 20 20 20 20 72 65 | e(.G,.True.),.see.below.......re |
| 6880 | 74 75 72 6e 20 28 20 6d 61 74 72 69 78 28 20 72 6f 77 73 20 29 2c 20 70 72 69 6d 65 5f 6c 69 73 | turn.(.matrix(.rows.),.prime_lis |
| 68a0 | 74 20 29 00 20 20 20 20 20 20 20 20 72 6f 77 73 2e 61 70 70 65 6e 64 28 20 72 6f 77 67 20 29 00 | t.).........rows.append(.rowg.). |
| 68c0 | 20 20 20 20 20 20 20 20 72 6f 77 67 2e 61 70 70 65 6e 64 28 20 73 20 29 00 20 20 20 20 20 20 20 | ........rowg.append(.s.)........ |
| 68e0 | 20 20 20 20 20 73 20 3d 20 31 00 20 20 20 20 20 20 20 20 69 66 20 73 67 6e 28 67 29 20 3d 3d 20 | .....s.=.1.........if.sgn(g).==. |
| 6900 | 2d 31 3a 00 20 20 20 20 20 20 20 20 73 20 3d 20 30 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | -1:.........s.=.0............... |
| 6920 | 20 20 20 20 20 20 72 6f 77 67 5b 69 5d 20 3d 20 66 5b 31 5d 00 20 20 20 20 20 20 20 20 20 20 20 | ......rowg[i].=.f[1]............ |
| 6940 | 20 20 20 20 20 69 66 20 66 5b 30 5d 20 3d 3d 20 70 72 69 6d 65 5f 6c 69 73 74 5b 69 5d 3a 00 20 | .....if.f[0].==.prime_list[i]:.. |
| 6960 | 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 20 6e 70 20 29 3a | ...........for.i.in.range(.np.): |
| 6980 | 00 20 20 20 20 20 20 20 20 66 6f 72 20 66 20 69 6e 20 6c 69 73 74 28 20 66 61 63 74 6f 72 28 20 | .........for.f.in.list(.factor(. |
| 69a0 | 67 20 29 20 29 3a 00 20 20 20 20 20 20 20 20 72 6f 77 67 20 3d 20 5b 30 5d 20 2a 20 6e 70 00 20 | g.).):.........rowg.=.[0].*.np.. |
| 69c0 | 20 20 20 66 6f 72 20 67 20 69 6e 20 42 3a 00 20 20 20 20 72 6f 77 73 20 3d 20 5b 5d 00 20 20 20 | ...for.g.in.B:.....rows.=.[].... |
| 69e0 | 20 6e 70 20 3d 20 6c 65 6e 28 20 70 72 69 6d 65 5f 6c 69 73 74 20 29 00 20 20 20 20 70 72 69 6d | .np.=.len(.prime_list.).....prim |
| 6a00 | 65 5f 6c 69 73 74 20 3d 20 6c 69 73 74 28 20 70 72 69 6d 65 5f 6c 69 73 74 20 29 00 20 20 20 20 | e_list.=.list(.prime_list.)..... |
| 6a20 | 20 20 20 20 70 72 69 6d 65 5f 6c 69 73 74 20 7c 3d 20 73 65 74 28 20 70 72 69 6d 65 5f 66 61 63 | ....prime_list.|=.set(.prime_fac |
| 6a40 | 74 6f 72 73 28 20 67 20 29 20 29 00 20 20 20 20 66 6f 72 20 67 20 69 6e 20 42 3a 00 20 20 20 20 | tors(.g.).).....for.g.in.B:..... |
| 6a60 | 70 72 69 6d 65 5f 6c 69 73 74 20 3d 20 73 65 74 28 29 00 64 65 66 20 65 78 70 6f 6e 65 6e 74 5f | prime_list.=.set().def.exponent_ |
| 6a80 | 6d 61 74 72 69 78 5f 77 69 74 68 5f 73 69 67 6e 5f 61 6e 64 5f 70 72 69 6d 65 73 28 20 42 20 29 | matrix_with_sign_and_primes(.B.) |
| 6aa0 | 3a 20 00 23 20 6c 69 73 74 20 6f 66 20 70 72 69 6d 65 73 20 61 70 70 65 61 72 69 6e 67 20 69 6e | :..#.list.of.primes.appearing.in |
| 6ac0 | 20 74 68 65 20 66 61 63 74 6f 72 69 7a 61 74 69 6f 6e 2e 00 23 20 52 65 74 75 72 6e 73 20 61 20 | .the.factorization..#.Returns.a. |
| 6ae0 | 70 61 69 72 20 28 4d 2c 4c 29 20 77 68 65 72 65 20 4d 20 69 73 20 74 68 65 20 6d 6f 64 69 66 69 | pair.(M,L).where.M.is.the.modifi |
| 6b00 | 65 64 20 65 78 70 6f 6e 65 6e 74 20 6d 61 74 72 69 78 20 61 6e 64 20 4c 20 69 73 20 74 68 65 00 | ed.exponent.matrix.and.L.is.the. |
| 6b20 | 23 20 43 6f 6d 70 75 74 69 6e 67 20 74 68 65 20 65 78 70 6f 6e 65 6e 74 20 6d 61 74 72 69 78 2c | #.Computing.the.exponent.matrix, |
| 6b40 | 20 62 75 74 20 6b 65 65 70 69 6e 67 20 61 6e 20 65 78 74 72 61 20 63 6f 6c 75 6d 6e 20 66 6f 72 | .but.keeping.an.extra.column.for |
| 6b60 | 20 74 68 65 20 73 69 67 6e 73 2e 00 00 20 20 20 20 72 65 74 75 72 6e 20 6d 61 74 72 69 78 28 20 | .the.signs.......return.matrix(. |
| 6b80 | 72 6f 77 73 20 29 00 20 20 20 20 20 20 20 20 72 6f 77 73 2e 61 70 70 65 6e 64 28 20 72 6f 77 67 | rows.).........rows.append(.rowg |
| 6ba0 | 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 67 5b 69 5d 20 3d | .).....................rowg[i].= |
| 6bc0 | 20 66 5b 31 5d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 66 5b 30 5d 20 3d 3d | .f[1].................if.f[0].== |
| 6be0 | 20 70 72 69 6d 65 5f 6c 69 73 74 5b 69 5d 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 | .prime_list[i]:.............for. |
| 6c00 | 69 20 69 6e 20 72 61 6e 67 65 28 20 6e 70 20 29 3a 00 20 20 20 20 20 20 20 20 66 6f 72 20 66 20 | i.in.range(.np.):.........for.f. |
| 6c20 | 69 6e 20 6c 69 73 74 28 20 66 61 63 74 6f 72 28 20 67 20 29 20 29 3a 00 20 20 20 20 20 20 20 20 | in.list(.factor(.g.).):......... |
| 6c40 | 72 6f 77 67 20 3d 20 5b 30 5d 20 2a 20 6e 70 00 20 20 20 20 66 6f 72 20 67 20 69 6e 20 42 3a 00 | rowg.=.[0].*.np.....for.g.in.B:. |
| 6c60 | 20 20 20 20 72 6f 77 73 20 3d 20 5b 5d 00 20 20 20 20 6e 70 20 3d 20 6c 65 6e 28 20 70 72 69 6d | ....rows.=.[].....np.=.len(.prim |
| 6c80 | 65 5f 6c 69 73 74 20 29 00 20 20 20 20 70 72 69 6d 65 5f 6c 69 73 74 20 3d 20 6c 69 73 74 28 20 | e_list.).....prime_list.=.list(. |
| 6ca0 | 70 72 69 6d 65 5f 6c 69 73 74 20 29 00 20 20 20 20 20 20 20 20 70 72 69 6d 65 5f 6c 69 73 74 20 | prime_list.).........prime_list. |
| 6cc0 | 7c 3d 20 73 65 74 28 20 70 72 69 6d 65 5f 66 61 63 74 6f 72 73 28 20 67 20 29 20 29 00 20 20 20 | |=.set(.prime_factors(.g.).).... |
| 6ce0 | 20 66 6f 72 20 67 20 69 6e 20 42 3a 00 20 20 20 20 70 72 69 6d 65 5f 6c 69 73 74 20 3d 20 73 65 | .for.g.in.B:.....prime_list.=.se |
| 6d00 | 74 28 29 00 64 65 66 20 65 78 70 6f 6e 65 6e 74 5f 6d 61 74 72 69 78 28 20 42 20 29 3a 00 23 20 | t().def.exponent_matrix(.B.):.#. |
| 6d20 | 46 6f 72 20 61 20 67 69 76 65 6e 20 73 65 74 20 6f 66 20 6e 6f 6e 2d 7a 65 72 6f 20 72 61 74 69 | For.a.given.set.of.non-zero.rati |
| 6d40 | 6f 6e 61 6c 73 20 42 2c 20 63 6f 6d 70 75 74 65 73 20 74 68 65 20 22 65 78 70 6f 6e 65 6e 74 20 | onals.B,.computes.the."exponent. |
| 6d60 | 6d 61 74 72 69 78 22 00 00 20 20 20 20 72 65 74 75 72 6e 20 6d 69 6e 28 20 5b 20 76 61 6c 75 61 | matrix"......return.min(.[.valua |
| 6d80 | 74 69 6f 6e 28 20 78 2c 20 6c 20 29 20 66 6f 72 20 78 20 69 6e 20 41 20 5d 20 29 00 20 20 20 20 | tion(.x,.l.).for.x.in.A.].)..... |
| 6da0 | 20 20 20 20 72 65 74 75 72 6e 20 2b 49 6e 66 69 6e 69 74 79 00 20 20 20 20 20 20 20 20 70 72 69 | ....return.+Infinity.........pri |
| 6dc0 | 6e 74 20 22 52 65 74 75 72 6e 69 6e 67 20 2b 49 6e 66 69 6e 69 74 79 2e 22 00 20 20 20 20 20 20 | nt."Returning.+Infinity."....... |
| 6de0 | 20 20 70 72 69 6e 74 20 22 57 61 72 6e 69 6e 67 3a 20 63 6f 6d 70 75 74 69 6e 67 20 74 68 65 20 | ..print."Warning:.computing.the. |
| 6e00 | 64 69 76 69 73 69 62 69 6c 69 74 79 20 6f 66 20 61 20 74 6f 72 73 69 6f 6e 20 65 6c 65 6d 65 6e | divisibility.of.a.torsion.elemen |
| 6e20 | 74 2e 22 2c 00 20 20 20 20 69 66 20 6c 65 6e 28 41 29 20 3d 3d 20 30 3a 00 64 65 66 20 64 69 76 | t.",.....if.len(A).==.0:.def.div |
| 6e40 | 69 73 69 62 69 6c 69 74 79 28 20 41 2c 20 6c 20 29 3a 00 23 20 52 65 74 75 72 6e 73 20 74 68 65 | isibility(.A,.l.):.#.Returns.the |
| 6e60 | 20 6d 69 6e 69 6d 61 6c 20 6c 2d 76 61 6c 75 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 65 78 70 6f | .minimal.l-valuation.of.the.expo |
| 6e80 | 6e 65 6e 74 73 2e 00 23 20 66 61 63 74 6f 72 69 7a 61 74 69 6f 6e 2e 00 23 20 41 20 72 61 74 69 | nents..#.factorization..#.A.rati |
| 6ea0 | 6f 6e 61 6c 20 6e 75 6d 62 65 72 20 6d 75 73 74 20 62 65 20 67 69 76 65 6e 20 61 73 20 61 20 6c | onal.number.must.be.given.as.a.l |
| 6ec0 | 69 73 74 20 6f 66 20 65 78 70 6f 6e 65 6e 74 73 20 6f 66 20 70 72 69 6d 65 73 20 69 6e 20 69 74 | ist.of.exponents.of.primes.in.it |
| 6ee0 | 73 00 00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5b 5d 00 20 20 20 20 65 6c 73 65 3a 00 20 | s..........return.[].....else:.. |
| 6f00 | 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 2e 6b 65 72 6e 65 6c 28 29 2e 62 61 73 69 73 28 29 | .......return.M.kernel().basis() |
| 6f20 | 5b 30 5d 00 20 20 20 20 69 66 20 4d 2e 72 61 6e 6b 28 29 20 21 3d 20 6d 69 6e 28 20 4d 2e 64 69 | [0].....if.M.rank().!=.min(.M.di |
| 6f40 | 6d 65 6e 73 69 6f 6e 73 28 29 20 29 3a 00 20 20 20 20 4d 20 3d 20 4d 2e 63 68 61 6e 67 65 5f 72 | mensions().):.....M.=.M.change_r |
| 6f60 | 69 6e 67 28 20 47 46 28 20 6c 20 29 20 29 00 64 65 66 20 66 69 6e 64 5f 63 6f 6d 62 69 6e 61 74 | ing(.GF(.l.).).def.find_combinat |
| 6f80 | 69 6f 6e 28 20 4d 2c 20 6c 20 29 3a 00 23 20 74 68 65 20 42 5b 69 5d 20 61 72 65 20 73 74 72 6f | ion(.M,.l.):.#.the.B[i].are.stro |
| 6fa0 | 6e 67 6c 79 20 6c 2d 69 6e 64 65 70 65 6e 64 65 6e 74 2e 00 23 20 63 6f 65 66 66 69 63 69 65 6e | ngly.l-independent..#.coefficien |
| 6fc0 | 74 73 20 6f 66 20 61 20 6c 69 6e 65 61 72 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 74 68 61 74 20 | ts.of.a.linear.combination.that. |
| 6fe0 | 69 73 20 77 65 61 6b 6c 79 20 6c 2d 64 69 76 69 73 69 62 6c 65 2c 20 6f 72 20 5b 5d 20 69 66 00 | is.weakly.l-divisible,.or.[].if. |
| 7000 | 61 64 00 00 20 00 00 00 cc 01 00 00 00 10 00 00 64 00 00 00 00 00 00 00 ea 0f 00 00 dd 0f 00 00 | ad..............d............... |
| 7020 | 91 0f 00 00 81 0f 00 00 4d 0f 00 00 43 0f 00 00 31 0f 00 00 ee 0e 00 00 e1 0e 00 00 91 0e 00 00 | ........M...C...1............... |
| 7040 | 45 0e 00 00 f6 0d 00 00 d1 0d 00 00 c1 0d 00 00 74 0d 00 00 38 0d 00 00 0f 0d 00 00 05 0d 00 00 | E...............t...8........... |
| 7060 | b6 0c 00 00 a5 0c 00 00 7f 0c 00 00 72 0c 00 00 71 0c 00 00 51 0c 00 00 29 0c 00 00 07 0c 00 00 | ............r...q...Q...)....... |
| 7080 | d1 0b 00 00 bd 0b 00 00 b0 0b 00 00 af 0b 00 00 9f 0b 00 00 4e 0b 00 00 20 0b 00 00 df 0a 00 00 | ....................N........... |
| 70a0 | ce 0a 00 00 cd 0a 00 00 a1 0a 00 00 52 0a 00 00 02 0a 00 00 ca 09 00 00 7e 09 00 00 32 09 00 00 | ............R...........~...2... |
| 70c0 | e3 08 00 00 9c 08 00 00 71 08 00 00 50 08 00 00 2c 08 00 00 00 08 00 00 da 07 00 00 9d 07 00 00 | ........q...P...,............... |
| 70e0 | 85 07 00 00 74 07 00 00 73 07 00 00 56 07 00 00 55 07 00 00 11 07 00 00 10 07 00 00 e9 06 00 00 | ....t...s...V...U............... |
| 7100 | b3 06 00 00 a6 06 00 00 96 06 00 00 6d 06 00 00 61 06 00 00 4d 06 00 00 3b 06 00 00 2b 06 00 00 | ............m...a...M...;...+... |
| 7120 | 10 06 00 00 fa 05 00 00 e3 05 00 00 d5 05 00 00 c4 05 00 00 9f 05 00 00 8b 05 00 00 66 05 00 00 | ............................f... |
| 7140 | 27 05 00 00 14 05 00 00 ee 04 00 00 c4 04 00 00 a1 04 00 00 62 04 00 00 4e 04 00 00 3a 04 00 00 | '...................b...N...:... |
| 7160 | eb 03 00 00 cc 03 00 00 cb 03 00 00 b0 03 00 00 86 03 00 00 58 03 00 00 2e 03 00 00 e7 02 00 00 | ....................X........... |
| 7180 | cb 02 00 00 ca 02 00 00 b9 02 00 00 b8 02 00 00 7b 02 00 00 48 02 00 00 04 02 00 00 f7 01 00 00 | ................{...H........... |
| 71a0 | e7 01 00 00 cc 01 00 00 cb 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 71c0 | 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 69 66 20 28 4d 2f 4e 29 20 25 20 32 | ....................if.(M/N).%.2 |
| 71e0 | 20 3d 3d 20 30 3a 00 20 20 20 20 69 66 20 74 6f 72 73 69 6f 6e 3a 00 20 20 20 20 46 54 31 20 3d | .==.0:.....if.torsion:.....FT1.= |
| 7200 | 20 46 54 00 20 20 20 20 28 20 28 20 72 2c 20 74 6f 72 73 69 6f 6e 20 29 2c 20 28 20 4d 30 2c 20 | .FT.....(.(.r,.torsion.),.(.M0,. |
| 7220 | 64 69 76 73 5f 4d 30 20 29 2c 20 28 20 4e 30 2c 20 64 69 76 73 5f 4e 30 20 29 2c 20 46 54 20 29 | divs_M0.),.(.N0,.divs_N0.),.FT.) |
| 7240 | 20 3d 20 64 61 74 61 00 64 65 66 20 6b 75 6d 6d 65 72 5f 66 61 69 6c 75 72 65 5f 66 72 6f 6d 5f | .=.data.def.kummer_failure_from_ |
| 7260 | 74 6f 74 61 6c 5f 74 61 62 6c 65 28 20 4d 2c 20 4e 2c 20 64 61 74 61 20 29 3a 00 23 20 45 78 74 | total_table(.M,.N,.data.):.#.Ext |
| 7280 | 72 61 63 74 73 20 61 20 73 70 65 63 69 66 69 63 20 76 61 6c 75 65 20 6f 66 20 66 61 69 6c 75 72 | racts.a.specific.value.of.failur |
| 72a0 | 65 20 66 72 6f 6d 20 74 68 65 20 74 6f 74 61 6c 20 74 61 62 6c 65 2e 00 00 20 20 20 20 20 20 20 | e.from.the.total.table.......... |
| 72c0 | 20 70 72 69 6e 74 20 22 22 00 00 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 6c 69 6a | .print.""..............print.lij |
| 72e0 | 73 74 5f 6f 64 64 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c | st_odd.........................l |
| 7300 | 69 6a 73 74 5f 6f 64 64 2e 61 70 70 65 6e 64 28 20 28 20 64 69 76 73 5f 4d 30 5b 6a 5d 2c 20 64 | ijst_odd.append(.(.divs_M0[j],.d |
| 7320 | 69 76 73 5f 4e 30 5b 69 5d 20 29 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ivs_N0[i].).)................... |
| 7340 | 20 20 69 66 20 46 54 5f 6f 64 64 5b 69 5d 5b 6a 5d 20 3d 3d 20 66 3a 00 20 20 20 20 20 20 20 20 | ..if.FT_odd[i][j].==.f:......... |
| 7360 | 20 20 20 20 20 20 20 20 66 6f 72 20 6a 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 69 76 73 5f | ........for.j.in.range(len(divs_ |
| 7380 | 4d 30 29 29 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 | M0)):.............for.i.in.range |
| 73a0 | 28 6c 65 6e 28 64 69 76 73 5f 4e 30 29 29 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6a 73 | (len(divs_N0)):.............lijs |
| 73c0 | 74 5f 6f 64 64 20 3d 20 5b 5d 00 00 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 66 | t_odd.=.[]..............print."f |
| 73e0 | 6f 6c 6c 6f 77 69 6e 67 3a 22 00 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 6f 72 | ollowing:".............print."or |
| 7400 | 20 69 66 20 4d 2f 4e 20 69 73 20 4f 44 44 20 61 6e 64 20 28 67 63 64 28 4d 2c 4d 30 29 29 2c 67 | .if.M/N.is.ODD.and.(gcd(M,M0)),g |
| 7420 | 63 64 28 4e 2c 4e 30 29 29 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 22 2c 00 20 20 20 20 20 20 | cd(N,N0)).is.one.of.the",....... |
| 7440 | 20 20 69 66 20 74 6f 72 73 69 6f 6e 3a 00 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 6c 69 6a 73 | ..if.torsion:.........print.lijs |
| 7460 | 74 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6a 73 74 2e 61 70 70 65 | t.....................lijst.appe |
| 7480 | 6e 64 28 20 28 20 64 69 76 73 5f 4d 30 5b 6a 5d 2c 20 64 69 76 73 5f 4e 30 5b 69 5d 20 29 20 29 | nd(.(.divs_M0[j],.divs_N0[i].).) |
| 74a0 | 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 46 54 31 5b 69 5d 5b 6a 5d 20 3d 3d | .................if.FT1[i][j].== |
| 74c0 | 20 66 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6a 20 69 6e 20 72 61 6e 67 65 28 6c | .f:.............for.j.in.range(l |
| 74e0 | 65 6e 28 64 69 76 73 5f 4d 30 29 29 3a 00 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 | en(divs_M0)):.........for.i.in.r |
| 7500 | 61 6e 67 65 28 6c 65 6e 28 64 69 76 73 5f 4e 30 29 29 3a 00 20 20 20 20 20 20 20 20 6c 69 6a 73 | ange(len(divs_N0)):.........lijs |
| 7520 | 74 20 3d 20 5b 5d 00 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 28 67 63 64 28 4d 2c 4d 30 29 | t.=.[].........print."(gcd(M,M0) |
| 7540 | 2c 67 63 64 28 4e 2c 4e 30 29 29 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 | ,gcd(N,N0)).is.one.of.the.follow |
| 7560 | 69 6e 67 3a 22 00 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 4d 2f 4e 20 69 73 20 | ing:".............print."M/N.is. |
| 7580 | 45 56 45 4e 20 61 6e 64 22 2c 00 20 20 20 20 20 20 20 20 69 66 20 74 6f 72 73 69 6f 6e 3a 00 20 | EVEN.and",.........if.torsion:.. |
| 75a0 | 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 46 61 69 6c 75 72 65 20 69 73 22 2c 20 66 2c 20 22 69 | .......print."Failure.is",.f,."i |
| 75c0 | 66 22 2c 00 20 20 20 20 66 6f 72 20 66 20 69 6e 20 70 66 3a 00 20 20 20 20 70 66 2e 73 6f 72 74 | f",.....for.f.in.pf:.....pf.sort |
| 75e0 | 28 29 00 20 20 20 20 70 66 20 3d 20 6c 69 73 74 28 73 65 74 28 70 66 29 29 00 20 20 20 20 20 20 | ().....pf.=.list(set(pf))....... |
| 7600 | 20 20 20 20 20 20 70 66 20 2b 3d 20 72 6f 77 00 20 20 20 20 20 20 20 20 66 6f 72 20 72 6f 77 20 | ......pf.+=.row.........for.row. |
| 7620 | 69 6e 20 46 54 5f 6f 64 64 3a 00 20 20 20 20 69 66 20 74 6f 72 73 69 6f 6e 3a 00 20 20 20 20 20 | in.FT_odd:.....if.torsion:...... |
| 7640 | 20 20 20 70 66 20 2b 3d 20 72 6f 77 00 20 20 20 20 66 6f 72 20 72 6f 77 20 69 6e 20 46 54 31 3a | ...pf.+=.row.....for.row.in.FT1: |
| 7660 | 00 20 20 20 20 70 66 20 3d 20 5b 5d 00 20 20 20 20 20 20 20 20 46 54 31 20 3d 20 74 6f 72 73 69 | .....pf.=.[].........FT1.=.torsi |
| 7680 | 6f 6e 5f 74 61 62 6c 65 5f 65 76 65 6e 28 20 64 61 74 61 20 29 00 20 20 20 20 69 66 20 74 6f 72 | on_table_even(.data.).....if.tor |
| 76a0 | 73 69 6f 6e 3a 00 20 20 20 20 46 54 31 20 3d 20 46 54 00 20 20 20 20 23 20 46 54 31 20 69 73 20 | sion:.....FT1.=.FT.....#.FT1.is. |
| 76c0 | 65 69 74 68 65 72 20 46 54 20 6f 72 20 46 54 5f 65 76 65 6e 20 69 6e 20 74 68 65 20 74 6f 72 73 | either.FT.or.FT_even.in.the.tors |
| 76e0 | 69 6f 6e 20 63 61 73 65 00 20 20 20 20 46 54 5f 6f 64 64 20 3d 20 74 6f 72 73 69 6f 6e 5f 74 61 | ion.case.....FT_odd.=.torsion_ta |
| 7700 | 62 6c 65 5f 6f 64 64 28 20 64 61 74 61 20 29 00 00 20 20 20 20 28 20 28 20 72 2c 20 74 6f 72 73 | ble_odd(.data.)......(.(.r,.tors |
| 7720 | 69 6f 6e 20 29 2c 20 28 20 4d 30 2c 20 64 69 76 73 5f 4d 30 20 29 2c 20 28 20 4e 30 2c 20 64 69 | ion.),.(.M0,.divs_M0.),.(.N0,.di |
| 7740 | 76 73 5f 4e 30 20 29 2c 20 46 54 20 29 20 3d 20 64 61 74 61 00 00 64 65 66 20 70 72 69 6e 74 5f | vs_N0.),.FT.).=.data..def.print_ |
| 7760 | 63 61 73 65 5f 6c 69 73 74 28 20 64 61 74 61 20 29 3a 00 00 20 20 20 20 20 20 20 20 70 72 69 6e | case_list(.data.):..........prin |
| 7780 | 74 20 22 22 00 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 74 61 62 6c 65 28 74 74 29 00 20 20 20 | t."".........print.table(tt).... |
| 77a0 | 20 20 20 20 20 20 20 20 20 74 74 2e 61 70 70 65 6e 64 28 20 5b 20 64 69 76 73 5f 4e 30 5b 69 5d | .........tt.append(.[.divs_N0[i] |
| 77c0 | 20 5d 20 2b 20 5b 22 7c 22 5d 20 20 2b 20 6e 65 77 5f 46 54 5b 69 5d 20 29 00 20 20 20 20 20 20 | .].+.["|"]..+.new_FT[i].)....... |
| 77e0 | 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 69 76 73 5f 4e 30 29 29 3a 00 | ..for.i.in.range(len(divs_N0)):. |
| 7800 | 20 20 20 20 20 20 20 20 74 74 2e 61 70 70 65 6e 64 28 20 22 2d 22 20 2a 20 28 6c 65 6e 28 64 69 | ........tt.append(."-".*.(len(di |
| 7820 | 76 73 5f 4d 30 29 2b 32 29 20 29 00 20 20 20 20 20 20 20 20 74 74 20 3d 20 5b 20 5b 22 22 2c 22 | vs_M0)+2).).........tt.=.[.[""," |
| 7840 | 7c 22 5d 20 2b 20 64 69 76 73 5f 4d 30 20 5d 00 20 20 20 20 20 20 20 20 23 20 50 72 69 6e 74 69 | |"].+.divs_M0.].........#.Printi |
| 7860 | 6e 67 20 74 68 65 20 6e 65 77 20 74 61 62 6c 65 00 20 20 20 20 20 20 20 20 6e 65 77 5f 46 54 20 | ng.the.new.table.........new_FT. |
| 7880 | 3d 20 74 6f 72 73 69 6f 6e 5f 74 61 62 6c 65 5f 6f 64 64 28 20 64 61 74 61 20 29 00 20 20 20 20 | =.torsion_table_odd(.data.)..... |
| 78a0 | 20 20 20 20 23 20 77 65 20 68 61 76 65 20 61 6c 72 65 61 64 79 20 63 6f 6d 70 75 74 65 64 20 76 | ....#.we.have.already.computed.v |
| 78c0 | 69 61 20 6b 75 6d 6d 65 72 5f 64 65 67 72 65 65 5f 66 72 6f 6d 5f 74 6f 74 61 6c 5f 74 61 62 6c | ia.kummer_degree_from_total_tabl |
| 78e0 | 65 2e 00 20 20 20 20 20 20 20 20 23 20 66 61 69 6c 75 72 65 2e 20 54 68 69 73 20 69 73 20 6e 6f | e..........#.failure..This.is.no |
| 7900 | 74 20 74 6f 6f 20 69 6e 65 66 66 69 63 69 65 6e 74 2c 20 73 69 6e 63 65 20 77 65 20 63 61 6e 20 | t.too.inefficient,.since.we.can. |
| 7920 | 75 73 65 20 74 68 65 20 64 61 74 61 20 74 68 61 74 00 20 20 20 20 20 20 20 20 23 20 65 61 73 69 | use.the.data.that.........#.easi |
| 7940 | 65 72 20 74 6f 20 6a 75 73 74 20 63 6f 6d 70 75 74 65 20 74 68 65 20 64 65 67 72 65 65 20 65 76 | er.to.just.compute.the.degree.ev |
| 7960 | 65 72 79 20 74 69 6d 65 2c 20 61 6e 64 20 74 68 65 6e 20 64 65 64 75 63 65 20 74 68 65 00 20 20 | ery.time,.and.then.deduce.the... |
| 7980 | 20 20 20 20 20 20 23 20 48 6f 77 65 76 65 72 2c 20 64 75 65 20 74 6f 20 70 72 6f 62 6c 65 6d 73 | ......#.However,.due.to.problems |
| 79a0 | 20 69 6e 20 72 65 61 64 69 6e 67 20 74 68 65 20 74 61 62 6c 65 20 66 6f 72 20 62 69 67 67 65 72 | .in.reading.the.table.for.bigger |
| 79c0 | 20 4d 2c 20 69 74 20 69 73 00 20 20 20 20 20 20 20 20 23 20 20 20 28 69 66 20 4d 20 69 73 20 65 | .M,.it.is.........#...(if.M.is.e |
| 79e0 | 76 65 6e 29 20 6f 72 20 69 74 73 20 64 6f 75 62 6c 65 20 28 69 66 20 4d 20 69 73 20 6f 64 64 29 | ven).or.its.double.(if.M.is.odd) |
| 7a00 | 2e 00 20 20 20 20 20 20 20 20 23 20 20 20 63 61 73 65 20 69 73 20 65 69 74 68 65 72 20 74 68 65 | ..........#...case.is.either.the |
| 7a20 | 20 73 61 6d 65 20 61 73 20 74 68 61 74 20 66 6f 72 20 28 32 4d 2c 4e 29 20 69 6e 20 74 68 65 20 | .same.as.that.for.(2M,N).in.the. |
| 7a40 | 74 6f 72 73 69 6f 6e 2d 66 72 65 65 20 63 61 73 65 00 20 20 20 20 20 20 20 20 23 20 20 20 41 20 | torsion-free.case.........#...A. |
| 7a60 | 6c 69 74 74 6c 65 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 65 78 65 72 63 69 73 65 3a 20 74 68 65 | little.translation.exercise:.the |
| 7a80 | 20 66 61 69 6c 75 72 65 20 61 74 20 28 4d 2c 4e 29 20 69 6e 20 74 68 65 20 74 6f 72 73 69 6f 6e | .failure.at.(M,N).in.the.torsion |
| 7aa0 | 00 20 20 20 20 20 20 20 20 23 20 41 20 67 6f 6f 64 20 73 74 72 61 74 65 67 79 20 69 73 20 74 68 | .........#.A.good.strategy.is.th |
| 7ac0 | 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 00 00 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 22 00 20 | e.following:..........print."".. |
| 7ae0 | 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 54 68 69 73 20 74 61 62 6c 65 20 63 61 6e 20 62 65 20 | .......print."This.table.can.be. |
| 7b00 | 72 65 61 64 20 65 78 61 63 74 6c 79 20 61 73 20 74 68 65 20 66 69 72 73 74 20 6f 6e 65 2e 22 00 | read.exactly.as.the.first.one.". |
| 7b20 | 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 63 61 73 65 20 74 68 65 20 71 75 6f 74 69 65 6e 74 | ........print."case.the.quotient |
| 7b40 | 20 4d 2f 4e 20 69 73 20 4f 44 44 2e 22 00 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 54 68 65 | .M/N.is.ODD.".........print."The |
| 7b60 | 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 61 62 6c 65 20 73 68 6f 77 73 20 74 68 65 20 74 6f 74 61 6c | .following.table.shows.the.total |
| 7b80 | 20 66 61 69 6c 75 72 65 20 6f 66 20 4b 75 6d 6d 65 72 20 64 65 67 72 65 65 73 20 69 6e 22 00 20 | .failure.of.Kummer.degrees.in".. |
| 7ba0 | 20 20 20 69 66 20 74 6f 72 73 69 6f 6e 3a 00 00 20 20 20 20 70 72 69 6e 74 20 22 22 00 20 20 20 | ...if.torsion:......print."".... |
| 7bc0 | 20 70 72 69 6e 74 20 74 61 62 6c 65 28 74 74 29 00 20 20 20 20 20 20 20 20 74 74 2e 61 70 70 65 | .print.table(tt).........tt.appe |
| 7be0 | 6e 64 28 20 5b 20 64 69 76 73 5f 4e 30 5b 69 5d 20 5d 20 2b 20 5b 22 7c 22 5d 20 20 2b 20 46 54 | nd(.[.divs_N0[i].].+.["|"]..+.FT |
| 7c00 | 31 5b 69 5d 20 29 00 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 69 | 1[i].).....for.i.in.range(len(di |
| 7c20 | 76 73 5f 4e 30 29 29 3a 00 20 20 20 20 74 74 2e 61 70 70 65 6e 64 28 20 22 2d 22 20 2a 20 28 6c | vs_N0)):.....tt.append(."-".*.(l |
| 7c40 | 65 6e 28 64 69 76 73 5f 4d 30 29 2b 32 29 20 29 00 20 20 20 20 74 74 20 3d 20 5b 20 5b 22 22 2c | en(divs_M0)+2).).....tt.=.[.["", |
| 7c60 | 22 7c 22 5d 20 2b 20 64 69 76 73 5f 4d 30 20 5d 00 00 20 20 20 20 70 72 69 6e 74 20 22 22 00 20 | "|"].+.divs_M0.]......print."".. |
| 7c80 | 20 20 20 70 72 69 6e 74 20 22 77 68 65 72 65 20 72 20 69 73 20 74 68 65 20 72 61 6e 6b 20 6f 66 | ...print."where.r.is.the.rank.of |
| 7ca0 | 20 47 2e 22 00 20 20 20 20 20 20 20 20 46 54 31 20 3d 20 46 54 00 20 20 20 20 20 20 20 20 70 72 | .G.".........FT1.=.FT.........pr |
| 7cc0 | 69 6e 74 20 22 49 6e 20 74 68 69 73 20 63 61 73 65 20 28 47 20 69 73 20 74 6f 72 73 69 6f 6e 2d | int."In.this.case.(G.is.torsion- |
| 7ce0 | 66 72 65 65 29 20 77 65 20 68 61 76 65 20 65 64 28 4d 2c 4e 29 20 3d 20 70 68 69 28 4d 29 2a 4e | free).we.have.ed(M,N).=.phi(M)*N |
| 7d00 | 5e 72 2c 22 00 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 46 54 31 20 3d 20 74 6f 72 | ^r,".....else:.........FT1.=.tor |
| 7d20 | 73 69 6f 6e 5f 74 61 62 6c 65 5f 65 76 65 6e 28 20 64 61 74 61 20 29 00 20 20 20 20 20 20 20 20 | sion_table_even(.data.)......... |
| 7d40 | 70 72 69 6e 74 20 22 77 68 65 72 65 20 65 3d 31 20 69 66 20 4e 20 69 73 20 65 76 65 6e 20 61 6e | print."where.e=1.if.N.is.even.an |
| 7d60 | 64 20 65 3d 30 20 69 66 20 4e 20 69 73 20 6f 64 64 2e 22 00 20 20 20 20 20 20 20 20 70 72 69 6e | d.e=0.if.N.is.odd.".........prin |
| 7d80 | 74 20 22 49 6e 20 74 68 69 73 20 63 61 73 65 20 28 2d 31 20 69 73 20 69 6e 20 47 29 2c 20 77 65 | t."In.this.case.(-1.is.in.G),.we |
| 7da0 | 20 68 61 76 65 20 65 64 28 4d 2c 4e 29 20 3d 20 32 5e 65 2a 70 68 69 28 4d 29 2a 4e 5e 72 2c 22 | .have.ed(M,N).=.2^e*phi(M)*N^r," |
| 7dc0 | 00 20 20 20 20 69 66 20 74 6f 72 73 69 6f 6e 3a 00 20 20 20 20 70 72 69 6e 74 20 22 6f 66 20 74 | .....if.torsion:.....print."of.t |
| 7de0 | 68 65 20 4b 75 6d 6d 65 72 20 65 78 74 65 6e 73 69 6f 6e 2e 22 00 20 20 20 20 70 72 69 6e 74 20 | he.Kummer.extension.".....print. |
| 7e00 | 22 73 69 6d 70 6c 79 20 63 6f 6d 70 75 74 69 6e 67 20 65 64 28 4d 2c 4e 29 20 2f 20 66 2c 20 77 | "simply.computing.ed(M,N)./.f,.w |
| 7e20 | 68 65 72 65 20 65 64 28 4d 2c 4e 29 20 69 73 20 74 68 65 20 65 78 70 65 63 74 65 64 20 64 65 67 | here.ed(M,N).is.the.expected.deg |
| 7e40 | 72 65 65 22 00 20 20 20 20 70 72 69 6e 74 20 22 74 68 65 20 76 61 6c 75 65 20 66 20 28 66 61 69 | ree".....print."the.value.f.(fai |
| 7e60 | 6c 75 72 65 29 20 6f 66 20 74 68 65 20 65 6e 74 72 79 20 61 74 20 28 67 63 64 28 4e 2c 4e 30 29 | lure).of.the.entry.at.(gcd(N,N0) |
| 7e80 | 2c 67 63 64 28 4d 2c 4d 30 29 29 20 61 6e 64 22 00 20 20 20 20 70 72 69 6e 74 20 22 54 68 65 20 | ,gcd(M,M0)).and".....print."The. |
| 7ea0 | 64 65 67 72 65 65 20 6f 66 20 74 68 65 20 4b 75 6d 6d 65 72 20 65 78 74 65 6e 73 69 6f 6e 20 28 | degree.of.the.Kummer.extension.( |
| 7ec0 | 4d 2c 4e 29 20 63 61 6e 20 62 65 20 65 78 74 72 61 63 74 65 64 20 62 79 20 74 61 6b 69 6e 67 22 | M,N).can.be.extracted.by.taking" |
| 7ee0 | 00 20 20 20 20 70 72 69 6e 74 20 22 22 00 20 20 20 20 70 72 69 6e 74 20 22 43 6f 6c 75 6d 6e 73 | .....print."".....print."Columns |
| 7f00 | 20 63 6f 72 72 65 73 70 6f 6e 64 20 74 6f 20 76 61 6c 75 65 73 20 6f 66 20 4d 2c 20 72 6f 77 73 | .correspond.to.values.of.M,.rows |
| 7f20 | 20 74 6f 20 76 61 6c 75 65 73 20 6f 66 20 4e 22 00 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 | .to.values.of.N".........print." |
| 7f40 | 2e 22 00 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 69 6e 5c 6e | .".....else:.........print."in\n |
| 7f60 | 20 63 61 73 65 20 74 68 65 20 71 75 6f 74 69 65 6e 74 20 4d 2f 4e 20 69 73 20 45 56 45 4e 2e 22 | .case.the.quotient.M/N.is.EVEN." |
| 7f80 | 00 20 20 20 20 69 66 20 74 6f 72 73 69 6f 6e 3a 00 20 20 20 20 70 72 69 6e 74 20 22 54 68 65 20 | .....if.torsion:.....print."The. |
| 7fa0 | 66 6f 6c 6c 6f 77 69 6e 67 20 74 61 62 6c 65 20 73 68 6f 77 73 20 74 68 65 20 74 6f 74 61 6c 20 | following.table.shows.the.total. |
| 7fc0 | 66 61 69 6c 75 72 65 20 6f 66 20 4b 75 6d 6d 65 72 20 64 65 67 72 65 65 73 22 2c 20 00 20 20 20 | failure.of.Kummer.degrees",..... |
| 7fe0 | 20 70 72 69 6e 74 20 22 22 00 20 20 20 20 70 72 69 6e 74 20 22 4e 5f 30 20 3d 22 2c 20 4e 30 00 | .print."".....print."N_0.=",.N0. |
| 8000 | 61 64 00 00 42 00 00 00 9e 01 00 00 00 10 00 00 50 00 00 00 00 00 00 00 c7 0f 00 00 83 0f 00 00 | ad..B...........P............... |
| 8020 | 40 0f 00 00 2a 0f 00 00 ed 0e 00 00 c3 0e 00 00 94 0e 00 00 93 0e 00 00 44 0e 00 00 21 0e 00 00 | @...*...................D...!... |
| 8040 | f8 0d 00 00 d3 0d 00 00 b0 0d 00 00 89 0d 00 00 88 0d 00 00 71 0d 00 00 64 0d 00 00 19 0d 00 00 | ....................q...d....... |
| 8060 | e4 0c 00 00 d1 0c 00 00 af 0c 00 00 ae 0c 00 00 67 0c 00 00 4c 0c 00 00 2e 0c 00 00 0d 0c 00 00 | ................g...L........... |
| 8080 | e7 0b 00 00 c6 0b 00 00 c5 0b 00 00 77 0b 00 00 2d 0b 00 00 de 0a 00 00 8e 0a 00 00 41 0a 00 00 | ............w...-...........A... |
| 80a0 | 36 0a 00 00 e6 09 00 00 96 09 00 00 7b 09 00 00 7a 09 00 00 4c 09 00 00 4b 09 00 00 2a 09 00 00 | 6...........{...z...L...K...*... |
| 80c0 | da 08 00 00 bc 08 00 00 9c 08 00 00 83 08 00 00 82 08 00 00 35 08 00 00 e9 07 00 00 be 07 00 00 | ....................5........... |
| 80e0 | 81 07 00 00 52 07 00 00 1b 07 00 00 0e 07 00 00 c1 06 00 00 75 06 00 00 48 06 00 00 0f 06 00 00 | ....R...............u...H....... |
| 8100 | f8 05 00 00 f7 05 00 00 a8 05 00 00 95 05 00 00 4a 05 00 00 32 05 00 00 31 05 00 00 e7 04 00 00 | ................J...2...1....... |
| 8120 | 9a 04 00 00 4f 04 00 00 36 04 00 00 e6 03 00 00 98 03 00 00 48 03 00 00 fa 02 00 00 c7 02 00 00 | ....O...6...........H........... |
| 8140 | 80 02 00 00 5a 02 00 00 31 02 00 00 15 02 00 00 d3 01 00 00 9e 01 00 00 9d 01 00 00 00 00 00 00 | ....Z...1....................... |
| 8160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 | ................................ |
| 81a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 20 3d 20 73 70 65 63 69 61 6c 5f 65 6d | ..................m.=.special_em |
| 81c0 | 62 65 64 28 20 6e 65 77 5f 73 70 65 63 69 61 6c 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 20 | bed(.new_special.).............. |
| 81e0 | 20 20 20 20 20 20 20 6e 65 77 5f 73 70 65 63 69 61 6c 20 3d 20 28 20 6e 2b 31 2c 20 73 70 65 63 | .......new_special.=.(.n+1,.spec |
| 8200 | 69 61 6c 5f 65 6c 65 6d 65 6e 74 5b 31 5d 20 2a 20 73 20 29 00 20 20 20 20 20 20 20 20 20 20 20 | ial_element[1].*.s.)............ |
| 8220 | 20 20 20 20 20 66 6f 72 20 73 20 69 6e 20 53 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .....for.s.in.S:................ |
| 8240 | 20 69 6e 74 65 72 73 65 63 74 69 6e 67 5f 51 64 4d 20 3d 20 46 61 6c 73 65 00 20 20 20 20 20 20 | .intersecting_QdM.=.False....... |
| 8260 | 20 20 20 20 20 20 20 20 20 20 6e 6f 74 68 69 6e 67 5f 74 6f 5f 64 6f 20 3d 20 46 61 6c 73 65 00 | ..........nothing_to_do.=.False. |
| 8280 | 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 70 65 63 69 61 6c 5f 65 6c 65 6d 65 6e 74 20 21 | ............if.special_element.! |
| 82a0 | 3d 20 28 31 2c 31 29 20 61 6e 64 20 73 70 65 63 69 61 6c 5f 65 6c 65 6d 65 6e 74 5b 30 5d 20 3d | =.(1,1).and.special_element[0].= |
| 82c0 | 3d 20 6e 2b 31 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 6e 6f 74 68 65 72 20 66 61 63 | =.n+1:.............#.another.fac |
| 82e0 | 74 6f 72 20 6f 66 20 32 20 62 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 2e 00 20 20 20 20 20 20 | tor.of.2.because.of.this........ |
| 8300 | 20 20 20 20 20 20 23 20 6f 66 20 74 68 65 20 65 78 69 73 74 65 6e 63 65 20 6f 66 20 74 68 65 20 | ......#.of.the.existence.of.the. |
| 8320 | 73 70 65 63 69 61 6c 20 65 6c 65 6d 65 6e 74 2c 20 62 75 74 74 68 65 6e 20 77 65 20 77 6f 75 6c | special.element,.butthen.we.woul |
| 8340 | 64 20 6c 6f 6f 73 65 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 77 69 74 68 20 51 5f 7b 32 5e | d.loose.............#.with.Q_{2^ |
| 8360 | 6e 7d 20 28 6e 20 6d 75 73 74 20 62 65 20 32 29 3b 20 73 6f 20 77 65 20 77 6f 75 6c 64 20 64 6f | n}.(n.must.be.2);.so.we.would.do |
| 8380 | 75 62 6c 65 20 74 68 65 20 64 65 67 72 65 65 20 62 65 63 61 75 73 65 00 20 20 20 20 20 20 20 20 | uble.the.degree.because......... |
| 83a0 | 20 20 20 20 23 20 6e 6f 74 68 69 6e 67 20 74 6f 20 64 6f 3a 20 69 6e 20 66 61 63 74 20 5c 7a 65 | ....#.nothing.to.do:.in.fact.\ze |
| 83c0 | 74 61 5f 38 20 32 20 65 6d 62 65 64 73 20 69 6e 20 51 5f 34 2c 20 77 68 69 63 68 20 63 6f 69 6e | ta_8.2.embeds.in.Q_4,.which.coin |
| 83e0 | 63 69 64 65 73 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 49 66 20 61 6e 79 20 6f 66 20 74 68 | cides.............#.If.any.of.th |
| 8400 | 65 6d 20 69 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 5c 7a 65 74 61 5f 38 20 32 71 20 66 6f 72 | em.is.of.the.form.\zeta_8.2q.for |
| 8420 | 20 71 20 61 20 73 71 75 61 72 65 2c 20 74 68 65 72 65 20 69 73 00 20 20 20 20 20 20 20 20 20 20 | .q.a.square,.there.is........... |
| 8440 | 20 20 23 20 73 68 6f 72 74 6c 69 73 74 2e 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6d 75 6c | ..#.shortlist..............#.mul |
| 8460 | 74 69 70 6c 79 69 6e 67 20 74 68 65 20 67 69 76 65 6e 20 65 6c 65 6d 65 6e 74 20 77 69 74 68 20 | tiplying.the.given.element.with. |
| 8480 | 74 68 65 20 6f 74 68 65 72 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 74 68 65 00 20 20 20 20 20 20 | the.other.elements.of.the....... |
| 84a0 | 20 20 20 20 20 20 23 20 57 65 20 68 61 76 65 20 74 6f 20 63 6f 6e 73 69 64 65 72 20 61 6c 6c 20 | ......#.We.have.to.consider.all. |
| 84c0 | 70 6f 73 73 69 62 6c 65 20 73 70 65 63 69 61 6c 20 65 6c 65 6d 65 6e 74 73 20 61 72 69 73 69 6e | possible.special.elements.arisin |
| 84e0 | 67 20 66 72 6f 6d 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 49 66 20 77 65 20 68 61 76 65 20 | g.from.............#.If.we.have. |
| 8500 | 61 20 73 70 65 63 69 61 6c 20 65 6c 65 6d 65 6e 74 20 69 6e 20 74 68 69 73 20 6c 65 76 65 6c 2c | a.special.element.in.this.level, |
| 8520 | 20 77 65 20 63 6f 6e 73 69 64 65 72 20 69 74 2e 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .we.consider.it................. |
| 8540 | 20 20 72 20 3d 20 72 2f 32 00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 38 20 69 6e 20 48 20 | ..r.=.r/2.............if.8.in.H. |
| 8560 | 61 6e 64 20 64 4d 20 25 20 38 20 3d 3d 20 30 20 61 6e 64 20 28 6e 20 3e 3d 20 33 20 6f 72 20 28 | and.dM.%.8.==.0.and.(n.>=.3.or.( |
| 8580 | 6e 20 3d 3d 20 32 20 61 6e 64 20 6e 20 3c 3d 20 64 29 29 3a 00 20 20 20 20 20 20 20 20 20 20 20 | n.==.2.and.n.<=.d)):............ |
| 85a0 | 20 23 20 51 5f 34 2e 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 57 65 20 6c 6f 6f 73 65 20 61 | .#.Q_4..............#.We.loose.a |
| 85c0 | 20 66 61 63 74 6f 72 20 6f 66 20 32 20 69 66 20 77 65 20 68 61 76 65 20 73 71 72 74 28 32 29 20 | .factor.of.2.if.we.have.sqrt(2). |
| 85e0 | 69 6e 20 51 5f 38 20 6f 72 20 5c 7a 65 74 61 5f 38 20 32 20 69 6e 00 00 20 20 20 20 20 20 20 20 | in.Q_8.or.\zeta_8.2.in.......... |
| 8600 | 20 20 20 20 20 20 20 20 72 20 2a 3d 20 32 00 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 20 | ........r.*=.2.............if.n. |
| 8620 | 3c 3d 20 64 20 61 6e 64 20 64 4d 20 25 20 28 32 5e 28 6e 2b 31 29 29 20 3d 3d 20 30 20 61 6e 64 | <=.d.and.dM.%.(2^(n+1)).==.0.and |
| 8640 | 20 6e 20 3e 20 31 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 62 79 20 68 61 76 69 6e 67 20 | .n.>.1:.............#.by.having. |
| 8660 | 2d 31 20 69 6e 20 74 68 65 20 73 68 6f 72 74 6c 69 73 74 2e 00 20 20 20 20 20 20 20 20 20 20 20 | -1.in.the.shortlist............. |
| 8680 | 20 23 20 64 75 65 20 74 6f 20 74 68 65 20 6e 65 67 61 74 69 76 65 20 6e 65 67 65 72 61 74 6f 72 | .#.due.to.the.negative.negerator |
| 86a0 | 2e 20 49 6e 20 63 61 73 65 20 6e 3d 31 2c 20 74 68 69 73 20 69 73 20 61 63 63 6f 75 6e 74 65 64 | ..In.case.n=1,.this.is.accounted |
| 86c0 | 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 57 65 20 64 6f 75 62 6c 65 20 6e 20 69 6e 20 63 61 | .............#.We.double.n.in.ca |
| 86e0 | 73 65 20 61 20 6e 65 77 20 72 6f 6f 74 73 20 6f 66 20 75 6e 69 74 79 20 65 6e 74 65 72 73 20 74 | se.a.new.roots.of.unity.enters.t |
| 8700 | 68 65 20 63 79 63 6c 6f 74 6f 6d 69 63 00 20 20 20 20 20 20 20 20 20 20 20 20 00 20 20 20 20 20 | he.cyclotomic................... |
| 8720 | 20 20 20 20 20 20 20 72 20 3d 20 6c 65 6e 28 20 5b 20 62 20 66 6f 72 20 62 20 69 6e 20 48 20 69 | .......r.=.len(.[.b.for.b.in.H.i |
| 8740 | 66 20 64 4d 20 25 20 62 20 3d 3d 20 30 20 5d 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 48 20 | f.dM.%.b.==.0.].).............H. |
| 8760 | 3d 20 5b 20 63 79 63 5f 65 6d 62 65 64 28 20 73 20 29 20 66 6f 72 20 73 20 69 6e 20 53 20 5d 20 | =.[.cyc_embed(.s.).for.s.in.S.]. |
| 8780 | 00 20 20 20 20 20 20 20 20 20 20 20 20 53 20 3d 20 5b 20 70 72 6f 64 75 63 74 28 73 29 20 66 6f | .............S.=.[.product(s).fo |
| 87a0 | 72 20 73 20 69 6e 20 73 75 62 73 65 74 73 28 20 73 68 6f 72 74 6c 69 73 74 20 29 20 5d 00 20 20 | r.s.in.subsets(.shortlist.).]... |
| 87c0 | 20 20 20 20 20 20 20 20 20 20 23 20 74 68 65 20 73 68 6f 72 74 6c 69 73 74 20 65 6d 62 65 64 73 | ..........#.the.shortlist.embeds |
| 87e0 | 20 69 6e 20 51 5f 6d 2e 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 75 63 68 20 74 68 61 74 | .in.Q_m..............#.such.that |
| 8800 | 20 74 68 61 74 20 73 6f 6d 65 20 65 6c 65 6d 65 6e 74 20 69 6e 20 74 68 65 20 73 75 62 67 72 6f | .that.some.element.in.the.subgro |
| 8820 | 75 70 20 6f 66 20 47 20 67 65 6e 65 72 61 74 65 64 20 62 79 00 20 20 20 20 20 20 20 20 20 20 20 | up.of.G.generated.by............ |
| 8840 | 20 23 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6c 69 6e 65 20 67 69 76 65 73 2c 20 77 69 74 | .#.The.following.line.gives,.wit |
| 8860 | 68 6f 75 74 20 72 65 70 65 74 69 74 69 6f 6e 73 2c 20 74 68 65 20 6c 69 73 74 20 6f 66 20 6d 27 | hout.repetitions,.the.list.of.m' |
| 8880 | 73 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 00 20 20 20 20 | s..................continue..... |
| 88a0 | 20 20 20 20 20 20 20 20 69 66 20 64 4d 20 25 20 28 32 5e 6e 29 20 21 3d 20 30 3a 00 20 20 20 20 | ........if.dM.%.(2^n).!=.0:..... |
| 88c0 | 20 20 20 20 20 20 20 20 23 20 72 6f 6f 74 73 20 6f 66 20 75 6e 69 74 79 2e 00 20 20 20 20 20 20 | ........#.roots.of.unity........ |
| 88e0 | 20 20 20 20 20 20 23 20 57 65 20 6f 6e 6c 79 20 63 61 72 65 20 6f 66 20 74 68 65 20 69 6e 74 65 | ......#.We.only.care.of.the.inte |
| 8900 | 72 73 65 63 74 69 6f 6e 20 77 69 74 68 20 51 5f 64 4d 20 69 66 20 69 74 20 63 6f 6e 74 61 69 6e | rsection.with.Q_dM.if.it.contain |
| 8920 | 73 20 74 68 65 20 32 5e 6e 00 20 20 20 20 20 20 20 20 66 6f 72 20 64 4d 20 69 6e 20 64 69 76 69 | s.the.2^n.........for.dM.in.divi |
| 8940 | 73 6f 72 73 28 20 4d 20 29 3a 00 00 20 20 20 20 20 20 20 20 61 75 78 20 3d 20 5b 5d 20 23 20 4e | sors(.M.):..........aux.=.[].#.N |
| 8960 | 65 78 74 20 6c 69 6e 65 20 6f 66 20 61 64 5f 66 61 69 6c 20 74 61 62 6c 65 00 00 20 20 20 20 20 | ext.line.of.ad_fail.table....... |
| 8980 | 20 20 20 23 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 6d 2e 00 20 20 20 20 20 20 20 20 23 20 | ...#.containing.them..........#. |
| 89a0 | 69 6d 70 72 6f 76 65 64 20 62 79 20 70 72 65 63 6f 6d 70 75 74 69 6e 67 20 73 75 62 67 72 6f 75 | improved.by.precomputing.subgrou |
| 89c0 | 70 73 20 6f 66 20 47 2f 47 5e 32 20 61 6e 64 20 74 68 65 20 63 79 63 6c 6f 74 6f 6d 69 63 20 66 | ps.of.G/G^2.and.the.cyclotomic.f |
| 89e0 | 69 65 6c 64 73 00 20 20 20 20 20 20 20 20 23 20 54 68 69 73 20 61 6c 67 6f 72 69 74 68 6d 20 63 | ields.........#.This.algorithm.c |
| 8a00 | 6f 75 6c 64 20 62 65 20 69 6e 65 66 66 69 63 69 65 6e 74 20 66 6f 72 20 67 72 6f 75 70 73 20 6f | ould.be.inefficient.for.groups.o |
| 8a20 | 66 20 62 69 67 20 72 61 6e 6b 2e 20 49 74 20 63 61 6e 20 62 65 00 20 20 20 20 20 20 20 20 23 20 | f.big.rank..It.can.be.........#. |
| 8a40 | 00 20 20 20 20 20 20 20 20 23 20 77 69 6c 6c 20 62 65 20 72 2c 20 75 70 20 74 6f 20 63 6f 6e 73 | .........#.will.be.r,.up.to.cons |
| 8a60 | 69 64 65 72 69 6e 67 20 73 6f 6d 65 20 73 70 65 63 69 61 6c 20 63 61 73 65 73 20 28 64 65 73 63 | idering.some.special.cases.(desc |
| 8a80 | 72 69 62 65 64 20 62 65 6c 6f 77 29 2e 00 20 20 20 20 20 20 20 20 23 20 74 68 61 74 20 6c 69 65 | ribed.below)..........#.that.lie |
| 8aa0 | 20 69 6e 20 51 5f 64 4d 2e 20 54 68 69 73 20 69 73 20 67 6f 69 6e 67 20 74 6f 20 62 65 20 61 20 | .in.Q_dM..This.is.going.to.be.a. |
| 8ac0 | 70 6f 77 65 72 20 6f 66 20 32 2e 20 54 68 65 20 73 6f 75 67 68 74 20 64 65 67 72 65 65 00 20 20 | power.of.2..The.sought.degree... |
| 8ae0 | 20 20 20 20 20 20 23 20 6e 75 6d 62 65 72 20 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 | ......#.number.r.of.elements.in. |
| 8b00 | 74 68 65 20 73 75 62 67 72 6f 75 70 20 6f 66 20 47 20 67 65 6e 65 72 61 74 65 64 20 62 79 20 74 | the.subgroup.of.G.generated.by.t |
| 8b20 | 68 65 20 73 68 6f 72 74 6c 69 73 74 00 20 20 20 20 20 20 20 20 23 20 51 28 5c 73 71 72 74 7b 32 | he.shortlist.........#.Q(\sqrt{2 |
| 8b40 | 5e 6e 7d 7b 47 7d 29 20 77 69 74 68 20 51 5f 64 4d 20 6f 76 65 72 20 51 5f 7b 32 5e 6e 7d 2e 20 | ^n}{G}).with.Q_dM.over.Q_{2^n}.. |
| 8b60 | 57 65 20 6e 65 65 64 20 74 6f 20 63 6f 6d 70 75 74 65 20 74 68 65 00 20 20 20 20 20 20 20 20 23 | We.need.to.compute.the.........# |
| 8b80 | 20 46 6f 72 20 65 61 63 68 20 64 69 76 69 73 6f 72 20 64 4d 20 6f 66 20 4d 2c 20 63 6f 6d 70 75 | .For.each.divisor.dM.of.M,.compu |
| 8ba0 | 74 65 20 74 68 65 20 64 65 67 72 65 65 20 6f 66 20 74 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f | te.the.degree.of.the.intersectio |
| 8bc0 | 6e 20 6f 66 00 00 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 72 74 6c 69 73 74 2e 72 65 6d 6f | n.of..............shortlist.remo |
| 8be0 | 76 65 28 2d 31 29 00 20 20 20 20 20 20 20 20 69 66 20 6e 20 3e 20 31 20 61 6e 64 20 2d 31 20 69 | ve(-1).........if.n.>.1.and.-1.i |
| 8c00 | 6e 20 73 68 6f 72 74 6c 69 73 74 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 72 74 6c 69 | n.shortlist:.............shortli |
| 8c20 | 73 74 2e 61 70 70 65 6e 64 28 2d 31 29 00 20 20 20 20 20 20 20 20 69 66 20 6e 20 3d 3d 20 31 20 | st.append(-1).........if.n.==.1. |
| 8c40 | 61 6e 64 20 64 20 3e 3d 20 31 3a 00 20 20 20 20 20 20 20 20 23 20 72 65 6d 6f 76 65 20 69 74 20 | and.d.>=.1:.........#.remove.it. |
| 8c60 | 6c 61 74 65 72 2e 00 20 20 20 20 20 20 20 20 23 20 57 65 20 68 61 76 65 20 74 6f 20 61 64 64 20 | later..........#.We.have.to.add. |
| 8c80 | 2d 31 20 74 6f 20 74 68 65 20 73 68 6f 72 74 6c 69 73 74 20 28 73 65 65 20 65 78 61 6d 70 6c 65 | -1.to.the.shortlist.(see.example |
| 8ca0 | 20 5b 31 32 2c 33 36 5d 29 20 61 6e 64 00 00 20 20 20 20 20 20 20 20 20 20 20 20 4d 20 3d 20 6c | .[12,36]).and..............M.=.l |
| 8cc0 | 63 6d 28 20 4d 2c 20 32 5e 28 6e 2b 31 29 20 29 00 20 20 20 20 20 20 20 20 69 66 20 6e 20 3c 3d | cm(.M,.2^(n+1).).........if.n.<= |
| 8ce0 | 20 64 3a 00 20 20 20 20 20 20 20 20 23 20 6e 65 67 61 74 69 76 65 20 65 6c 65 6d 65 6e 74 20 68 | .d:.........#.negative.element.h |
| 8d00 | 61 73 20 65 6e 6f 75 67 68 20 64 69 76 69 73 69 62 69 6c 69 74 79 29 2e 00 20 20 20 20 20 20 20 | as.enough.divisibility)......... |
| 8d20 | 20 23 20 48 65 72 65 20 77 65 20 61 63 63 6f 75 6e 74 20 66 6f 72 20 74 68 65 20 65 78 74 72 61 | .#.Here.we.account.for.the.extra |
| 8d40 | 20 32 5e 7b 6e 2b 31 7d 20 72 6f 6f 74 20 6f 66 20 75 6e 69 74 79 20 28 69 6e 20 63 61 73 65 20 | .2^{n+1}.root.of.unity.(in.case. |
| 8d60 | 74 68 65 00 20 20 20 20 20 20 20 20 20 20 20 20 00 20 20 20 20 20 20 20 20 4d 20 3d 20 6c 63 6d | the......................M.=.lcm |
| 8d80 | 28 4d 2c 32 5e 6e 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 4d 20 3d 20 6c 63 6d 28 20 4d 2c | (M,2^n)..............M.=.lcm(.M, |
| 8da0 | 20 63 79 63 5f 65 6d 62 65 64 28 62 29 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 72 | .cyc_embed(b).).............shor |
| 8dc0 | 74 6c 69 73 74 2e 61 70 70 65 6e 64 28 20 62 20 29 20 00 20 20 20 20 20 20 20 20 20 20 20 20 62 | tlist.append(.b.)..............b |
| 8de0 | 20 3d 20 61 62 73 28 42 5b 64 5d 5b 30 5d 29 5e 28 31 2f 32 5e 64 29 00 20 20 20 20 20 20 20 20 | .=.abs(B[d][0])^(1/2^d)......... |
| 8e00 | 69 66 20 64 20 21 3d 20 2d 31 20 61 6e 64 20 6e 20 3d 3d 20 64 2b 32 3a 20 20 20 20 20 20 20 20 | if.d.!=.-1.and.n.==.d+2:........ |
| 8e20 | 00 20 20 20 20 20 20 20 20 23 20 77 65 20 61 72 65 20 62 65 79 6f 6e 64 20 69 74 73 20 6c 65 76 | .........#.we.are.beyond.its.lev |
| 8e40 | 65 6c 2e 00 20 20 20 20 20 20 20 20 23 20 57 65 20 61 64 64 20 61 20 72 6f 6f 74 20 6f 66 20 61 | el..........#.We.add.a.root.of.a |
| 8e60 | 6e 20 65 76 65 6e 20 70 6f 77 65 72 20 6f 66 20 74 68 65 20 6e 65 67 61 74 69 76 65 20 67 65 6e | n.even.power.of.the.negative.gen |
| 8e80 | 65 72 61 74 6f 72 2c 20 61 73 20 73 6f 6f 6e 20 61 73 00 00 20 20 20 20 20 20 20 20 20 20 20 20 | erator,.as.soon.as.............. |
| 8ea0 | 20 20 20 20 20 20 20 20 4d 20 3d 20 6c 63 6d 28 20 4d 2c 20 63 79 63 5f 65 6d 62 65 64 28 62 29 | ........M.=.lcm(.M,.cyc_embed(b) |
| 8ec0 | 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 72 74 6c 69 73 74 | .).....................shortlist |
| 8ee0 | 2e 61 70 70 65 6e 64 28 20 62 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .append(.b.).................... |
| 8f00 | 20 62 20 3d 20 67 5e 28 31 2f 28 32 5e 28 6e 2d 31 29 29 29 20 23 20 62 20 69 73 20 32 2d 69 6e | .b.=.g^(1/(2^(n-1))).#.b.is.2-in |
| 8f20 | 64 69 76 69 73 69 62 6c 65 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 00 | divisible.................else:. |
| 8f40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 20 3d 20 6c 63 6d 28 20 4d 2c 20 | ....................M.=.lcm(.M,. |
| 8f60 | 73 70 65 63 69 61 6c 5f 65 6d 62 65 64 28 20 73 70 65 63 69 61 6c 5f 65 6c 65 6d 65 6e 74 20 29 | special_embed(.special_element.) |
| 8f80 | 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 70 65 63 69 61 6c 5f 65 | .).....................special_e |
| 8fa0 | 6c 65 6d 65 6e 74 20 3d 20 28 20 6e 2b 31 2c 20 61 62 73 28 67 29 5e 28 31 2f 28 32 5e 28 6e 2d | lement.=.(.n+1,.abs(g)^(1/(2^(n- |
| 8fc0 | 31 29 29 29 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 57 65 20 | 1))).).....................#.We. |
| 8fe0 | 73 74 6f 72 65 20 69 74 20 61 73 20 61 73 20 70 61 69 72 20 28 20 6e 2b 31 2c 20 62 20 29 2e 00 | store.it.as.as.pair.(.n+1,.b.).. |
| 9000 | 61 64 00 00 1b 00 00 00 13 02 00 00 00 10 00 00 77 00 00 00 00 00 00 00 b7 0f 00 00 8a 0f 00 00 | ad..............w............... |
| 9020 | 66 0f 00 00 36 0f 00 00 fb 0e 00 00 e0 0e 00 00 df 0e 00 00 be 0e 00 00 b5 0e 00 00 99 0e 00 00 | f...6........................... |
| 9040 | 98 0e 00 00 85 0e 00 00 84 0e 00 00 37 0e 00 00 23 0e 00 00 08 0e 00 00 f7 0d 00 00 e8 0d 00 00 | ............7...#............... |
| 9060 | d6 0d 00 00 d5 0d 00 00 8d 0d 00 00 71 0d 00 00 56 0d 00 00 38 0d 00 00 16 0d 00 00 0c 0d 00 00 | ............q...V...8........... |
| 9080 | e4 0c 00 00 e3 0c 00 00 95 0c 00 00 58 0c 00 00 3f 0c 00 00 21 0c 00 00 de 0b 00 00 94 0b 00 00 | ............X...?...!........... |
| 90a0 | 5b 0b 00 00 3c 0b 00 00 3b 0b 00 00 22 0b 00 00 0d 0b 00 00 0c 0b 00 00 fb 0a 00 00 cb 0a 00 00 | [...<...;..."................... |
| 90c0 | ca 0a 00 00 bb 0a 00 00 ba 0a 00 00 6e 0a 00 00 33 0a 00 00 1e 0a 00 00 01 0a 00 00 e6 09 00 00 | ............n...3............... |
| 90e0 | c8 09 00 00 a4 09 00 00 95 09 00 00 94 09 00 00 4e 09 00 00 37 09 00 00 29 09 00 00 18 09 00 00 | ................N...7...)....... |
| 9100 | 00 09 00 00 d4 08 00 00 b8 08 00 00 8c 08 00 00 5a 08 00 00 59 08 00 00 43 08 00 00 3f 08 00 00 | ................Z...Y...C...?... |
| 9120 | f0 07 00 00 d0 07 00 00 b8 07 00 00 9c 07 00 00 9b 07 00 00 8c 07 00 00 6b 07 00 00 66 07 00 00 | ........................k...f... |
| 9140 | 17 07 00 00 f8 06 00 00 d0 06 00 00 ae 06 00 00 ad 06 00 00 93 06 00 00 84 06 00 00 43 06 00 00 | ............................C... |
| 9160 | 29 06 00 00 28 06 00 00 19 06 00 00 05 06 00 00 e4 05 00 00 d3 05 00 00 a4 05 00 00 90 05 00 00 | )...(........................... |
| 9180 | 79 05 00 00 4e 05 00 00 1c 05 00 00 ea 04 00 00 ca 04 00 00 b4 04 00 00 82 04 00 00 5f 04 00 00 | y...N......................._... |
| 91a0 | 44 04 00 00 0e 04 00 00 e6 03 00 00 d5 03 00 00 d4 03 00 00 99 03 00 00 64 03 00 00 30 03 00 00 | D.......................d...0... |
| 91c0 | 2f 03 00 00 15 03 00 00 fb 02 00 00 ed 02 00 00 c4 02 00 00 b3 02 00 00 a4 02 00 00 93 02 00 00 | /............................... |
| 91e0 | 84 02 00 00 83 02 00 00 47 02 00 00 2f 02 00 00 13 02 00 00 12 02 00 00 00 00 00 00 00 00 00 00 | ........G.../................... |
| 9200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 69 66 20 6e 20 | ...........................if.n. |
| 9220 | 3e 20 6c 65 6e 28 74 61 62 6c 65 6c 29 3a 00 20 20 20 20 69 66 20 6d 20 3e 20 6c 65 6e 28 74 61 | >.len(tablel):.....if.m.>.len(ta |
| 9240 | 62 6c 65 6c 29 3a 00 20 20 20 20 23 20 42 61 73 69 63 61 6c 6c 79 2c 20 74 68 65 20 22 64 75 61 | blel):.....#.Basically,.the."dua |
| 9260 | 6c 22 20 6f 66 20 77 68 61 74 20 77 65 20 64 6f 20 69 6e 20 6c 5f 61 64 69 63 5f 64 65 67 72 65 | l".of.what.we.do.in.l_adic_degre |
| 9280 | 65 2e 00 00 20 20 20 20 72 20 3d 20 6c 65 6e 28 42 29 00 20 20 20 20 20 20 20 20 72 65 74 75 72 | e.......r.=.len(B).........retur |
| 92a0 | 6e 20 31 00 20 20 20 20 69 66 20 6e 20 3d 3d 20 30 3a 00 20 20 20 20 20 20 20 20 72 65 74 75 72 | n.1.....if.n.==.0:.........retur |
| 92c0 | 6e 20 30 00 20 20 20 20 20 20 20 20 23 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74 20 63 68 6f 69 63 | n.0.........#.inconsistent.choic |
| 92e0 | 65 20 6f 66 20 4d 20 61 6e 64 20 4e 00 20 20 20 20 69 66 20 6d 20 3c 20 6e 3a 00 20 20 20 20 6e | e.of.M.and.N.....if.m.<.n:.....n |
| 9300 | 20 3d 20 76 61 6c 75 61 74 69 6f 6e 28 20 4e 2c 20 6c 20 29 00 20 20 20 20 6d 20 3d 20 76 61 6c | .=.valuation(.N,.l.).....m.=.val |
| 9320 | 75 61 74 69 6f 6e 28 20 4d 2c 20 6c 20 29 00 00 64 65 66 20 6c 5f 61 64 69 63 5f 66 61 69 6c 75 | uation(.M,.l.)..def.l_adic_failu |
| 9340 | 72 65 5f 66 72 6f 6d 5f 64 61 74 61 28 20 42 2c 20 6c 2c 20 74 61 62 6c 65 6c 2c 20 4d 2c 20 4e | re_from_data(.B,.l,.tablel,.M,.N |
| 9360 | 20 29 3a 00 23 20 74 61 62 6c 65 6c 20 6d 75 73 74 20 62 65 20 74 68 65 20 6f 75 74 70 75 74 20 | .):.#.tablel.must.be.the.output. |
| 9380 | 74 61 62 6c 65 20 6f 66 20 6c 5f 61 64 69 63 5f 66 61 69 6c 75 72 65 2e 00 23 20 52 65 74 75 72 | table.of.l_adic_failure..#.Retur |
| 93a0 | 6e 73 20 61 20 70 6f 77 65 72 20 6f 66 20 6c 20 74 68 61 74 20 69 73 20 74 68 65 20 6c 2d 61 64 | ns.a.power.of.l.that.is.the.l-ad |
| 93c0 | 69 63 20 66 61 69 6c 75 72 65 20 61 74 20 4d 2c 20 4e 2e 00 00 20 20 20 20 72 65 74 75 72 6e 20 | ic.failure.at.M,.N.......return. |
| 93e0 | 74 61 62 65 6c 00 20 20 20 20 20 20 20 20 74 61 62 65 6c 2e 61 70 70 65 6e 64 28 28 72 6f 77 2c | tabel.........tabel.append((row, |
| 9400 | 6d 61 78 5f 66 61 69 6c 75 72 65 29 29 00 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 5f 66 61 | max_failure)).............max_fa |
| 9420 | 69 6c 75 72 65 20 3d 20 6d 61 78 28 20 6d 61 78 5f 66 61 69 6c 75 72 65 2c 20 66 61 69 6c 75 72 | ilure.=.max(.max_failure,.failur |
| 9440 | 65 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 2e 61 70 70 65 6e 64 28 76 6c 29 00 20 | e.).............row.append(vl).. |
| 9460 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61 69 6c 75 72 65 20 3d 20 72 2a 6e 20 2d 20 76 | ...............failure.=.r*n.-.v |
| 9480 | 6c 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 6c 20 3d 20 63 6f 6d 70 75 | l.....................vl.=.compu |
| 94a0 | 74 65 5f 76 6c 28 20 70 2c 20 6e 2c 20 6d 2c 20 72 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 | te_vl(.p,.n,.m,.r.)............. |
| 94c0 | 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ....else:....................... |
| 94e0 | 20 20 76 6c 20 2b 3d 20 31 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 | ..vl.+=.1.....................if |
| 9500 | 20 61 64 6a 75 73 74 5f 73 69 67 6e 28 20 47 42 20 29 5b 31 5d 20 3e 3d 20 31 3a 00 20 20 20 20 | .adjust_sign(.GB.)[1].>=.1:..... |
| 9520 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 6c 20 3d 20 63 6f 6d 70 75 74 65 5f 76 6c 28 | ................vl.=.compute_vl( |
| 9540 | 20 70 2c 20 31 2c 20 32 2c 20 72 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 | .p,.1,.2,.r.).................if |
| 9560 | 20 6c 3d 3d 32 20 61 6e 64 20 6e 3d 3d 31 20 61 6e 64 20 6d 3d 3d 31 3a 00 20 20 20 20 20 20 20 | .l==2.and.n==1.and.m==1:........ |
| 9580 | 20 20 20 20 20 69 66 20 6d 20 3e 3d 20 6e 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 76 6c 20 3d | .....if.m.>=.n:.............vl.= |
| 95a0 | 20 2d 31 00 20 20 20 20 20 20 20 20 66 6f 72 20 6e 20 69 6e 20 72 61 6e 67 65 28 20 31 2c 20 6d | .-1.........for.n.in.range(.1,.m |
| 95c0 | 61 78 28 20 6d 2b 31 2c 20 6d 61 78 4e 20 29 20 29 3a 00 20 20 20 20 20 20 20 20 72 6f 77 20 3d | ax(.m+1,.maxN.).):.........row.= |
| 95e0 | 20 5b 5d 00 20 20 20 20 66 6f 72 20 6d 20 69 6e 20 72 61 6e 67 65 28 20 31 2c 20 6d 61 78 4d 2b | .[].....for.m.in.range(.1,.maxM+ |
| 9600 | 31 20 29 3a 00 20 20 20 20 6d 61 78 5f 66 61 69 6c 75 72 65 20 3d 20 30 00 20 20 20 20 74 61 62 | 1.):.....max_failure.=.0.....tab |
| 9620 | 65 6c 20 3d 20 5b 5d 00 00 20 20 20 20 6d 61 78 4e 20 3d 20 6d 61 78 28 20 31 2c 20 6d 61 78 4e | el.=.[]......maxN.=.max(.1,.maxN |
| 9640 | 20 29 00 20 20 20 20 20 20 20 20 6d 61 78 4d 20 3d 20 6d 61 78 28 20 32 2c 20 6d 61 78 4d 20 29 | .).........maxM.=.max(.2,.maxM.) |
| 9660 | 20 23 20 46 6f 72 20 63 6f 6d 70 75 74 69 6e 67 20 70 61 72 61 6d 65 74 65 72 73 20 6f 76 65 72 | .#.For.computing.parameters.over |
| 9680 | 20 51 34 00 20 20 20 20 69 66 20 6c 20 3d 3d 20 32 3a 00 20 20 20 20 6d 61 78 4d 20 3d 20 6d 61 | .Q4.....if.l.==.2:.....maxM.=.ma |
| 96a0 | 78 28 20 31 2c 20 6d 61 78 4d 20 29 00 00 20 20 20 20 6d 61 78 4e 20 3d 20 6d 61 78 28 20 6d 61 | x(.1,.maxM.)......maxN.=.max(.ma |
| 96c0 | 78 4d 2c 20 6c 65 6e 28 47 42 29 2d 31 20 29 00 20 20 20 20 6d 61 78 4d 20 3d 20 6d 61 78 28 20 | xM,.len(GB)-1.).....maxM.=.max(. |
| 96e0 | 5b 20 73 75 6d 28 78 29 20 66 6f 72 20 78 20 69 6e 20 70 20 5d 20 29 00 20 20 20 20 70 20 3d 20 | [.sum(x).for.x.in.p.].).....p.=. |
| 9700 | 70 61 72 61 6d 65 74 65 72 73 5f 51 34 28 20 47 42 2c 20 6c 20 29 00 20 20 20 20 23 20 43 6f 6d | parameters_Q4(.GB,.l.).....#.Com |
| 9720 | 70 75 74 65 73 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 6f 76 65 72 20 51 34 2e 20 46 6f | putes.the.parameters.over.Q4..Fo |
| 9740 | 72 20 6c 20 6f 64 64 2c 20 74 68 65 79 20 61 72 65 20 74 68 65 20 73 61 6d 65 20 61 73 20 6f 76 | r.l.odd,.they.are.the.same.as.ov |
| 9760 | 65 72 20 51 2e 00 20 20 20 20 00 20 20 20 20 47 42 20 3d 20 6d 61 6b 65 5f 67 6f 6f 64 5f 62 61 | er.Q...........GB.=.make_good_ba |
| 9780 | 73 69 73 28 20 42 2c 20 6c 20 29 00 20 20 20 20 72 20 3d 20 6c 65 6e 28 42 29 00 00 64 65 66 20 | sis(.B,.l.).....r.=.len(B)..def. |
| 97a0 | 6c 5f 61 64 69 63 5f 66 61 69 6c 75 72 65 28 20 42 2c 20 6c 20 29 3a 00 23 20 42 20 69 73 20 61 | l_adic_failure(.B,.l.):.#.B.is.a |
| 97c0 | 6e 79 20 62 61 73 69 73 20 66 6f 72 20 47 2e 00 23 20 61 62 6f 76 65 20 22 74 6f 74 61 6c 5f 6c | ny.basis.for.G..#.above."total_l |
| 97e0 | 5f 61 64 69 63 5f 66 61 69 6c 75 72 65 22 2e 00 23 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6c | _adic_failure"..#.Computes.the.l |
| 9800 | 2d 61 64 69 63 20 66 61 69 6c 75 72 65 20 66 6f 72 20 61 20 73 70 65 63 69 66 69 63 20 6c 2e 20 | -adic.failure.for.a.specific.l.. |
| 9820 | 52 65 74 75 72 6e 73 20 61 20 22 74 61 62 6c 65 22 20 61 73 20 64 65 73 63 72 69 62 65 64 00 20 | Returns.a."table".as.described.. |
| 9840 | 20 20 00 20 20 20 20 72 65 74 75 72 6e 20 62 61 64 5f 70 72 69 6d 65 73 00 00 20 20 20 20 62 61 | .......return.bad_primes......ba |
| 9860 | 64 5f 70 72 69 6d 65 73 2e 73 6f 72 74 28 29 20 23 20 45 6e 73 75 72 65 73 20 32 20 69 73 20 61 | d_primes.sort().#.Ensures.2.is.a |
| 9880 | 6c 77 61 79 73 20 66 69 72 73 74 00 20 20 20 20 20 20 20 20 62 61 64 5f 70 72 69 6d 65 73 20 2b | lways.first.........bad_primes.+ |
| 98a0 | 3d 20 5b 32 5d 20 23 20 32 20 69 73 20 61 6c 77 61 79 73 20 62 61 64 00 20 20 20 20 69 66 20 32 | =.[2].#.2.is.always.bad.....if.2 |
| 98c0 | 20 6e 6f 74 20 69 6e 20 62 61 64 5f 70 72 69 6d 65 73 3a 00 20 20 20 20 62 61 64 5f 70 72 69 6d | .not.in.bad_primes:.....bad_prim |
| 98e0 | 65 73 20 3d 20 6c 69 73 74 28 20 70 72 69 6d 65 5f 66 61 63 74 6f 72 73 28 20 64 20 29 20 29 00 | es.=.list(.prime_factors(.d.).). |
| 9900 | 20 20 20 20 20 20 20 20 64 20 3d 20 67 63 64 28 20 64 2c 20 6d 20 29 00 20 20 20 20 66 6f 72 20 | ........d.=.gcd(.d,.m.).....for. |
| 9920 | 6d 20 69 6e 20 6d 73 3a 00 20 20 20 20 64 20 3d 20 6d 73 5b 30 5d 00 20 20 20 20 6d 73 20 3d 20 | m.in.ms:.....d.=.ms[0].....ms.=. |
| 9940 | 4d 2e 6d 69 6e 6f 72 73 28 20 61 20 29 00 20 20 20 20 23 20 43 6f 6d 70 75 74 65 20 77 68 69 63 | M.minors(.a.).....#.Compute.whic |
| 9960 | 68 20 70 72 69 6d 65 73 20 6c 20 64 69 76 69 64 65 20 61 6c 6c 20 6d 69 6e 6f 72 73 20 6f 66 20 | h.primes.l.divide.all.minors.of. |
| 9980 | 74 68 65 20 65 78 70 6f 6e 65 6e 74 20 6d 61 74 72 69 78 00 00 20 20 20 20 20 20 20 20 72 65 74 | the.exponent.matrix..........ret |
| 99a0 | 75 72 6e 00 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 54 68 69 73 20 69 73 20 6e 6f 74 20 61 | urn.........print."This.is.not.a |
| 99c0 | 20 62 61 73 69 73 22 00 20 20 20 20 69 66 20 61 20 3e 20 62 20 6f 72 20 4d 2e 72 61 6e 6b 28 29 | .basis".....if.a.>.b.or.M.rank() |
| 99e0 | 20 3c 20 61 3a 00 20 20 20 20 28 61 2c 62 29 20 3d 20 4d 2e 64 69 6d 65 6e 73 69 6f 6e 73 28 29 | .<.a:.....(a,b).=.M.dimensions() |
| 9a00 | 00 20 20 20 20 4d 20 3d 20 65 78 70 6f 6e 65 6e 74 5f 6d 61 74 72 69 78 28 20 42 20 29 00 64 65 | .....M.=.exponent_matrix(.B.).de |
| 9a20 | 66 20 62 61 64 5f 70 72 69 6d 65 73 28 20 42 20 29 3a 00 23 20 6d 61 78 69 6d 61 6c 2e 20 55 73 | f.bad_primes(.B.):.#.maximal..Us |
| 9a40 | 65 64 20 62 79 20 6c 5f 61 64 69 63 5f 64 65 67 72 65 65 20 61 6e 64 20 74 6f 74 61 6c 5f 6c 5f | ed.by.l_adic_degree.and.total_l_ |
| 9a60 | 61 64 69 63 5f 66 61 69 6c 75 72 65 2e 00 23 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 22 62 61 | adic_failure..#.Computes.the."ba |
| 9a80 | 64 20 70 72 69 6d 65 73 22 2c 20 69 2e 65 2e 20 74 68 65 20 6f 6e 65 73 20 66 6f 72 20 77 68 69 | d.primes",.i.e..the.ones.for.whi |
| 9aa0 | 63 68 20 74 68 65 20 6c 2d 61 64 69 63 20 70 61 72 74 20 69 73 20 6e 6f 74 00 00 20 20 20 20 72 | ch.the.l-adic.part.is.not......r |
| 9ac0 | 65 74 75 72 6e 20 72 65 74 00 00 20 20 20 20 20 20 20 20 72 65 74 5b 31 5d 2e 61 70 70 65 6e 64 | eturn.ret..........ret[1].append |
| 9ae0 | 28 20 6c 5f 61 64 69 63 5f 66 61 69 6c 75 72 65 28 20 42 2c 20 6c 20 29 20 29 00 20 20 20 20 66 | (.l_adic_failure(.B,.l.).).....f |
| 9b00 | 6f 72 20 6c 20 69 6e 20 62 70 3a 00 00 20 20 20 20 72 65 74 20 3d 20 28 20 62 70 2c 20 5b 5d 20 | or.l.in.bp:......ret.=.(.bp,.[]. |
| 9b20 | 29 00 20 20 20 20 62 70 20 3d 20 62 61 64 5f 70 72 69 6d 65 73 28 20 42 20 29 00 00 64 65 66 20 | ).....bp.=.bad_primes(.B.)..def. |
| 9b40 | 74 6f 74 61 6c 5f 6c 5f 61 64 69 63 5f 66 61 69 6c 75 72 65 28 20 42 20 29 3a 00 23 20 20 20 20 | total_l_adic_failure(.B.):.#.... |
| 9b60 | 20 64 65 67 72 65 65 20 6f 66 20 51 5f 7b 6c 5e 6d 2c 6c 5e 6e 7d 20 6f 76 65 72 20 51 5f 7b 6c | .degree.of.Q_{l^m,l^n}.over.Q_{l |
| 9b80 | 5e 6d 7d 2c 20 77 68 65 72 65 20 6c 20 3d 20 4c 5b 69 5d 00 23 20 20 20 2d 20 54 20 69 73 20 61 | ^m},.where.l.=.L[i].#...-.T.is.a |
| 9ba0 | 6e 20 61 72 72 61 79 20 6f 66 20 74 61 62 6c 65 73 2c 20 77 68 65 72 65 20 54 5b 69 5d 5b 6d 5d | n.array.of.tables,.where.T[i][m] |
| 9bc0 | 5b 6e 5d 20 69 73 20 74 68 65 20 6c 2d 76 61 6c 75 61 74 69 6f 6e 20 6f 66 20 74 68 65 00 23 20 | [n].is.the.l-valuation.of.the.#. |
| 9be0 | 20 20 2d 20 4c 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 70 72 69 6d 65 73 20 6c 20 74 68 61 74 | ..-.L.is.a.list.of.primes.l.that |
| 9c00 | 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 6d 61 78 69 6d 61 6c 20 6c 2d 61 64 69 63 20 70 61 72 74 | .do.not.have.maximal.l-adic.part |
| 9c20 | 00 23 20 52 65 74 75 72 6e 73 20 61 20 70 61 69 72 20 28 4c 2c 54 29 20 77 68 65 72 65 3a 00 23 | .#.Returns.a.pair.(L,T).where:.# |
| 9c40 | 20 49 6e 70 75 74 3a 20 61 6e 79 20 62 61 73 69 73 20 66 6f 72 20 47 00 23 20 6f 66 20 51 5f 7b | .Input:.any.basis.for.G.#.of.Q_{ |
| 9c60 | 6c 5e 6d 7d 28 5c 73 71 72 74 5b 32 5e 6e 5d 28 47 29 29 20 6f 76 65 72 20 51 5f 7b 6c 5e 6d 7d | l^m}(\sqrt[2^n](G)).over.Q_{l^m} |
| 9c80 | 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 6c 2e 00 23 20 43 6f 6d 70 75 74 65 73 20 | .for.all.possible.l..#.Computes. |
| 9ca0 | 74 68 65 20 22 6c 2d 61 64 69 63 20 66 61 69 6c 75 72 65 22 2c 20 69 2e 65 2e 20 74 68 65 20 72 | the."l-adic.failure",.i.e..the.r |
| 9cc0 | 61 74 69 6f 20 62 65 74 77 65 65 6e 20 6c 5e 7b 6e 72 7d 20 61 6e 64 20 74 68 65 20 64 65 67 72 | atio.between.l^{nr}.and.the.degr |
| 9ce0 | 65 65 00 00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 63 6d 28 20 32 5e 6e 2c 20 63 79 63 | ee..........return.lcm(.2^n,.cyc |
| 9d00 | 5f 65 6d 62 65 64 28 62 29 20 29 00 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 72 65 | _embed(b).).....else:.........re |
| 9d20 | 74 75 72 6e 20 34 20 2a 20 63 79 63 5f 65 6d 62 65 64 28 6d 2f 32 29 00 20 20 20 20 69 66 20 6e | turn.4.*.cyc_embed(m/2).....if.n |
| 9d40 | 20 3d 3d 20 33 20 61 6e 64 20 6d 20 25 20 32 20 3d 3d 20 30 3a 00 20 20 20 20 6d 20 3d 20 73 71 | .==.3.and.m.%.2.==.0:.....m.=.sq |
| 9d60 | 75 61 72 65 66 72 65 65 5f 70 61 72 74 28 62 29 00 64 65 66 20 73 70 65 63 69 61 6c 5f 65 6d 62 | uarefree_part(b).def.special_emb |
| 9d80 | 65 64 28 20 28 6e 2c 62 29 20 29 3a 00 23 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6d 69 6e 69 | ed(.(n,b).):.#.Computes.the.mini |
| 9da0 | 6d 61 6c 20 63 79 63 6c 6f 74 6f 6d 69 63 20 66 69 65 6c 64 20 63 6f 6e 74 61 69 6e 69 6e 67 20 | mal.cyclotomic.field.containing. |
| 9dc0 | 5c 7a 65 74 61 5f 7b 32 5e 6e 7d 5c 73 71 72 74 28 62 29 2e 00 00 20 20 20 20 72 65 74 75 72 6e | \zeta_{2^n}\sqrt(b).......return |
| 9de0 | 20 61 62 73 28 6d 29 00 20 20 20 20 20 20 20 20 6d 20 2a 3d 20 34 00 20 20 20 20 69 66 20 6d 25 | .abs(m).........m.*=.4.....if.m% |
| 9e00 | 34 20 21 3d 20 31 3a 00 20 20 20 20 6d 20 3d 20 73 71 75 61 72 65 66 72 65 65 5f 70 61 72 74 28 | 4.!=.1:.....m.=.squarefree_part( |
| 9e20 | 62 29 00 64 65 66 20 63 79 63 5f 65 6d 62 65 64 28 20 62 20 29 3a 00 23 20 52 65 74 75 72 6e 73 | b).def.cyc_embed(.b.):.#.Returns |
| 9e40 | 20 74 68 65 20 73 6d 61 6c 6c 65 73 74 20 6d 20 73 75 63 68 20 74 68 61 74 20 5c 73 71 72 74 28 | .the.smallest.m.such.that.\sqrt( |
| 9e60 | 62 29 20 69 73 20 69 6e 20 74 68 65 20 6d 2d 74 68 20 63 79 63 6c 6f 74 6f 6d 69 63 20 66 69 65 | b).is.in.the.m-th.cyclotomic.fie |
| 9e80 | 6c 64 2e 00 00 20 20 20 20 72 65 74 75 72 6e 20 61 64 5f 66 61 69 6c 00 00 20 20 20 20 20 20 20 | ld.......return.ad_fail......... |
| 9ea0 | 20 61 64 5f 66 61 69 6c 2e 61 70 70 65 6e 64 28 61 75 78 29 00 20 20 20 20 20 20 20 20 00 20 20 | .ad_fail.append(aux)............ |
| 9ec0 | 20 20 20 20 20 20 20 20 20 20 61 75 78 2e 61 70 70 65 6e 64 28 20 28 64 4d 2c 72 29 20 29 00 00 | ..........aux.append(.(dM,r).).. |
| 9ee0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 20 2a 3d 20 32 00 20 20 20 20 20 | ....................r.*=.2...... |
| 9f00 | 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 6e 74 65 72 73 65 63 74 69 6e 67 5f 51 64 4d 20 61 | ...........if.intersecting_QdM.a |
| 9f20 | 6e 64 20 6e 6f 74 20 6e 6f 74 68 69 6e 67 5f 74 6f 5f 64 6f 3a 00 20 20 20 20 20 20 20 20 20 20 | nd.not.nothing_to_do:........... |
| 9f40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 73 65 63 74 69 6e 67 5f 51 64 4d 20 3d | ..............intersecting_QdM.= |
| 9f60 | 20 54 72 75 65 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 4d 20 | .True.....................if.dM. |
| 9f80 | 25 20 6d 20 3d 3d 20 30 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | %.m.==.0:....................... |
| 9fa0 | 20 20 6e 6f 74 68 69 6e 67 5f 74 6f 5f 64 6f 20 3d 20 54 72 75 65 00 20 20 20 20 20 20 20 20 20 | ..nothing_to_do.=.True.......... |
| 9fc0 | 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 20 3d 3d 20 32 20 61 6e 64 20 6d 20 3d 3d 20 34 3a | ...........if.n.==.2.and.m.==.4: |
| 9fe0 | 20 23 20 5c 7a 65 74 61 5f 38 20 74 69 6d 65 73 20 32 20 74 69 6d 65 73 20 73 71 75 61 72 65 00 | .#.\zeta_8.times.2.times.square. |
| a000 | 61 64 00 00 58 05 00 00 80 06 00 00 00 10 00 00 43 00 00 00 00 00 00 00 dd 0f 00 00 cf 0f 00 00 | ad..X...........C............... |
| a020 | a1 0f 00 00 9c 0f 00 00 75 0f 00 00 74 0f 00 00 24 0f 00 00 06 0f 00 00 eb 0e 00 00 de 0e 00 00 | ........u...t...$............... |
| a040 | bd 0e 00 00 a5 0e 00 00 85 0e 00 00 76 0e 00 00 75 0e 00 00 28 0e 00 00 f7 0d 00 00 ac 0d 00 00 | ............v...u...(........... |
| a060 | 84 0d 00 00 68 0d 00 00 59 0d 00 00 34 0d 00 00 2a 0d 00 00 ef 0c 00 00 e0 0c 00 00 cb 0c 00 00 | ....h...Y...4...*............... |
| a080 | b8 0c 00 00 b3 0c 00 00 92 0c 00 00 91 0c 00 00 41 0c 00 00 f7 0b 00 00 a7 0b 00 00 a6 0b 00 00 | ................A............... |
| a0a0 | 5d 0b 00 00 1c 0b 00 00 1b 0b 00 00 f5 0a 00 00 da 0a 00 00 8c 0a 00 00 56 0a 00 00 45 0a 00 00 | ].......................V...E... |
| a0c0 | fc 09 00 00 b5 09 00 00 b4 09 00 00 65 09 00 00 1a 09 00 00 01 09 00 00 e4 08 00 00 c7 08 00 00 | ............e................... |
| a0e0 | 9f 08 00 00 52 08 00 00 18 08 00 00 ec 07 00 00 c8 07 00 00 a2 07 00 00 86 07 00 00 66 07 00 00 | ....R.......................f... |
| a100 | 48 07 00 00 2d 07 00 00 01 07 00 00 00 07 00 00 e5 06 00 00 e4 06 00 00 bf 06 00 00 be 06 00 00 | H...-........................... |
| a120 | 80 06 00 00 7f 06 00 00 7e 06 00 00 79 06 00 00 8f 05 00 00 66 05 00 00 38 05 00 00 15 05 00 00 | ........~...y.......f...8....... |
| a140 | fe 04 00 00 d5 04 00 00 b9 04 00 00 9b 04 00 00 81 04 00 00 80 04 00 00 32 04 00 00 e4 03 00 00 | ........................2....... |
| a160 | b2 03 00 00 99 03 00 00 98 03 00 00 82 03 00 00 6c 03 00 00 48 03 00 00 15 03 00 00 f5 02 00 00 | ................l...H........... |
| a180 | d8 02 00 00 d7 02 00 00 87 02 00 00 86 02 00 00 6a 02 00 00 46 02 00 00 06 02 00 00 fd 01 00 00 | ................j...F........... |
| a1a0 | db 01 00 00 da 01 00 00 b0 01 00 00 db 01 00 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 43 6f | ............................#.Co |
| a1c0 | 6d 70 75 74 65 20 6e 65 77 20 42 2c 20 64 20 61 6e 64 20 73 6f 20 6f 6e 2e 00 00 20 20 20 20 20 | mpute.new.B,.d.and.so.on........ |
| a1e0 | 20 20 20 20 20 20 20 62 5b 6d 61 78 69 5d 20 3d 20 6e 65 77 5f 65 6c 65 6d 65 6e 74 00 20 20 20 | .......b[maxi].=.new_element.... |
| a200 | 20 20 20 20 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 5f 65 6c 65 6d 65 6e | ......................new_elemen |
| a220 | 74 20 2a 3d 20 62 5b 69 5d 5e 28 20 78 5b 69 5d 20 2a 20 6c 5e 28 64 5b 6d 61 78 69 5d 2d 64 5b | t.*=.b[i]^(.x[i].*.l^(d[maxi]-d[ |
| a240 | 69 5d 29 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 | i]).).............for.i.in.range |
| a260 | 28 6c 65 6e 28 64 29 29 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 5f 65 6c 65 6d 65 6e | (len(d)):.............new_elemen |
| a280 | 74 20 3d 20 31 00 00 20 20 20 20 20 20 20 20 20 20 20 20 78 20 3d 20 5b 28 61 2f 63 6f 65 66 66 | t.=.1..............x.=.[(a/coeff |
| a2a0 | 73 5b 6d 61 78 69 5d 29 2e 6c 69 66 74 28 29 20 66 6f 72 20 61 20 69 6e 20 63 6f 65 66 66 73 5d | s[maxi]).lift().for.a.in.coeffs] |
| a2c0 | 20 23 20 4e 6f 77 20 61 20 76 65 63 74 6f 72 20 6f 66 20 69 6e 74 00 00 20 20 20 20 20 20 20 20 | .#.Now.a.vector.of.int.......... |
| a2e0 | 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 69 20 3d 20 69 00 20 20 20 20 20 20 20 20 20 20 20 | ............maxi.=.i............ |
| a300 | 20 20 20 20 20 20 20 20 20 6d 61 78 64 20 3d 20 64 5b 69 5d 00 20 20 20 20 20 20 20 20 20 20 20 | .........maxd.=.d[i]............ |
| a320 | 20 20 20 20 20 69 66 20 64 5b 69 5d 20 3e 20 6d 61 78 64 20 61 6e 64 20 63 6f 65 66 66 73 5b 69 | .....if.d[i].>.maxd.and.coeffs[i |
| a340 | 5d 20 21 3d 20 30 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e | ].!=.0:.............for.i.in.ran |
| a360 | 67 65 28 6c 65 6e 28 64 29 29 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 64 20 3d 20 2d | ge(len(d)):.............maxd.=.- |
| a380 | 31 00 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 69 20 3d 20 2d 31 00 00 20 20 20 20 20 20 20 | 1.............maxi.=.-1......... |
| a3a0 | 20 69 66 20 63 6f 65 66 66 73 20 21 3d 20 5b 5d 3a 00 20 20 20 20 20 20 20 20 63 6f 65 66 66 73 | .if.coeffs.!=.[]:.........coeffs |
| a3c0 | 20 3d 20 66 69 6e 64 5f 63 6f 6d 62 69 6e 61 74 69 6f 6e 28 20 6d 61 74 72 69 78 28 4d 29 2c 20 | .=.find_combination(.matrix(M),. |
| a3e0 | 6c 20 29 00 20 20 20 20 20 20 20 20 23 20 6f 6e 63 65 29 20 74 6f 20 70 72 6f 64 75 63 65 20 61 | l.).........#.once).to.produce.a |
| a400 | 20 6e 65 77 20 62 61 73 69 73 2e 20 54 68 65 20 6e 65 77 20 62 61 73 69 73 20 68 61 73 20 6d 61 | .new.basis..The.new.basis.has.ma |
| a420 | 78 69 6d 61 6c 20 70 61 72 61 6d 65 74 65 72 73 2e 00 20 20 20 20 20 20 20 20 23 20 49 66 20 74 | ximal.parameters..........#.If.t |
| a440 | 68 65 20 42 69 27 73 20 61 72 65 20 6e 6f 74 20 73 74 72 6f 6e 67 6c 79 20 69 6e 64 65 70 65 6e | he.Bi's.are.not.strongly.indepen |
| a460 | 64 65 6e 74 2c 20 61 70 70 6c 79 20 74 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 28 6f 6e 6c 79 00 | dent,.apply.the.algorithm.(only. |
| a480 | 00 20 20 20 20 20 20 20 20 20 20 20 20 4d 2e 61 70 70 65 6e 64 28 72 6f 77 29 00 20 20 20 20 20 | .............M.append(row)...... |
| a4a0 | 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 5b 69 5d 20 3d 20 65 65 2d 31 00 20 20 20 20 20 20 20 | ...........row[i].=.ee-1........ |
| a4c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 65 65 20 2b 3d 20 31 00 20 20 20 20 20 20 20 20 20 20 20 | .............ee.+=.1............ |
| a4e0 | 20 20 20 20 20 77 68 69 6c 65 20 28 49 5e 65 65 29 2e 64 69 76 69 64 65 73 28 67 29 3a 00 20 20 | .....while.(I^ee).divides(g):... |
| a500 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 65 20 3d 20 31 00 20 20 20 20 20 20 20 20 20 20 20 | ..............ee.=.1............ |
| a520 | 20 20 20 20 20 49 20 3d 20 69 64 65 61 6c 73 5f 6c 69 73 74 5b 69 5d 00 20 20 20 20 20 20 20 20 | .....I.=.ideals_list[i]......... |
| a540 | 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 69 64 65 61 6c 73 5f 6c 69 | ....for.i.in.range(len(ideals_li |
| a560 | 73 74 29 29 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 20 3d 20 5b 30 5d 20 2a 20 6c 65 | st)):.............row.=.[0].*.le |
| a580 | 6e 28 69 64 65 61 6c 73 5f 6c 69 73 74 29 00 20 20 20 20 20 20 20 20 66 6f 72 20 67 20 69 6e 20 | n(ideals_list).........for.g.in. |
| a5a0 | 42 3a 00 20 20 20 20 20 20 20 20 23 20 4d 61 6b 65 20 74 68 65 20 65 78 70 6f 6e 65 6e 74 20 6d | B:.........#.Make.the.exponent.m |
| a5c0 | 61 74 72 69 78 20 4d 20 28 66 6f 72 20 6e 6f 77 20 61 73 20 61 20 6c 69 73 74 20 6f 66 20 72 6f | atrix.M.(for.now.as.a.list.of.ro |
| a5e0 | 77 73 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 2e 61 70 70 65 6e 64 28 20 32 | ws)..................h.append(.2 |
| a600 | 20 29 20 00 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 20 20 | .)..............else:........... |
| a620 | 20 20 20 20 20 20 68 2e 61 70 70 65 6e 64 28 20 31 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 | ......h.append(.1.)............. |
| a640 | 65 6c 69 66 20 75 20 3d 3d 20 2d 31 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 2e | elif.u.==.-1:.................h. |
| a660 | 61 70 70 65 6e 64 28 20 30 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 69 23 23 23 23 23 23 23 | append(.0.).............i####### |
| a680 | 23 20 55 73 65 73 20 54 68 65 6f 72 65 6d 20 31 38 20 74 6f 20 63 6f 6d 70 75 74 65 20 74 68 65 | #.Uses.Theorem.18.to.compute.the |
| a6a0 | 20 64 65 67 72 65 65 20 6f 66 20 4b 75 6d 6d 65 72 20 65 78 74 65 6e 73 69 6f 6e 73 2e 00 00 20 | .degree.of.Kummer.extensions.... |
| a6c0 | 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 61 6d 65 74 65 72 73 5f 51 28 20 67 62 2c 20 | .......return.parameters_Q(.gb,. |
| a6e0 | 32 20 29 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 00 | 2.)..................return.ret. |
| a700 | 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 5b 69 6e 64 5f 6d 61 78 5d 20 3d 20 | .................ret[ind_max].=. |
| a720 | 28 20 64 31 2b 31 2c 20 68 31 20 29 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | (.d1+1,.h1.).................... |
| a740 | 20 68 31 20 3d 20 32 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 64 31 20 | .h1.=.2.................elif.d1. |
| a760 | 3d 3d 20 30 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 31 20 3d 20 31 | ==.0:.....................h1.=.1 |
| a780 | 20 2d 20 68 31 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 31 20 3d 3d 20 31 | .-.h1.................if.d1.==.1 |
| a7a0 | 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 31 2c 20 68 31 20 3d 20 72 65 74 5b 69 | :.................d1,.h1.=.ret[i |
| a7c0 | 6e 64 5f 6d 61 78 5d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | nd_max]......................... |
| a7e0 | 69 6e 64 5f 6d 61 78 20 3d 20 69 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ind_max.=.i..................... |
| a800 | 20 20 20 20 64 69 76 5f 6d 61 78 20 3d 20 72 65 74 5b 69 5d 5b 30 5d 00 20 20 20 20 20 20 20 20 | ....div_max.=.ret[i][0]......... |
| a820 | 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 61 5b 69 5d 20 21 3d 20 30 20 61 6e 64 20 72 65 74 | ............if.a[i].!=.0.and.ret |
| a840 | 5b 69 5d 5b 30 5d 20 3e 20 64 69 76 5f 6d 61 78 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | [i][0].>.div_max:............... |
| a860 | 20 20 20 20 20 20 72 65 74 2e 61 70 70 65 6e 64 28 20 28 64 69 76 69 73 69 62 69 6c 69 74 79 28 | ......ret.append(.(divisibility( |
| a880 | 4d 5b 69 5d 2c 32 29 2c 20 31 2d 6d 61 78 28 30 2c 73 67 6e 28 62 5b 69 5d 29 29 29 20 29 00 20 | M[i],2),.1-max(0,sgn(b[i]))).).. |
| a8a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 | ...............for.i.in.range(le |
| a8c0 | 6e 28 62 29 29 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 5f 6d 61 78 20 3d | n(b)):.................ind_max.= |
| a8e0 | 20 2d 31 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 76 5f 6d 61 78 20 3d 20 2d 31 | .-1.................div_max.=.-1 |
| a900 | 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 20 3d 20 5b 5d 00 20 20 20 20 20 20 | .................ret.=.[]....... |
| a920 | 20 20 20 20 20 20 20 20 20 20 23 20 6f 66 20 68 69 67 68 65 73 74 20 64 69 76 69 73 69 62 69 6c | ..........#.of.highest.divisibil |
| a940 | 69 74 79 20 74 68 61 74 20 61 70 70 65 61 72 73 20 69 6e 20 74 68 65 20 63 6f 6d 62 69 6e 61 74 | ity.that.appears.in.the.combinat |
| a960 | 69 6f 6e 2e 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 52 65 74 75 72 6e 20 74 68 | ion..................#.Return.th |
| a980 | 65 20 70 61 72 61 6d 65 74 65 72 73 2c 20 63 68 61 6e 67 69 6e 67 20 6f 6e 6c 79 20 74 68 65 20 | e.parameters,.changing.only.the. |
| a9a0 | 6f 6e 65 73 20 66 6f 20 74 68 65 20 65 6c 65 6d 65 6e 74 00 00 20 20 20 20 20 20 20 20 20 20 20 | ones.fo.the.element............. |
| a9c0 | 20 20 20 20 20 63 20 3d 20 5b 20 62 5b 69 5d 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c | .....c.=.[.b[i].for.i.in.range(l |
| a9e0 | 65 6e 28 61 5b 30 3a 2d 31 5d 29 29 20 69 66 20 61 5b 69 5d 20 21 3d 20 30 20 5d 00 20 20 20 20 | en(a[0:-1])).if.a[i].!=.0.]..... |
| aa00 | 20 20 20 20 20 20 20 20 20 20 20 20 23 20 42 61 73 69 73 20 65 6c 65 6d 65 6e 74 73 20 74 68 61 | ............#.Basis.elements.tha |
| aa20 | 74 20 61 63 74 75 61 6c 6c 79 20 61 70 70 65 61 72 20 69 6e 20 74 68 65 20 63 6f 6d 62 69 6e 61 | t.actually.appear.in.the.combina |
| aa40 | 74 69 6f 6e 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 20 20 20 20 20 20 20 20 20 20 | tion............................ |
| aa60 | 20 20 20 20 20 20 23 20 6f 66 20 74 68 65 20 62 5f 69 27 73 20 6f 66 20 74 68 65 20 66 6f 72 6d | ......#.of.the.b_i's.of.the.form |
| aa80 | 20 32 20 2a 20 73 71 75 61 72 65 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 68 | .2.*.square.................#.th |
| aaa0 | 65 20 76 65 63 74 6f 72 20 61 5b 30 3a 2d 31 5d 20 67 69 76 65 73 20 74 68 65 20 63 6f 65 66 66 | e.vector.a[0:-1].gives.the.coeff |
| aac0 | 69 63 69 65 6e 74 73 20 66 6f 72 20 61 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 00 20 20 20 20 20 20 | icients.for.a.combination....... |
| aae0 | 20 20 20 20 20 20 69 66 20 61 5b 2d 31 5d 20 21 3d 20 30 3a 00 20 20 20 20 20 20 20 20 66 6f 72 | ......if.a[-1].!=.0:.........for |
| ab00 | 20 61 20 69 6e 20 4d 4d 2e 6b 65 72 6e 65 6c 28 29 2e 62 61 73 69 73 28 29 3a 00 00 20 20 20 20 | .a.in.MM.kernel().basis():...... |
| ab20 | 20 20 20 20 4d 4d 20 3d 20 65 78 70 6f 6e 65 6e 74 5f 6d 61 74 72 69 78 28 20 62 62 20 2b 20 5b | ....MM.=.exponent_matrix(.bb.+.[ |
| ab40 | 32 5d 20 29 2e 63 68 61 6e 67 65 5f 72 69 6e 67 28 20 47 46 28 20 32 20 29 20 29 20 00 20 20 20 | 2].).change_ring(.GF(.2.).)..... |
| ab60 | 20 20 20 20 20 23 20 43 6f 6d 70 75 74 69 6e 67 20 61 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f | .....#.Computing.a.combination.o |
| ab80 | 66 20 62 62 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 32 20 2a 20 73 71 | f.bb.elements.of.the.form.2.*.sq |
| aba0 | 75 61 72 65 2e 00 00 20 20 20 20 20 20 20 20 62 62 20 3d 20 5b 20 61 62 73 28 62 5b 69 5d 29 20 | uare...........bb.=.[.abs(b[i]). |
| abc0 | 5e 20 28 32 5e 28 2d 64 69 76 69 73 69 62 69 6c 69 74 79 28 4d 5b 69 5d 2c 32 29 29 29 20 66 6f | ^.(2^(-divisibility(M[i],2))).fo |
| abe0 | 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 62 29 29 20 5d 00 20 20 20 20 20 20 20 20 23 | r.i.in.range(len(b)).].........# |
| ac00 | 20 67 5f 69 20 69 6e 20 74 68 65 20 61 72 74 69 63 6c 65 2c 20 77 68 69 6c 65 20 74 68 65 20 65 | .g_i.in.the.article,.while.the.e |
| ac20 | 6c 65 6d 65 6e 74 73 20 6f 66 20 62 62 20 77 69 6c 6c 20 62 65 20 74 68 65 20 62 5f 69 27 73 2e | lements.of.bb.will.be.the.b_i's. |
| ac40 | 00 20 20 20 20 20 20 20 20 23 20 54 68 61 6e 6b 73 20 74 6f 20 6d 79 20 74 65 72 72 69 62 6c 65 | .........#.Thanks.to.my.terrible |
| ac60 | 20 6e 6f 74 61 74 69 6f 6e 2c 20 74 68 65 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 62 20 61 72 65 | .notation,.the.elements.of.b.are |
| ac80 | 20 77 68 61 74 20 61 72 65 20 63 61 6c 6c 65 64 00 00 20 20 20 20 20 20 20 20 4d 20 3d 20 65 78 | .what.are.called..........M.=.ex |
| aca0 | 70 6f 6e 65 6e 74 5f 6d 61 74 72 69 78 28 20 62 20 29 00 20 20 20 20 00 20 20 20 20 20 20 20 20 | ponent_matrix(.b.).............. |
| acc0 | 20 20 20 20 62 20 2b 3d 20 78 00 20 20 20 20 20 20 20 20 66 6f 72 20 78 20 69 6e 20 67 62 3a 00 | ....b.+=.x.........for.x.in.gb:. |
| ace0 | 20 20 20 20 20 20 20 20 62 20 3d 20 5b 5d 00 20 20 20 20 20 20 20 20 23 20 43 6f 6e 76 65 72 74 | ........b.=.[].........#.Convert |
| ad00 | 73 20 66 72 6f 6d 20 22 67 6f 6f 64 20 62 61 73 69 73 20 66 6f 72 6d 61 74 22 20 74 6f 20 73 69 | s.from."good.basis.format".to.si |
| ad20 | 6d 70 6c 65 20 6c 69 73 74 00 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 72 65 74 75 | mple.list.....else:.........retu |
| ad40 | 72 6e 20 70 61 72 61 6d 65 74 65 72 73 5f 51 28 20 67 62 2c 20 6c 20 29 00 20 20 20 20 69 66 20 | rn.parameters_Q(.gb,.l.).....if. |
| ad60 | 6c 20 21 3d 20 32 3a 00 64 65 66 20 70 61 72 61 6d 65 74 65 72 73 5f 51 34 28 20 67 62 2c 20 6c | l.!=.2:.def.parameters_Q4(.gb,.l |
| ad80 | 20 29 3a 00 23 20 49 66 20 6c 3d 32 2c 20 69 74 20 75 73 65 73 20 74 68 65 20 72 65 73 75 6c 74 | .):.#.If.l=2,.it.uses.the.result |
| ada0 | 73 20 6f 66 20 50 53 54 2d 32 2e 00 23 20 49 66 20 6c 20 69 73 20 6f 64 64 20 69 74 20 6a 75 73 | s.of.PST-2..#.If.l.is.odd.it.jus |
| adc0 | 74 20 75 73 65 73 20 74 68 65 20 67 6f 6f 64 20 62 61 73 69 73 20 67 69 76 65 6e 20 74 6f 20 63 | t.uses.the.good.basis.given.to.c |
| ade0 | 6f 6d 70 75 74 65 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 2e 00 23 20 6f 76 65 72 20 51 20 | ompute.the.parameters..#.over.Q. |
| ae00 | 66 6f 72 20 47 2e 20 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 70 61 69 72 73 20 28 | for.G..Returns.a.list.of.pairs.( |
| ae20 | 64 69 2c 68 69 29 2e 00 23 20 43 6f 6d 70 75 74 65 73 20 74 68 65 20 6c 2d 64 69 76 69 73 69 62 | di,hi)..#.Computes.the.l-divisib |
| ae40 | 69 6c 69 74 79 20 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20 47 20 6f 76 65 72 20 51 34 2c 20 67 | ility.parameters.of.G.over.Q4,.g |
| ae60 | 69 76 65 6e 20 61 20 67 6f 6f 64 20 62 61 73 69 73 20 67 62 00 00 20 20 20 20 72 65 74 75 72 6e | iven.a.good.basis.gb......return |
| ae80 | 20 72 65 74 00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 2e 61 70 70 65 6e 64 28 20 28 69 2c | .ret.............ret.append(.(i, |
| aea0 | 30 29 20 29 00 20 20 20 20 20 20 20 20 66 6f 72 20 6a 20 69 6e 20 67 62 5b 69 5d 3a 00 20 20 20 | 0).).........for.j.in.gb[i]:.... |
| aec0 | 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 20 6c 65 6e 28 20 67 62 20 29 20 29 3a 00 20 20 | .for.i.in.range(.len(.gb.).):... |
| aee0 | 20 20 72 65 74 20 3d 20 5b 5d 00 64 65 66 20 70 61 72 61 6d 65 74 65 72 73 5f 51 28 20 67 62 2c | ..ret.=.[].def.parameters_Q(.gb, |
| af00 | 20 6c 20 29 3a 00 23 20 61 73 20 61 20 6c 69 73 74 20 6f 66 20 70 61 69 72 73 20 28 64 69 2c 68 | .l.):.#.as.a.list.of.pairs.(di,h |
| af20 | 69 29 2e 00 23 20 52 65 74 75 72 6e 73 20 74 68 65 20 6c 2d 64 76 69 73 69 62 69 6c 69 74 79 20 | i)..#.Returns.the.l-dvisibility. |
| af40 | 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20 47 20 6f 76 65 72 20 51 2c 20 67 69 76 65 6e 20 61 20 | parameters.of.G.over.Q,.given.a. |
| af60 | 67 6f 6f 64 20 62 61 73 69 73 20 67 62 20 6f 66 20 47 2c 00 00 20 20 20 20 72 65 74 75 72 6e 20 | good.basis.gb.of.G,......return. |
| af80 | 6c 5e 28 72 2a 6e 2d 74 61 62 6c 65 6c 5b 6d 2d 31 5d 5b 30 5d 5b 6e 2d 31 5d 29 00 20 20 20 20 | l^(r*n-tablel[m-1][0][n-1])..... |
| afa0 | 00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 5e 28 72 2a 6e 2d 74 61 62 6c 65 | .............return.l^(r*n-table |
| afc0 | 6c 5b 2d 31 5d 5b 30 5d 5b 6e 2d 31 5d 29 00 20 20 20 20 20 20 20 20 65 6c 73 65 3a 00 20 20 20 | l[-1][0][n-1]).........else:.... |
| afe0 | 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 5e 74 61 62 6c 65 6c 5b 2d 31 5d 5b 31 5d 00 | .........return.l^tablel[-1][1]. |
| b000 | 61 64 00 00 04 00 00 00 9c 01 00 00 00 10 00 00 5f 00 00 00 00 00 00 00 d9 0f 00 00 95 0f 00 00 | ad.............._............... |
| b020 | 5b 0f 00 00 29 0f 00 00 0e 0f 00 00 0d 0f 00 00 d6 0e 00 00 ad 0e 00 00 92 0e 00 00 91 0e 00 00 | [...)........................... |
| b040 | 7d 0e 00 00 3c 0e 00 00 3b 0e 00 00 00 0e 00 00 cd 0d 00 00 a0 0d 00 00 58 0d 00 00 23 0d 00 00 | }...<...;...............X...#... |
| b060 | f9 0c 00 00 cb 0c 00 00 a7 0c 00 00 83 0c 00 00 5f 0c 00 00 13 0c 00 00 e1 0b 00 00 9f 0b 00 00 | ................_............... |
| b080 | 9e 0b 00 00 75 0b 00 00 4c 0b 00 00 32 0b 00 00 0c 0b 00 00 f0 0a 00 00 a3 0a 00 00 79 0a 00 00 | ....u...L...2...............y... |
| b0a0 | 5a 0a 00 00 59 0a 00 00 16 0a 00 00 15 0a 00 00 06 0a 00 00 e5 09 00 00 a7 09 00 00 87 09 00 00 | Z...Y........................... |
| b0c0 | 78 09 00 00 6e 09 00 00 5b 09 00 00 5a 09 00 00 0c 09 00 00 bf 08 00 00 9d 08 00 00 9c 08 00 00 | x...n...[...Z................... |
| b0e0 | 4d 08 00 00 ff 07 00 00 c5 07 00 00 77 07 00 00 66 07 00 00 46 07 00 00 45 07 00 00 01 07 00 00 | M...........w...f...F...E....... |
| b100 | 00 07 00 00 c5 06 00 00 a3 06 00 00 7d 06 00 00 59 06 00 00 2d 06 00 00 2c 06 00 00 1a 06 00 00 | ............}...Y...-...,....... |
| b120 | 19 06 00 00 cc 05 00 00 87 05 00 00 37 05 00 00 18 05 00 00 f9 04 00 00 f8 04 00 00 b4 04 00 00 | ............7................... |
| b140 | af 04 00 00 74 04 00 00 2e 04 00 00 0c 04 00 00 e6 03 00 00 ca 03 00 00 ae 03 00 00 62 03 00 00 | ....t.......................b... |
| b160 | 14 03 00 00 d1 02 00 00 a4 02 00 00 5c 02 00 00 33 02 00 00 2e 02 00 00 1c 02 00 00 1b 02 00 00 | ............\...3............... |
| b180 | fc 01 00 00 fb 01 00 00 b7 01 00 00 b2 01 00 00 9c 01 00 00 00 00 00 00 00 00 00 00 20 20 20 20 | ................................ |
| b1a0 | 70 72 69 6e 74 20 22 4d 5f 30 20 3d 22 2c 20 4d 30 00 20 20 20 20 00 20 20 20 20 28 20 28 20 72 | print."M_0.=",.M0..........(.(.r |
| b1c0 | 2c 20 74 6f 72 73 69 6f 6e 20 29 2c 20 28 20 4d 30 2c 20 64 69 76 73 5f 4d 30 20 29 2c 20 28 20 | ,.torsion.),.(.M0,.divs_M0.),.(. |
| b1e0 | 4e 30 2c 20 64 69 76 73 5f 4e 30 20 29 2c 20 46 54 20 29 20 3d 20 64 61 74 61 00 00 64 65 66 20 | N0,.divs_N0.),.FT.).=.data..def. |
| b200 | 70 72 69 6e 74 5f 74 6f 74 61 6c 5f 74 61 62 6c 65 28 20 64 61 74 61 20 29 3a 00 00 20 20 20 20 | print_total_table(.data.):...... |
| b220 | 72 65 74 75 72 6e 20 6e 65 77 5f 46 54 00 20 20 20 20 00 20 20 20 20 20 20 20 20 20 20 20 20 6e | return.new_FT..................n |
| b240 | 65 77 5f 46 54 5b 69 5d 5b 6a 5d 20 3d 20 65 78 70 5f 64 65 67 20 2f 20 64 65 67 00 20 20 20 20 | ew_FT[i][j].=.exp_deg./.deg..... |
| b260 | 20 20 20 20 20 20 20 20 64 65 67 20 3d 20 6b 75 6d 6d 65 72 5f 64 65 67 72 65 65 5f 66 72 6f 6d | ........deg.=.kummer_degree_from |
| b280 | 5f 74 6f 74 61 6c 5f 74 61 62 6c 65 28 20 32 2a 64 4d 2c 20 64 4e 2c 20 6e 65 77 5f 64 61 74 61 | _total_table(.2*dM,.dN,.new_data |
| b2a0 | 20 29 20 00 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 5f 64 65 67 20 3d 20 65 75 6c 65 72 5f | .)..............exp_deg.=.euler_ |
| b2c0 | 70 68 69 28 32 2a 64 4d 29 20 2a 20 64 4e 5e 72 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 69 | phi(2*dM).*.dN^r.............#.i |
| b2e0 | 74 20 69 73 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 79 20 69 6e 20 74 68 65 6f 72 79 20 74 6f 20 | t.is.not.necessary.in.theory.to. |
| b300 | 63 6f 6d 70 75 74 65 20 74 68 65 20 64 65 67 72 65 65 2e 00 20 20 20 20 20 20 20 20 20 20 20 20 | compute.the.degree.............. |
| b320 | 23 20 74 6f 72 73 69 6f 6e 2d 66 72 65 65 20 63 61 73 65 2e 20 49 74 20 69 73 20 65 61 73 69 65 | #.torsion-free.case..It.is.easie |
| b340 | 72 20 74 6f 20 77 72 69 74 65 20 69 74 20 6c 69 6b 65 20 74 68 69 73 2c 20 61 6c 74 68 6f 75 67 | r.to.write.it.like.this,.althoug |
| b360 | 68 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6c 69 | h.............#.The.following.li |
| b380 | 6e 65 73 20 6a 75 73 74 20 63 6f 70 79 20 74 68 65 20 66 61 69 6c 75 72 65 20 66 72 6f 6d 20 28 | nes.just.copy.the.failure.from.( |
| b3a0 | 32 4d 2c 4e 29 20 69 6e 20 74 68 65 20 00 20 20 20 20 20 20 20 20 20 20 20 20 64 4d 20 3d 20 64 | 2M,N).in.the..............dM.=.d |
| b3c0 | 69 76 73 5f 4d 30 5b 6a 5d 00 20 20 20 20 20 20 20 20 20 20 20 20 64 4e 20 3d 20 64 69 76 73 5f | ivs_M0[j].............dN.=.divs_ |
| b3e0 | 4e 30 5b 69 5d 00 20 20 20 20 20 20 20 20 66 6f 72 20 6a 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e | N0[i].........for.j.in.range(len |
| b400 | 28 64 69 76 73 5f 4d 30 29 29 3a 00 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c | (divs_M0)):.....for.i.in.range(l |
| b420 | 65 6e 28 64 69 76 73 5f 4e 30 29 29 3a 00 20 20 20 20 6e 65 77 5f 64 61 74 61 20 3d 20 28 20 28 | en(divs_N0)):.....new_data.=.(.( |
| b440 | 20 72 2c 20 46 61 6c 73 65 20 29 2c 20 28 20 4d 30 2c 20 64 69 76 73 5f 4d 30 20 29 2c 20 28 20 | .r,.False.),.(.M0,.divs_M0.),.(. |
| b460 | 4e 30 2c 20 64 69 76 73 5f 4e 30 20 29 2c 20 46 54 20 29 00 20 20 20 20 6e 65 77 5f 46 54 20 3d | N0,.divs_N0.),.FT.).....new_FT.= |
| b480 | 20 5b 20 5b 20 31 20 66 6f 72 20 64 31 20 69 6e 20 64 69 76 73 5f 4d 30 20 5d 20 66 6f 72 20 64 | .[.[.1.for.d1.in.divs_M0.].for.d |
| b4a0 | 32 20 69 6e 20 64 69 76 73 5f 4e 30 20 5d 00 20 20 20 20 00 20 20 20 20 28 20 28 20 72 2c 20 74 | 2.in.divs_N0.]..........(.(.r,.t |
| b4c0 | 6f 72 73 69 6f 6e 20 29 2c 20 28 20 4d 30 2c 20 64 69 76 73 5f 4d 30 20 29 2c 20 28 20 4e 30 2c | orsion.),.(.M0,.divs_M0.),.(.N0, |
| b4e0 | 20 64 69 76 73 5f 4e 30 20 29 2c 20 46 54 20 29 20 3d 20 64 61 74 61 00 00 64 65 66 20 74 6f 72 | .divs_N0.),.FT.).=.data..def.tor |
| b500 | 73 69 6f 6e 5f 74 61 62 6c 65 5f 6f 64 64 28 20 64 61 74 61 20 29 3a 00 23 20 4e 20 69 73 20 65 | sion_table_odd(.data.):.#.N.is.e |
| b520 | 76 65 6e 20 61 6e 64 20 65 3d 30 20 6f 74 68 65 72 77 69 73 65 2e 00 23 20 49 6e 20 6f 74 68 65 | ven.and.e=0.otherwise..#.In.othe |
| b540 | 72 20 77 6f 72 64 73 2c 20 74 68 65 20 65 78 70 65 63 74 65 64 20 64 65 67 72 65 65 20 28 6f 76 | r.words,.the.expected.degree.(ov |
| b560 | 65 72 20 51 29 20 32 5e 65 20 2a 20 70 68 69 28 4d 29 20 2a 20 4e 5e 72 2c 20 77 68 65 72 65 20 | er.Q).2^e.*.phi(M).*.N^r,.where. |
| b580 | 65 3d 31 20 69 66 00 23 20 74 68 65 20 65 6e 74 72 79 20 61 74 20 28 4d 2c 4e 29 20 69 73 20 74 | e=1.if.#.the.entry.at.(M,N).is.t |
| b5a0 | 61 6b 65 6e 20 66 72 6f 6d 20 74 68 65 20 74 6f 72 73 69 6f 6e 2d 66 72 65 65 20 65 6e 74 72 79 | aken.from.the.torsion-free.entry |
| b5c0 | 20 61 74 20 28 32 4d 2c 4e 29 2e 00 23 20 4d 61 6b 65 73 20 74 68 65 20 66 61 69 6c 75 72 65 20 | .at.(2M,N)..#.Makes.the.failure. |
| b5e0 | 74 61 62 6c 65 20 66 6f 72 20 74 68 65 20 74 6f 72 73 69 6f 6e 20 63 61 73 65 20 77 68 65 6e 20 | table.for.the.torsion.case.when. |
| b600 | 4d 2f 4e 20 69 73 20 6f 64 64 2e 20 49 6e 20 74 68 69 73 20 63 61 73 65 00 00 20 20 20 20 72 65 | M/N.is.odd..In.this.case......re |
| b620 | 74 75 72 6e 20 6e 65 77 5f 46 54 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 | turn.new_FT..................new |
| b640 | 5f 46 54 5b 69 5d 5b 6a 5d 20 3d 20 32 20 2a 20 46 54 5b 69 5d 5b 6a 5d 00 20 20 20 20 20 20 20 | _FT[i][j].=.2.*.FT[i][j]........ |
| b660 | 20 20 20 20 20 69 66 20 64 69 76 73 5f 4e 30 5b 69 5d 20 25 20 32 20 3d 3d 20 30 3a 00 20 20 20 | .....if.divs_N0[i].%.2.==.0:.... |
| b680 | 20 20 20 20 20 66 6f 72 20 6a 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 69 76 73 5f 4d 30 29 | .....for.j.in.range(len(divs_M0) |
| b6a0 | 29 3a 00 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 69 76 73 5f 4e | ):.....for.i.in.range(len(divs_N |
| b6c0 | 30 29 29 3a 00 20 20 20 20 6e 65 77 5f 46 54 20 3d 20 5b 20 5b 20 31 20 66 6f 72 20 64 31 20 69 | 0)):.....new_FT.=.[.[.1.for.d1.i |
| b6e0 | 6e 20 64 69 76 73 5f 4d 30 20 5d 20 66 6f 72 20 64 32 20 69 6e 20 64 69 76 73 5f 4e 30 20 5d 00 | n.divs_M0.].for.d2.in.divs_N0.]. |
| b700 | 00 20 20 20 20 28 20 28 20 72 2c 20 74 6f 72 73 69 6f 6e 20 29 2c 20 28 20 4d 30 2c 20 64 69 76 | .....(.(.r,.torsion.),.(.M0,.div |
| b720 | 73 5f 4d 30 20 29 2c 20 28 20 4e 30 2c 20 64 69 76 73 5f 4e 30 20 29 2c 20 46 54 20 29 20 3d 20 | s_M0.),.(.N0,.divs_N0.),.FT.).=. |
| b740 | 64 61 74 61 00 00 64 65 66 20 74 6f 72 73 69 6f 6e 5f 74 61 62 6c 65 5f 65 76 65 6e 28 20 64 61 | data..def.torsion_table_even(.da |
| b760 | 74 61 20 29 3a 00 23 20 65 3d 30 20 6f 74 68 65 72 77 69 73 65 2e 00 23 20 54 68 65 20 65 78 70 | ta.):.#.e=0.otherwise..#.The.exp |
| b780 | 65 63 74 65 64 20 64 65 67 72 65 65 20 28 6f 76 65 72 20 51 29 20 32 5e 65 20 2a 20 70 68 69 28 | ected.degree.(over.Q).2^e.*.phi( |
| b7a0 | 4d 29 20 2a 20 4e 5e 72 2c 20 77 68 65 72 65 20 65 3d 31 20 69 66 20 4e 20 69 73 20 65 76 65 6e | M).*.N^r,.where.e=1.if.N.is.even |
| b7c0 | 20 61 6e 64 00 23 20 6f 66 20 67 63 64 28 4e 2c 4e 30 29 20 29 20 69 73 20 65 76 65 6e 2c 20 61 | .and.#.of.gcd(N,N0).).is.even,.a |
| b7e0 | 6e 64 20 69 73 20 6b 65 70 74 20 74 68 65 20 73 61 6d 65 20 6f 74 68 65 72 77 69 73 65 2e 00 23 | nd.is.kept.the.same.otherwise..# |
| b800 | 20 61 6e 20 65 6e 74 72 79 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 69 73 20 64 6f 75 62 6c 65 | .an.entry.of.the.table.is.double |
| b820 | 64 20 69 66 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 76 61 6c 75 65 20 6f 66 20 | d.if.the.corresponding.value.of. |
| b840 | 4e 20 28 61 63 74 75 61 6c 6c 79 2c 00 23 20 4d 61 6b 65 73 20 74 68 65 20 66 61 69 6c 75 72 65 | N.(actually,.#.Makes.the.failure |
| b860 | 20 74 61 62 6c 65 20 66 6f 72 20 74 68 65 20 74 6f 72 73 69 6f 6e 20 63 61 73 65 20 77 68 65 6e | .table.for.the.torsion.case.when |
| b880 | 20 4d 2f 4e 20 69 73 20 65 76 65 6e 2e 20 49 6e 20 74 68 69 73 20 63 61 73 65 2c 00 00 23 20 69 | .M/N.is.even..In.this.case,..#.i |
| b8a0 | 66 20 4e 20 69 73 20 65 76 65 6e 20 61 6e 64 20 65 3d 30 20 6f 74 68 65 72 77 69 73 65 2e 00 23 | f.N.is.even.and.e=0.otherwise..# |
| b8c0 | 20 61 73 20 74 68 65 20 72 61 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 32 5e 65 4e 5e 72 20 61 6e | .as.the.ration.between.2^eN^r.an |
| b8e0 | 64 20 74 68 65 20 64 65 67 72 65 65 20 6f 66 20 51 5f 7b 4d 2c 4e 7d 20 6f 76 65 72 20 51 5f 4d | d.the.degree.of.Q_{M,N}.over.Q_M |
| b900 | 2c 20 77 68 65 72 65 20 65 3d 31 00 23 20 46 6f 72 20 74 68 65 20 74 6f 72 73 69 6f 6e 20 74 61 | ,.where.e=1.#.For.the.torsion.ta |
| b920 | 62 6c 65 73 2c 20 72 65 63 61 6c 6c 20 74 68 61 74 20 77 68 65 6e 20 2d 31 20 69 73 20 69 6e 20 | bles,.recall.that.when.-1.is.in. |
| b940 | 47 2c 20 74 68 65 20 66 61 69 6c 75 72 65 20 69 73 20 64 65 66 69 6e 65 64 00 00 20 20 20 20 20 | G,.the.failure.is.defined....... |
| b960 | 20 20 20 72 65 74 75 72 6e 20 72 65 74 00 20 20 20 20 65 6c 73 65 3a 00 20 20 20 20 20 20 20 20 | ...return.ret.....else:......... |
| b980 | 72 65 74 75 72 6e 00 20 20 20 20 20 20 20 20 23 70 72 69 6e 74 5f 63 61 73 65 5f 6c 69 73 74 28 | return.........#print_case_list( |
| b9a0 | 20 72 65 74 20 29 00 20 20 20 20 20 20 20 20 23 20 55 6e 63 6f 6d 6d 65 6e 74 20 66 6f 6c 6c 6f | .ret.).........#.Uncomment.follo |
| b9c0 | 77 69 6e 67 20 6c 69 6e 65 20 66 6f 72 20 63 61 73 65 20 6c 69 73 74 20 64 65 73 63 72 69 70 74 | wing.line.for.case.list.descript |
| b9e0 | 69 6f 6e 2e 00 20 20 20 20 20 20 20 20 70 72 69 6e 74 5f 74 6f 74 61 6c 5f 74 61 62 6c 65 28 20 | ion..........print_total_table(. |
| ba00 | 72 65 74 20 29 00 20 20 20 20 69 66 20 6f 75 74 70 75 74 3a 00 00 20 20 20 20 72 65 74 20 3d 20 | ret.).....if.output:......ret.=. |
| ba20 | 28 20 28 20 72 2c 20 74 6f 72 73 69 6f 6e 20 29 2c 20 28 20 4d 30 2c 20 64 69 76 73 5f 4d 30 20 | (.(.r,.torsion.),.(.M0,.divs_M0. |
| ba40 | 29 2c 20 28 20 4e 30 2c 20 64 69 76 73 5f 4e 30 20 29 2c 20 46 54 20 29 00 00 20 20 20 20 20 20 | ),.(.N0,.divs_N0.),.FT.)........ |
| ba60 | 20 20 20 20 20 20 20 20 20 20 46 54 5b 6a 5d 5b 68 5d 20 2a 3d 20 66 6c 00 20 20 20 20 20 20 20 | ..........FT[j][h].*=.fl........ |
| ba80 | 20 20 20 20 20 66 6f 72 20 68 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 69 76 73 5f 4d 30 29 | .....for.h.in.range(len(divs_M0) |
| baa0 | 29 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 66 6c 20 3d 20 6c 5f 61 64 69 63 5f 66 61 69 6c 75 | ):.............fl.=.l_adic_failu |
| bac0 | 72 65 5f 66 72 6f 6d 5f 64 61 74 61 28 42 2c 6c 2c 6c 5f 61 64 69 63 5f 66 61 69 6c 75 72 65 5f | re_from_data(B,l,l_adic_failure_ |
| bae0 | 74 61 62 6c 65 5b 69 5d 2c 64 4e 2c 64 4e 29 00 20 20 20 20 20 20 20 20 20 20 20 20 64 4e 20 3d | table[i],dN,dN).............dN.= |
| bb00 | 20 64 69 76 73 5f 4e 30 5b 6a 5d 00 20 20 20 20 20 20 20 20 66 6f 72 20 6a 20 69 6e 20 72 61 6e | .divs_N0[j].........for.j.in.ran |
| bb20 | 67 65 28 6c 65 6e 28 64 69 76 73 5f 4e 30 29 29 3a 00 20 20 20 20 20 20 20 20 6c 20 3d 20 62 61 | ge(len(divs_N0)):.........l.=.ba |
| bb40 | 64 5f 70 72 69 6d 65 73 5b 69 5d 00 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 20 | d_primes[i].....for.i.in.range(. |
| bb60 | 6c 65 6e 28 20 62 61 64 5f 70 72 69 6d 65 73 20 29 20 29 3a 00 20 20 20 20 23 20 41 64 64 69 6e | len(.bad_primes.).):.....#.Addin |
| bb80 | 67 20 6c 2d 61 64 69 63 20 66 61 69 6c 75 72 65 20 74 6f 20 74 68 65 20 74 61 62 6c 65 00 00 20 | g.l-adic.failure.to.the.table... |
| bba0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 | ...............................F |
| bbc0 | 54 5b 6a 5d 5b 6c 5d 20 3d 20 6c 63 6d 28 20 46 54 5b 6a 5d 5b 6c 5d 2c 20 70 70 5b 31 5d 20 29 | T[j][l].=.lcm(.FT[j][l],.pp[1].) |
| bbe0 | 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 | .............................if. |
| bc00 | 64 4d 20 25 20 70 70 5b 30 5d 20 3d 3d 20 30 3a 20 20 00 20 20 20 20 20 20 20 20 20 20 20 20 20 | dM.%.pp[0].==.0:................ |
| bc20 | 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 4e 25 28 32 5e 28 69 2b 31 29 29 21 3d 30 20 6f 72 | ...........if.dN%(2^(i+1))!=0.or |
| bc40 | 20 69 3d 3d 6c 65 6e 28 61 64 65 6c 69 63 5f 66 61 69 6c 75 72 65 5f 74 61 62 6c 65 29 3a 00 20 | .i==len(adelic_failure_table):.. |
| bc60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 4e 25 28 32 5e 69 29 3d 3d | ...................if.dN%(2^i)== |
| bc80 | 30 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 4e 20 3d 20 64 69 76 73 | 0:.....................dN.=.divs |
| bca0 | 5f 4e 30 5b 6a 5d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 4d 20 3d 20 | _N0[j].....................dM.=. |
| bcc0 | 64 69 76 73 5f 4d 30 5b 6c 5d 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6a | divs_M0[l].................for.j |
| bce0 | 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 69 76 73 5f 4e 30 29 29 3a 00 20 20 20 20 20 20 20 | .in.range(len(divs_N0)):........ |
| bd00 | 20 20 20 20 20 66 6f 72 20 6c 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 69 76 73 5f 4d 30 29 | .....for.l.in.range(len(divs_M0) |
| bd20 | 29 3a 00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 66 61 69 6c 75 72 65 20 28 74 68 65 20 74 61 | ):.............#.failure.(the.ta |
| bd40 | 62 6c 65 20 69 73 20 6e 6f 74 20 22 63 6f 6d 70 6c 65 74 65 22 29 2e 00 20 20 20 20 20 20 20 20 | ble.is.not."complete").......... |
| bd60 | 20 20 20 20 23 20 52 75 6e 73 20 74 68 72 6f 75 67 68 20 61 6c 6c 20 64 69 76 69 73 6f 72 73 20 | ....#.Runs.through.all.divisors. |
| bd80 | 6f 66 20 4d 30 20 61 6e 64 20 4e 30 20 74 68 61 74 20 6d 61 79 20 68 61 76 65 20 74 68 69 73 00 | of.M0.and.N0.that.may.have.this. |
| bda0 | 20 20 20 20 20 20 20 20 66 6f 72 20 70 70 20 69 6e 20 61 64 65 6c 69 63 5f 66 61 69 6c 75 72 65 | ........for.pp.in.adelic_failure |
| bdc0 | 5f 74 61 62 6c 65 5b 69 2d 31 5d 3a 00 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 | _table[i-1]:.....for.i.in.range( |
| bde0 | 31 2c 6c 65 6e 28 61 64 65 6c 69 63 5f 66 61 69 6c 75 72 65 5f 74 61 62 6c 65 29 2b 31 29 3a 00 | 1,len(adelic_failure_table)+1):. |
| be00 | 20 20 20 20 23 20 54 61 6b 65 73 20 74 68 65 20 61 64 65 6c 69 63 20 66 61 69 6c 75 72 65 20 66 | ....#.Takes.the.adelic.failure.f |
| be20 | 72 6f 6d 20 74 68 65 20 74 68 65 20 72 65 6c 61 74 69 76 65 20 74 61 62 6c 65 00 00 20 20 20 20 | rom.the.the.relative.table...... |
| be40 | 46 54 20 3d 20 5b 20 5b 20 31 20 66 6f 72 20 64 31 20 69 6e 20 64 69 76 69 73 6f 72 73 28 4d 30 | FT.=.[.[.1.for.d1.in.divisors(M0 |
| be60 | 29 20 5d 20 66 6f 72 20 64 32 20 69 6e 20 64 69 76 69 73 6f 72 73 28 4e 30 29 20 5d 00 20 20 20 | ).].for.d2.in.divisors(N0).].... |
| be80 | 20 23 20 46 61 69 6c 75 72 65 20 54 61 62 6c 65 00 00 20 20 20 20 64 69 76 73 5f 4d 30 20 3d 20 | .#.Failure.Table......divs_M0.=. |
| bea0 | 64 69 76 69 73 6f 72 73 28 4d 30 29 00 20 20 20 20 4d 30 20 3d 20 61 64 65 6c 69 63 5f 66 61 69 | divisors(M0).....M0.=.adelic_fai |
| bec0 | 6c 75 72 65 5f 74 61 62 6c 65 5b 2d 31 5d 5b 2d 31 5d 5b 30 5d 00 20 20 20 20 23 20 67 72 65 61 | lure_table[-1][-1][0].....#.grea |
| bee0 | 74 65 73 74 20 4d 20 61 70 70 65 61 72 69 6e 67 20 69 6e 20 74 68 65 20 61 64 65 6c 69 63 20 66 | test.M.appearing.in.the.adelic.f |
| bf00 | 61 69 6c 75 72 65 20 74 61 62 6c 65 00 00 20 20 20 20 64 69 76 73 5f 4e 30 20 3d 20 64 69 76 69 | ailure.table......divs_N0.=.divi |
| bf20 | 73 6f 72 73 28 4e 30 29 00 20 20 20 20 4e 30 20 3d 20 6c 63 6d 28 20 4e 30 2c 20 32 5e 6c 65 6e | sors(N0).....N0.=.lcm(.N0,.2^len |
| bf40 | 28 20 61 64 65 6c 69 63 5f 66 61 69 6c 75 72 65 5f 74 61 62 6c 65 20 29 20 29 00 20 20 20 20 23 | (.adelic_failure_table.).).....# |
| bf60 | 20 45 78 74 72 61 20 66 61 63 74 6f 72 73 20 6f 66 20 32 20 6d 61 79 20 63 6f 6d 65 20 66 72 6f | .Extra.factors.of.2.may.come.fro |
| bf80 | 6d 20 74 68 65 20 61 64 65 6c 69 63 20 66 61 69 6c 75 72 65 00 20 20 20 20 20 20 20 20 4e 30 20 | m.the.adelic.failure.........N0. |
| bfa0 | 2a 3d 20 62 61 64 5f 70 72 69 6d 65 73 5b 69 5d 20 5e 20 6c 65 6e 28 20 6c 5f 61 64 69 63 5f 66 | *=.bad_primes[i].^.len(.l_adic_f |
| bfc0 | 61 69 6c 75 72 65 5f 74 61 62 6c 65 5b 69 5d 5b 2d 31 5d 5b 30 5d 20 29 00 20 20 20 20 66 6f 72 | ailure_table[i][-1][0].).....for |
| bfe0 | 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 20 62 61 64 5f 70 72 69 6d 65 73 20 29 29 3a 00 | .i.in.range(len(.bad_primes.)):. |
| c000 | 61 64 00 00 be 08 00 00 96 09 00 00 00 10 00 00 2f 00 00 00 00 00 00 00 ce 0f 00 00 af 0f 00 00 | ad............../............... |
| c020 | 80 0f 00 00 66 0f 00 00 42 0f 00 00 21 0f 00 00 d4 0e 00 00 90 0e 00 00 78 0e 00 00 59 0e 00 00 | ....f...B...!...........x...Y... |
| c040 | 3e 0e 00 00 1f 0e 00 00 0c 0e 00 00 ec 0d 00 00 ea 0d 00 00 a8 0d 00 00 93 0d 00 00 69 0d 00 00 | >...........................i... |
| c060 | 3a 0d 00 00 16 0d 00 00 fe 0c 00 00 d4 0c 00 00 b7 0c 00 00 98 0c 00 00 7d 0c 00 00 7b 0c 00 00 | :.......................}...{... |
| c080 | 2c 0c 00 00 dd 0b 00 00 aa 0b 00 00 90 0b 00 00 8e 0b 00 00 77 0b 00 00 60 0b 00 00 3b 0b 00 00 | ,...................w...`...;... |
| c0a0 | 07 0b 00 00 e6 0a 00 00 c8 0a 00 00 c6 0a 00 00 75 0a 00 00 73 0a 00 00 56 0a 00 00 31 0a 00 00 | ................u...s...V...1... |
| c0c0 | f0 09 00 00 e6 09 00 00 c3 09 00 00 c1 09 00 00 96 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c0e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c1a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c1c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c1e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c2a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c2c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c2e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c3a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c3c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c3e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c4a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c4c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c4e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c5a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c5c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c5e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c6a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c6c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c6e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c7c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c7e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c8a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c8c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c8e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 23 20 20 20 20 20 20 20 20 20 | ......................#......... |
| c9a0 | 20 20 20 23 20 43 6f 6d 70 75 74 65 20 6e 65 77 20 42 2c 20 64 20 61 6e 64 20 73 6f 20 6f 6e 2e | ...#.Compute.new.B,.d.and.so.on. |
| c9c0 | 00 23 00 23 20 20 20 20 20 20 20 20 20 20 20 20 62 5b 6d 61 78 69 5d 20 3d 20 6e 65 77 5f 65 6c | .#.#............b[maxi].=.new_el |
| c9e0 | 65 6d 65 6e 74 00 23 20 20 20 20 20 20 20 20 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ement.#.........#............... |
| ca00 | 20 6e 65 77 5f 65 6c 65 6d 65 6e 74 20 2a 3d 20 62 5b 69 5d 5e 28 20 78 5b 69 5d 20 2a 20 6c 5e | .new_element.*=.b[i]^(.x[i].*.l^ |
| ca20 | 28 64 5b 6d 61 78 69 5d 2d 64 5b 69 5d 29 20 29 00 23 20 20 20 20 20 20 20 20 20 20 20 20 66 6f | (d[maxi]-d[i]).).#............fo |
| ca40 | 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 29 29 3a 00 23 20 20 20 20 20 20 20 20 20 | r.i.in.range(len(d)):.#......... |
| ca60 | 20 20 20 6e 65 77 5f 65 6c 65 6d 65 6e 74 20 3d 20 31 00 23 00 23 20 20 20 20 20 20 20 20 20 20 | ...new_element.=.1.#.#.......... |
| ca80 | 20 20 78 20 3d 20 5b 28 61 2f 63 6f 65 66 66 73 5b 6d 61 78 69 5d 29 2e 6c 69 66 74 28 29 20 66 | ..x.=.[(a/coeffs[maxi]).lift().f |
| caa0 | 6f 72 20 61 20 69 6e 20 63 6f 65 66 66 73 5d 20 23 20 4e 6f 77 20 61 20 76 65 63 74 6f 72 20 6f | or.a.in.coeffs].#.Now.a.vector.o |
| cac0 | 66 20 69 6e 74 00 23 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 | f.int.#.#....................max |
| cae0 | 69 20 3d 20 69 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 64 20 | i.=.i.#....................maxd. |
| cb00 | 3d 20 64 5b 69 5d 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 5b 69 5d 20 | =.d[i].#................if.d[i]. |
| cb20 | 3e 20 6d 61 78 64 20 61 6e 64 20 63 6f 65 66 66 73 5b 69 5d 20 21 3d 20 30 3a 00 23 20 20 20 20 | >.maxd.and.coeffs[i].!=.0:.#.... |
| cb40 | 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 64 29 29 3a 00 | ........for.i.in.range(len(d)):. |
| cb60 | 23 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 64 20 3d 20 2d 31 00 23 20 20 20 20 20 20 20 20 | #............maxd.=.-1.#........ |
| cb80 | 20 20 20 20 6d 61 78 69 20 3d 20 2d 31 00 23 00 23 20 20 20 20 20 20 20 20 69 66 20 63 6f 65 66 | ....maxi.=.-1.#.#........if.coef |
| cba0 | 66 73 20 21 3d 20 5b 5d 3a 00 23 20 20 20 20 20 20 20 20 63 6f 65 66 66 73 20 3d 20 66 69 6e 64 | fs.!=.[]:.#........coeffs.=.find |
| cbc0 | 5f 63 6f 6d 62 69 6e 61 74 69 6f 6e 28 20 6d 61 74 72 69 78 28 4d 29 2c 20 6c 20 29 00 23 20 20 | _combination(.matrix(M),.l.).#.. |
| cbe0 | 20 20 20 20 20 20 23 20 6f 6e 63 65 29 20 74 6f 20 70 72 6f 64 75 63 65 20 61 20 6e 65 77 20 62 | ......#.once).to.produce.a.new.b |
| cc00 | 61 73 69 73 2e 20 54 68 65 20 6e 65 77 20 62 61 73 69 73 20 68 61 73 20 6d 61 78 69 6d 61 6c 20 | asis..The.new.basis.has.maximal. |
| cc20 | 70 61 72 61 6d 65 74 65 72 73 2e 00 23 20 20 20 20 20 20 20 20 23 20 49 66 20 74 68 65 20 42 69 | parameters..#........#.If.the.Bi |
| cc40 | 27 73 20 61 72 65 20 6e 6f 74 20 73 74 72 6f 6e 67 6c 79 20 69 6e 64 65 70 65 6e 64 65 6e 74 2c | 's.are.not.strongly.independent, |
| cc60 | 20 61 70 70 6c 79 20 74 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 28 6f 6e 6c 79 00 23 00 23 20 20 | .apply.the.algorithm.(only.#.#.. |
| cc80 | 20 20 20 20 20 20 20 20 20 20 4d 2e 61 70 70 65 6e 64 28 72 6f 77 29 00 23 20 20 20 20 20 20 20 | ..........M.append(row).#....... |
| cca0 | 20 20 20 20 20 20 20 20 20 72 6f 77 5b 69 5d 20 3d 20 65 65 2d 31 00 23 20 20 20 20 20 20 20 20 | .........row[i].=.ee-1.#........ |
| ccc0 | 20 20 20 20 20 20 20 20 20 20 20 20 65 65 20 2b 3d 20 31 00 23 20 20 20 20 20 20 20 20 20 20 20 | ............ee.+=.1.#........... |
| cce0 | 20 20 20 20 20 77 68 69 6c 65 20 28 49 5e 65 65 29 2e 64 69 76 69 64 65 73 28 67 29 3a 00 23 20 | .....while.(I^ee).divides(g):.#. |
| cd00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 65 20 3d 20 31 00 23 20 20 20 20 20 20 20 20 20 | ...............ee.=.1.#......... |
| cd20 | 20 20 20 20 20 20 20 49 20 3d 20 69 64 65 61 6c 73 5f 6c 69 73 74 5b 69 5d 00 23 20 20 20 20 20 | .......I.=.ideals_list[i].#..... |
| cd40 | 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6c 65 6e 28 69 64 65 61 6c 73 | .......for.i.in.range(len(ideals |
| cd60 | 5f 6c 69 73 74 29 29 3a 00 23 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 20 3d 20 5b 30 5d 20 | _list)):.#............row.=.[0]. |
| cd80 | 2a 20 6c 65 6e 28 69 64 65 61 6c 73 5f 6c 69 73 74 29 00 23 20 20 20 20 20 20 20 20 66 6f 72 20 | *.len(ideals_list).#........for. |
| cda0 | 67 20 69 6e 20 42 3a 00 23 20 20 20 20 20 20 20 20 23 20 4d 61 6b 65 20 74 68 65 20 65 78 70 6f | g.in.B:.#........#.Make.the.expo |
| cdc0 | 6e 65 6e 74 20 6d 61 74 72 69 78 20 4d 20 28 66 6f 72 20 6e 6f 77 20 61 73 20 61 20 6c 69 73 74 | nent.matrix.M.(for.now.as.a.list |
| cde0 | 20 6f 66 20 72 6f 77 73 29 00 23 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 2e 61 | .of.rows).#.#................h.a |
| ce00 | 70 70 65 6e 64 28 20 32 20 29 20 00 23 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 00 23 | ppend(.2.)..#............else:.# |
| ce20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 2e 61 70 70 65 6e 64 28 20 31 20 29 00 23 20 | ................h.append(.1.).#. |
| ce40 | 20 20 20 20 20 20 20 20 20 20 20 65 6c 69 66 20 75 20 3d 3d 20 2d 31 3a 00 23 20 20 20 20 20 20 | ...........elif.u.==.-1:.#...... |
| ce60 | 20 20 20 20 20 20 20 20 20 20 68 2e 61 70 70 65 6e 64 28 20 30 20 29 00 23 20 20 20 20 20 20 20 | ..........h.append(.0.).#....... |
| ce80 | 20 20 20 20 20 69 66 20 75 20 3d 3d 20 31 3a 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .....if.u.==.1:.#............... |
| cea0 | 20 70 72 69 6e 74 20 22 67 3a 22 2c 20 67 2c 20 22 2c 20 42 67 3a 22 2c 20 42 67 2c 20 22 2c 20 | .print."g:",.g,.",.Bg:",.Bg,.",. |
| cec0 | 65 78 70 6f 6e 65 6e 74 3a 22 2c 20 6c 5e 64 5b 2d 31 5d 00 23 20 20 20 20 20 20 20 20 20 20 20 | exponent:",.l^d[-1].#........... |
| cee0 | 20 20 20 20 20 70 72 69 6e 74 20 22 45 72 72 6f 72 3a 20 67 20 69 73 20 6e 6f 74 20 74 68 65 20 | .....print."Error:.g.is.not.the. |
| cf00 | 72 69 67 68 74 20 70 6f 77 65 72 20 6f 66 20 74 68 65 20 63 6f 6d 70 75 74 65 64 20 42 67 2e 22 | right.power.of.the.computed.Bg." |
| cf20 | 00 23 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 75 2e 69 73 5f 75 6e 69 74 28 29 | .#............if.not.u.is_unit() |
| cf40 | 3a 00 23 20 20 20 20 20 20 20 20 20 20 20 20 75 20 3d 20 67 20 2f 20 28 42 67 5e 28 6c 5e 64 5b | :.#............u.=.g./.(Bg^(l^d[ |
| cf60 | 2d 31 5d 29 29 00 23 20 20 20 20 20 20 20 20 20 20 20 20 42 2e 61 70 70 65 6e 64 28 42 67 29 00 | -1])).#............B.append(Bg). |
| cf80 | 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 67 20 2a 3d 20 61 20 5e 20 28 65 78 70 73 | #................Bg.*=.a.^.(exps |
| cfa0 | 5b 6a 5d 2f 28 6c 5e 64 5b 2d 31 5d 29 29 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | [j]/(l^d[-1])).#................ |
| cfc0 | 20 20 20 20 20 20 20 20 62 72 65 61 6b 00 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ........break.#................. |
| cfe0 | 20 20 20 20 20 20 20 61 20 3d 20 69 72 72 65 64 75 63 69 62 6c 65 73 5f 6c 69 73 74 5b 69 5d 00 | .......a.=.irreducibles_list[i]. |