diff options
Diffstat (limited to '')
| -rw-r--r-- | kummer_degree.sage | 572 | ||||
| -rw-r--r-- | tex/README | 7 | ||||
| -rw-r--r-- | tex/af_code.aux | 11 | ||||
| -rw-r--r-- | tex/af_code.log | 764 | ||||
| -rw-r--r-- | tex/af_code.pdf | bin | 0 -> 212906 bytes | |||
| -rw-r--r-- | tex/af_code.synctex.gz | bin | 0 -> 37116 bytes | |||
| -rw-r--r-- | tex/af_code.tex | 474 | ||||
| -rw-r--r-- | tex/old/compute_degree.aux | 14 | ||||
| -rw-r--r-- | tex/old/compute_degree.log | 706 | ||||
| -rw-r--r-- | tex/old/compute_degree.pdf | bin | 0 -> 176578 bytes | |||
| -rw-r--r-- | tex/old/compute_degree.synctex.gz | bin | 0 -> 44626 bytes | |||
| -rw-r--r-- | tex/old/compute_degree.tex | 320 | ||||
| -rw-r--r-- | tex/preprint.pdf | bin | 0 -> 293067 bytes |
13 files changed, 2616 insertions, 252 deletions
diff --git a/kummer_degree.sage b/kummer_degree.sage index 161e8c9..3085efd 100644 --- a/kummer_degree.sage +++ b/kummer_degree.sage | |||
| @@ -1,16 +1,3 @@ | |||
| 1 | ############################################################################# | ||
| 2 | # This program allows one to compute the degree of certain field extensions # | ||
| 3 | # of the rational numbers. In particular, it can compute the degree over Q # | ||
| 4 | # of extensions of the form Q( sqrt[N](G), \zeta_M ), where: # | ||
| 5 | # - N and M are integers with N dividing M; # | ||
| 6 | # - G is a finitely generated subgroup of the multiplicative group of Q # | ||
| 7 | # - \zeta_M is a primitive M-th root of unity # | ||
| 8 | # The group G does not have to be given in a particular format. A finite # | ||
| 9 | # set of generators is sufficient. # | ||
| 10 | ############################################################################# | ||
| 11 | |||
| 12 | from sage.misc.cachefunc import CachedFunction | ||
| 13 | |||
| 14 | # Computes the "adelic Kummer failure", i.e. the degrees of the intersection | 1 | # Computes the "adelic Kummer failure", i.e. the degrees of the intersection |
| 15 | # of the the Kummer extension Q(\sqrt{2^n}{G}) with the M-th cyclotomic field | 2 | # of the the Kummer extension Q(\sqrt{2^n}{G}) with the M-th cyclotomic field |
| 16 | # over Q_{2^n}. | 3 | # over Q_{2^n}. |
| @@ -18,12 +5,12 @@ from sage.misc.cachefunc import CachedFunction | |||
| 18 | # Input: a good basis B for the torsion-free group G, organized as a list of | 5 | # Input: a good basis B for the torsion-free group G, organized as a list of |
| 19 | # lists, and a non negative integer d. They have to satisfy the following: | 6 | # lists, and a non negative integer d. They have to satisfy the following: |
| 20 | # 1. Each list B[i] contains all basis elements of 2-divisibility i. | 7 | # 1. Each list B[i] contains all basis elements of 2-divisibility i. |
| 21 | # 2. The basis given by B is 2-maximal, that is to say it satisfies Theorem | 8 | # 2. The basis given by B is 2-maximal, that is to say it satisfies Theorem 14 |
| 22 | # 14 of Debry-Perucca; i.e. each element of B[i] is, up to plus or minus | 9 | # of Debry-Perucca; i.e. each element of B[i] is, up to plus or minus 1, the |
| 23 | # 1, the 2^i-th power of a strongly 2-indivisible rational. | 10 | # 2^i-th power of a strongly 2-indivisible rational. |
| 24 | # 3. For i != d every element of B[i] is positive, and B[d][0] is the only | 11 | # 3. For i != d every element of B[i] is positive, and B[d][0] is the only |
| 25 | # negative element of B[d] (if d=-1, then there is no negative element). | 12 | # negative element of B[d] (if d=-1, then there is no negative element). |
| 26 | # 3'. Notice that the existence on negative elements in B[0] does not change | 13 | # 3'. Notice that the existence on negative elements in B[0] does not influence |
| 27 | # the correctness of the algorithm; in fact, the function adjust_sign | 14 | # the correctness of the algorithm; in fact, the function adjust_sign |
| 28 | # produces a basis that may have negative elements of divisibility 0, and | 15 | # produces a basis that may have negative elements of divisibility 0, and |
| 29 | # this basis is given as input for adelic_failure_gb. | 16 | # this basis is given as input for adelic_failure_gb. |
| @@ -32,9 +19,9 @@ from sage.misc.cachefunc import CachedFunction | |||
| 32 | # integer such that the intersection of Q(\sqrt{2^n}{G}) with Q_\infty is | 19 | # integer such that the intersection of Q(\sqrt{2^n}{G}) with Q_\infty is |
| 33 | # contained in Q_M0. | 20 | # contained in Q_M0. |
| 34 | # The table ad_fail has N rows, where N is defined below. | 21 | # The table ad_fail has N rows, where N is defined below. |
| 35 | # Each row R=ad_fail[i] contains a variable number of pairs (d,r), where d | 22 | # Each row R=ad_fail[i] contains a variable number of pairs (d,r), where d is a |
| 36 | # is a divisor of M0 and r is the degree of Q(\sqrt{2^{i+1}}{G}) \cap Q_d | 23 | # divisor of M0 and r is the degree of Q(\sqrt{2^{i+1}}{G}) \cap Q_d over |
| 37 | # over Q_{2^n}. | 24 | # Q_{2^n}. |
| 38 | # Each divisor of M appears at most once on each row, and the last element of | 25 | # Each divisor of M appears at most once on each row, and the last element of |
| 39 | # the last row is of the form (M0,r0). | 26 | # the last row is of the form (M0,r0). |
| 40 | def adelic_failure_gb( B, d ): | 27 | def adelic_failure_gb( B, d ): |
| @@ -42,48 +29,48 @@ def adelic_failure_gb( B, d ): | |||
| 42 | # The table to be returned (or printed at the end), as described above. | 29 | # The table to be returned (or printed at the end), as described above. |
| 43 | ad_fail = [] | 30 | ad_fail = [] |
| 44 | 31 | ||
| 45 | # N is such that for every n > N the adelic failure of Q(\sqrt{2^n}{G}) | 32 | # N is such that for every n > N the adelic failure of Q(\sqrt{2^n}{G}) is |
| 46 | # is the same as that of Q(\sqrt{2^N}{G}). | 33 | # the same as that of Q(\sqrt{2^N}{G}). |
| 47 | # We always have to include n=3, because of problem with sqrt(2) in Q_8 | 34 | # We always have to include n=3, because of problem with sqrt(2) in Q_8 (in |
| 48 | # (in theory, this is not necessary in some cases, e.g. if 2 does not | 35 | # theory, this is not necessary in some cases, e.g. if 2 does not divide |
| 49 | # divide any element of G). | 36 | # any element of G). |
| 50 | # If the negative generator is on the last level, we need to increase N | 37 | # If the negative generator is on the last level, we need to increase N by |
| 51 | # by 1, because it would contribute to the shortlist in the next level | 38 | # 1, because it would contribute to the shortlist in the next level (by |
| 52 | # (by taking the root of an even power). | 39 | # taking the root of an even power). |
| 53 | if d == len(B)-1: | 40 | if d == len(B)-1: |
| 54 | N = max(3,len(B)+1) | 41 | N = max(3,len(B)+1) |
| 55 | else: | 42 | else: |
| 56 | N = max(3,len(B)) | 43 | N = max(3,len(B)) |
| 57 | 44 | ||
| 58 | # The intersection is given by adding the square roots of the elements of | 45 | # The intersection is given by adding the square roots of the elements of |
| 59 | # this shortlist (and a "special element", not always of the form sqrt d, | 46 | # this shortlist (and a "special element", not always of the form sqrt(d), |
| 60 | # coming from taking a suitable root of a negative generator; this | 47 | # coming from taking a suitable root of a negative generator; this special |
| 61 | # special element is dealt with later). The shortlist grows at each step, | 48 | # element is dealt with later). The shortlist grows at each step, so we |
| 62 | # so we declare it before starting to loop over n and we build it | 49 | # declare it before starting to loop over n and we build it incrementally. |
| 63 | # incrementally. The "special element" is of the form \zeta_{2^n}\sqrt b, | 50 | # The "special element" is of the form \zeta_{2^n}\sqrt{b}, which we encode |
| 64 | # which we encode as (n,b). We use the value (1,1) (special element -1) | 51 | # as (n,b). We use the value (1,1) (special element -1) to say that there |
| 65 | # to say that there is no special element at this level. | 52 | # isno special element at this level. |
| 66 | shortlist = [] | 53 | shortlist = [] |
| 67 | special_element = (1,1) | 54 | special_element = (1,1) |
| 68 | 55 | ||
| 69 | # The integers M, giving the smallest cyclotomic field in which lies the | 56 | # The integers M, giving the smallest cyclotomic field in which lies the |
| 70 | # whole intersection with Q_\infty, grows with n. As with the shortlist, | 57 | # whole intersection with Q_\infty, also grows with n. As with the |
| 71 | # we declare it here and increase it appropriately at each step. | 58 | # shortlist, we declare it here and increase it appropriately at each step. |
| 72 | M = 1 | 59 | M = 1 |
| 73 | 60 | ||
| 74 | for n in range( 1, N+1 ): | 61 | for n in range( 1, N+1 ): # 1 \leq n \leq N |
| 75 | 62 | ||
| 76 | # We add the new elements to the shortlist, modifying M if needed. | 63 | # We add the new elements to the shortlist, modifying M if needed. |
| 77 | # This is not done in case we are in the extra "fake" level (this | 64 | # This is not done in case we are in the extra "fake" level (this case |
| 78 | # case dealt with immediately below). | 65 | # dealt with immediately below). |
| 79 | if n-1 < len(B): | 66 | if n-1 < len(B): |
| 80 | for g in B[n-1]: | 67 | for g in B[n-1]: |
| 81 | # Case of negative g | 68 | # Case of negative g |
| 82 | if g < 0 and n > 1: | 69 | if g < 0 and n > 1: |
| 83 | # Special element of the form \zeta_{2^{n+1}}\sqrt(b). | 70 | # Special element of the form \zeta_{2^{n+1}}\sqrt(b). |
| 84 | # It is contained in Q_{lcm(2^{n+1},cyc_emb(b))}, except | 71 | # It is contained in Q_{lcm(2^{n+1},cyc_emb(b))}, except in |
| 85 | # in case n=2 and b=2, in which case it is contained in | 72 | # case n=2 and b=2, in which case it is contained in Q_4. |
| 86 | # Q_4. We store it as as pair ( n+1, b ). | 73 | # We store it as as pair ( n+1, b ). |
| 87 | special_element = ( n+1, abs(g)^(1/(2^(n-1))) ) | 74 | special_element = ( n+1, abs(g)^(1/(2^(n-1))) ) |
| 88 | M = lcm( M, special_embed( special_element ) ) | 75 | M = lcm( M, special_embed( special_element ) ) |
| 89 | else: | 76 | else: |
| @@ -91,8 +78,8 @@ def adelic_failure_gb( B, d ): | |||
| 91 | shortlist.append( b ) | 78 | shortlist.append( b ) |
| 92 | M = lcm( M, cyc_embed(b) ) | 79 | M = lcm( M, cyc_embed(b) ) |
| 93 | 80 | ||
| 94 | # We add a root of an even power of the negative generator, as soon | 81 | # We add a root of an even power of the negative generator, as soon as |
| 95 | # as we are beyond its level. | 82 | # we are beyond its level. |
| 96 | if d != -1 and n == d+2: | 83 | if d != -1 and n == d+2: |
| 97 | b = abs(B[d][0])^(1/2^d) | 84 | b = abs(B[d][0])^(1/2^d) |
| 98 | shortlist.append( b ) | 85 | shortlist.append( b ) |
| @@ -114,20 +101,19 @@ def adelic_failure_gb( B, d ): | |||
| 114 | 101 | ||
| 115 | # For each divisor dM of M, compute the degree of the intersection of | 102 | # For each divisor dM of M, compute the degree of the intersection of |
| 116 | # Q(\sqrt{2^n}{G}) with Q_dM over Q_{2^n}. We need to compute the | 103 | # Q(\sqrt{2^n}{G}) with Q_dM over Q_{2^n}. We need to compute the |
| 117 | # number r of elements in the subgroup of G generated by the | 104 | # number r of elements in the subgroup of G generated by the shortlist |
| 118 | # shortlist that lie in Q_dM. This is going to be a power of 2. The | 105 | # that lie in Q_dM. This is going to be a power of 2. The sought degree |
| 119 | # sought degree will be r, up to considering some special cases | 106 | # will be r, up to considering some special cases (described below). |
| 120 | # (described below). | ||
| 121 | # | 107 | # |
| 122 | # This algorithm could be inefficient for groups of big rank. It can | 108 | # This algorithm could be inefficient for groups of big rank. It can be |
| 123 | # be improved by precomputing subgroups of G/G^2 and the cyclotomic | 109 | # improved by precomputing subgroups of G/G^2 and the cyclotomic fields |
| 124 | # fields containing them. | 110 | # containing them. |
| 125 | 111 | ||
| 126 | aux = [] # Next line of ad_fail table | 112 | aux = [] # Next line of ad_fail table |
| 127 | 113 | ||
| 128 | for dM in divisors( M ): | 114 | for dM in divisors( M ): |
| 129 | # We only care of the intersection with Q_dM if it contains the | 115 | # We only care of the intersection with Q_dM if it contains the 2^n |
| 130 | # 2^n roots of unity. | 116 | # roots of unity. |
| 131 | if dM % (2^n) != 0: | 117 | if dM % (2^n) != 0: |
| 132 | continue | 118 | continue |
| 133 | 119 | ||
| @@ -144,7 +130,7 @@ def adelic_failure_gb( B, d ): | |||
| 144 | if n <= d and dM % (2^(n+1)) == 0 and n > 1: | 130 | if n <= d and dM % (2^(n+1)) == 0 and n > 1: |
| 145 | r *= 2 | 131 | r *= 2 |
| 146 | 132 | ||
| 147 | # We loose a factor of 2 if we have sqrt(2) in Q_8 or \zeta_8 in | 133 | # We loose a factor of 2 if we have sqrt(2) in Q_8 or \zeta_8 2 in |
| 148 | # Q_4. | 134 | # Q_4. |
| 149 | if 8 in H and dM % 8 == 0 and (n >= 3 or (n == 2 and n <= d)): | 135 | if 8 in H and dM % 8 == 0 and (n >= 3 or (n == 2 and n <= d)): |
| 150 | r = r/2 | 136 | r = r/2 |
| @@ -153,11 +139,11 @@ def adelic_failure_gb( B, d ): | |||
| 153 | # We have to consider all possible special elements arising from | 139 | # We have to consider all possible special elements arising from |
| 154 | # multiplying the given element with the other elements of the | 140 | # multiplying the given element with the other elements of the |
| 155 | # shortlist. | 141 | # shortlist. |
| 156 | # If any of them is of the form \zeta_8 2q for q a square, there | 142 | # If any of them is of the form \zeta_8 2q for q a square, there is |
| 157 | # is nothing to do: in fact \zeta_8 2 embeds in Q_4, which | 143 | # nothing to do: in fact \zeta_8 2 embeds in Q_4, which coincides |
| 158 | # coincides with Q_{2^n} (n must be 2); so we would double the | 144 | # with Q_{2^n} (n must be 2); so we would double the degree because |
| 159 | # degree because of the existence of the special element, but | 145 | # of the existence of the special element, butthen we would loose |
| 160 | # then we would loose another factor of 2 because of this. | 146 | # another factor of 2 because of this. |
| 161 | if special_element != (1,1) and special_element[0] == n+1: | 147 | if special_element != (1,1) and special_element[0] == n+1: |
| 162 | nothing_to_do = False | 148 | nothing_to_do = False |
| 163 | intersecting_QdM = False | 149 | intersecting_QdM = False |
| @@ -184,8 +170,11 @@ def cyc_embed( b ): | |||
| 184 | m *= 4 | 170 | m *= 4 |
| 185 | return abs(m) | 171 | return abs(m) |
| 186 | 172 | ||
| 187 | # Computes the minimal cyclotomic field containing \zeta_{2^n}\sqrt(b). | 173 | # Computes the minimal cyclotomic field containing \zeta_{2^n}\sqrt(b), |
| 188 | def special_embed( (n,b) ): | 174 | # where (n,b)=p |
| 175 | def special_embed( p ): | ||
| 176 | n = p.first | ||
| 177 | n = p.second | ||
| 189 | m = squarefree_part(b) | 178 | m = squarefree_part(b) |
| 190 | if n == 3 and m % 2 == 0: | 179 | if n == 3 and m % 2 == 0: |
| 191 | return 4 * cyc_embed(m/2) | 180 | return 4 * cyc_embed(m/2) |
| @@ -201,7 +190,7 @@ def special_embed( (n,b) ): | |||
| 201 | # degree of Q_{l^m,l^n} over Q_{l^m}, where l = L[i] | 190 | # degree of Q_{l^m,l^n} over Q_{l^m}, where l = L[i] |
| 202 | def total_l_adic_failure( B ): | 191 | def total_l_adic_failure( B ): |
| 203 | 192 | ||
| 204 | bp = bad_primes(B) | 193 | bp = bad_primes( B ) |
| 205 | ret = ( bp, [] ) | 194 | ret = ( bp, [] ) |
| 206 | 195 | ||
| 207 | for l in bp: | 196 | for l in bp: |
| @@ -210,32 +199,35 @@ def total_l_adic_failure( B ): | |||
| 210 | return ret | 199 | return ret |
| 211 | 200 | ||
| 212 | # Computes the "bad primes", i.e. the ones for which the l-adic part is not | 201 | # Computes the "bad primes", i.e. the ones for which the l-adic part is not |
| 213 | # maximal. Used by total_l_adic_failure. | 202 | # maximal. Used by l_adic_degree and total_l_adic_failure. |
| 214 | def bad_primes( B ): | 203 | def bad_primes( B ): |
| 215 | M = exponent_matrix( B ) | 204 | M = exponent_matrix( B ) |
| 216 | (a,b) = M.dimensions() | 205 | (a,b) = M.dimensions() |
| 217 | |||
| 218 | if a > b or M.rank() < a: | 206 | if a > b or M.rank() < a: |
| 219 | print "This is not a basis" | 207 | print( "This is not a basis" ) |
| 220 | return | 208 | return |
| 221 | 209 | ||
| 222 | # Compute which primes l divide all minors of the exponent matrix | 210 | # Compute which primes l divide all minors of the exponent matrix |
| 223 | bad_p = list( prime_factors( gcd( M.minors(a) ) ) ) | 211 | ms = M.minors( a ) |
| 224 | if 2 not in bad_p: | 212 | d = ms[0] |
| 225 | bad_p += [2] # 2 is always bad | 213 | for m in ms: |
| 214 | d = gcd( d, m ) | ||
| 215 | bad_primes = list( prime_factors( d ) ) | ||
| 216 | if 2 not in bad_primes: | ||
| 217 | bad_primes += [2] # 2 is always bad | ||
| 218 | bad_primes.sort() # Ensures 2 is always first | ||
| 226 | 219 | ||
| 227 | return sorted(bad_p) # Ensures 2 is always first | 220 | return bad_primes |
| 228 | 221 | ||
| 229 | # Computes the l-adic failure for a specific l. Returns a "table" as | 222 | # Computes the l-adic failure for a specific l. Returns a "table" as described |
| 230 | # described above "total_l_adic_failure". | 223 | # above "total_l_adic_failure". |
| 231 | # B is any basis for G. | 224 | # B is any basis for G. |
| 232 | def l_adic_failure( B, l ): | 225 | def l_adic_failure( B, l ): |
| 233 | 226 | ||
| 234 | r = len(B) | 227 | r = len(B) |
| 235 | GB = make_good_basis( B, l ) | 228 | GB = make_good_basis( B, l ) |
| 236 | 229 | ||
| 237 | # Computes the parameters for G over Q4. For l odd, they are the same as | 230 | # Computes the parameters over Q4. For l odd, they are the same as over Q. |
| 238 | # over Q. | ||
| 239 | p = parameters_Q4( GB, l ) | 231 | p = parameters_Q4( GB, l ) |
| 240 | maxM = max( [ sum(x) for x in p ] ) | 232 | maxM = max( [ sum(x) for x in p ] ) |
| 241 | maxN = max( maxM, len(GB)-1 ) | 233 | maxN = max( maxM, len(GB)-1 ) |
| @@ -277,6 +269,7 @@ def l_adic_failure_from_data( B, l, tablel, M, N ): | |||
| 277 | return 1 | 269 | return 1 |
| 278 | r = len(B) | 270 | r = len(B) |
| 279 | 271 | ||
| 272 | # Basically, the "dual" of what we do in l_adic_degree. | ||
| 280 | if m > len(tablel): | 273 | if m > len(tablel): |
| 281 | if n > len(tablel): | 274 | if n > len(tablel): |
| 282 | return l^tablel[-1][1] | 275 | return l^tablel[-1][1] |
| @@ -285,70 +278,127 @@ def l_adic_failure_from_data( B, l, tablel, M, N ): | |||
| 285 | 278 | ||
| 286 | return l^(r*n-tablel[m-1][0][n-1]) | 279 | return l^(r*n-tablel[m-1][0][n-1]) |
| 287 | 280 | ||
| 288 | # Returns the l-dvisibility parameters of G over Q, given a good basis b of | 281 | # Computes the l-divisibility parameters of G over Q4, given a good basis b |
| 289 | # G, as a list of pairs (di,hi). | ||
| 290 | def parameters_Q( b, l ): | ||
| 291 | if l != 2: | ||
| 292 | return [x for a in [[(i,0)]*len(b[i]) for i in range(len(b))] \ | ||
| 293 | for x in a] | ||
| 294 | else: | ||
| 295 | return [x for a in [[(i,1-max(0,sgn(g))) for g in b[i]] \ | ||
| 296 | for i in range(len(b))] for x in a] | ||
| 297 | |||
| 298 | # Computes the l-divisibility parameters of G over Q4, given a good basis gb | ||
| 299 | # over Q for G. Returns a list of pairs (di,hi). | 282 | # over Q for G. Returns a list of pairs (di,hi). |
| 300 | # If l is odd it just uses the good basis given to compute the parameters. | 283 | # If l is odd it just uses the good basis given to compute the parameters. |
| 301 | # If l=2, it uses the results of PST-2. | ||
| 302 | def parameters_Q4( gb, l ): | 284 | def parameters_Q4( gb, l ): |
| 285 | # Converts from "good basis format" to simple list | ||
| 286 | b = [] | ||
| 287 | for x in gb: | ||
| 288 | b += x | ||
| 289 | ret = [] | ||
| 290 | |||
| 303 | if l != 2: | 291 | if l != 2: |
| 304 | return parameters_Q( gb, l ) | 292 | for i in range( len( gb ) ): |
| 293 | for j in gb[i]: | ||
| 294 | ret.append( (i,0) ) | ||
| 295 | return ret | ||
| 305 | else: | 296 | else: |
| 306 | # Converts from "good basis format" to simple list | 297 | R.<y> = PolynomialRing( QQ ) |
| 307 | b = [ x for a in gb for x in a ] | 298 | pol = R(y^2+1) |
| 308 | 299 | Q4.<eye> = NumberField( pol ) # I already use i for other things | |
| 309 | M = exponent_matrix( b ) | ||
| 310 | 300 | ||
| 311 | # Thanks to my bad notation, the elements of b are what are called | 301 | # Factorize basis elements over Q4 and so on. |
| 312 | # g_i in the article, while the elements of bb will be the b_i's. | 302 | d = [] |
| 313 | bb = [ abs(b[i])^(2^(-divisibility(M[i],2))) for i in range(len(b)) ] | 303 | B = [] |
| 304 | h = [] | ||
| 305 | ideals_list = set() | ||
| 306 | M = [] # Exponent matrix of the Bi's | ||
| 314 | 307 | ||
| 315 | # Computing a combination of bb elements of the form 2 * square. | 308 | # Pre-process to find all ideals appearing in the factorization and fix |
| 316 | MM = exponent_matrix( bb + [2] ).change_ring( GF( 2 ) ) | 309 | # a chosen generator for each of them. This is important in order to |
| 317 | 310 | # compute the "sign" (h-parameter) of an element with respect to it Bi. | |
| 318 | for a in MM.kernel().basis(): | 311 | for g in b: |
| 319 | if a[-1] != 0: | 312 | factorization_list = list( Q4.ideal(g).factor() ) |
| 320 | # the vector a[0:-1] gives the coefficients for a combination | 313 | ideals_list |= set( [ x[0] for x in factorization_list ] ) |
| 321 | # of the b_i's of the form 2 * square. | 314 | ideals_list = list( ideals_list ) |
| 322 | 315 | # Chooses a generator of each principal ideal in the list | |
| 323 | # Index of asis elements that do appear in the combination | 316 | irreducibles_list = [ J.gens_reduced()[0] for J in ideals_list ] |
| 324 | c = [ i for i in range(len(a[0:-1])) if a[i] != 0 ] | 317 | |
| 325 | 318 | # Compute the Q4-parameters of the given basis b. Also computes the | |
| 326 | # Change of basis to include the element of the form | 319 | # exponent matrix of the Bi's |
| 327 | # 2 * square to some power. | 320 | for g in b: |
| 328 | div_max = -1 | 321 | factorization_list = list( Q4.ideal(g).factor() ) |
| 329 | i_max = -1 | 322 | exps = [ x[1] for x in factorization_list ] |
| 330 | for j in c: | 323 | d.append( divisibility( exps, l ) ) |
| 331 | if divisibility(M[j],2) > div_max: | 324 | Bg = 1 |
| 332 | div_max = divisibility(M[j],2) | 325 | for j in range(len(factorization_list)): |
| 333 | i_max = j | 326 | a = 0 |
| 334 | b[i_max] = prod([b[j]^(2^(div_max-divisibility(M[j],2))) \ | 327 | for i in range( len( ideals_list ) ): |
| 335 | for j in c]) | 328 | if ideals_list[i] == factorization_list[j][0]: |
| 336 | M = exponent_matrix(b) | 329 | a = irreducibles_list[i] |
| 330 | break | ||
| 331 | Bg *= a ^ (exps[j]/(l^d[-1])) | ||
| 332 | B.append(Bg) | ||
| 333 | u = g / (Bg^(l^d[-1])) | ||
| 334 | if not u.is_unit(): | ||
| 335 | print( "Error: g is not the right power of the computed Bg." ) | ||
| 336 | print( "g:", g, ", Bg:", Bg, ", exponent:", l^d[-1] ) | ||
| 337 | if u == 1: | ||
| 338 | h.append( 0 ) | ||
| 339 | elif u == -1: | ||
| 340 | h.append( 1 ) | ||
| 341 | else: | ||
| 342 | h.append( 2 ) | ||
| 343 | |||
| 344 | # Make the exponent matrix M (for now as a list of rows) | ||
| 345 | for g in B: | ||
| 346 | row = [0] * len(ideals_list) | ||
| 347 | for i in range(len(ideals_list)): | ||
| 348 | I = ideals_list[i] | ||
| 349 | ee = 1 | ||
| 350 | while (I^ee).divides(g): | ||
| 351 | ee += 1 | ||
| 352 | row[i] = ee-1 | ||
| 353 | M.append(row) | ||
| 337 | 354 | ||
| 338 | # Return the parameters, changing only those of the element | 355 | # If the Bi's are not strongly independent, apply the algorithm (only |
| 339 | # of highest divisibility that appears in the combination. | 356 | # once) to produce a new basis. The new basis has maximal parameters. |
| 340 | ret = [(divisibility(M[i],2),1-max(0,sgn(b[i]))) \ | 357 | coeffs = find_combination( matrix(M), l ) |
| 341 | for i in range(len(b)) ] | 358 | if coeffs != []: |
| 342 | d1, h1 = ret[i_max] | ||
| 343 | if d1 == 1: | ||
| 344 | h1 = 1 - h1 | ||
| 345 | elif d1 == 0: | ||
| 346 | h1 = 2 | ||
| 347 | ret[i_max] = ( d1+1, h1 ) | ||
| 348 | 359 | ||
| 349 | return ret | 360 | maxi = -1 |
| 361 | maxd = -1 | ||
| 362 | for i in range(len(d)): | ||
| 363 | if d[i] > maxd and coeffs[i] != 0: | ||
| 364 | maxd = d[i] | ||
| 365 | maxi = i | ||
| 350 | 366 | ||
| 351 | return parameters_Q( gb, 2 ) | 367 | x = [(a/coeffs[maxi]).lift() for a in coeffs] # Now a vector of int |
| 368 | |||
| 369 | new_element = 1 | ||
| 370 | for i in range(len(d)): | ||
| 371 | new_element *= b[i]^( x[i] * l^(d[maxi]-d[i]) ) | ||
| 372 | |||
| 373 | b[maxi] = new_element | ||
| 374 | |||
| 375 | # Compute new B, d and so on. | ||
| 376 | factorization_list = list( Q4.ideal(b[maxi]).factor() ) | ||
| 377 | exps = [ x[1] for x in factorization_list ] | ||
| 378 | d[maxi] = divisibility( exps, l ) | ||
| 379 | Bg = 1 | ||
| 380 | |||
| 381 | for j in range(len(factorization_list)): | ||
| 382 | a = 0 | ||
| 383 | for i in range( len( ideals_list ) ): | ||
| 384 | if ideals_list[i] == factorization_list[j][0]: | ||
| 385 | a = irreducibles_list[i] | ||
| 386 | break | ||
| 387 | Bg *= a ^ (exps[j]/(l^d[maxi])) | ||
| 388 | B[maxi] = Bg | ||
| 389 | M[maxi] = [ x[1] for x in list( Q4.ideal(Bg).factor() ) ] | ||
| 390 | u = b[maxi] / (Bg^(l^d[maxi])) | ||
| 391 | if not u.is_unit(): | ||
| 392 | print( "Error: new element is not the right power of B." ) | ||
| 393 | print( "New el.:",b[maxi],", B:",Bg,", exponent:",l^d[maxi] ) | ||
| 394 | if u == 1: | ||
| 395 | h[maxi] = 0 | ||
| 396 | elif u == -1: | ||
| 397 | h[maxi] = 1 | ||
| 398 | else: | ||
| 399 | h[maxi] = 2 | ||
| 400 | |||
| 401 | return [(d[i],h[i]) for i in range(len(d))] | ||
| 352 | 402 | ||
| 353 | # Uses Theorem 18 to compute the degree of Kummer extensions. | 403 | # Uses Theorem 18 to compute the degree of Kummer extensions. |
| 354 | def compute_vl( p, n, m, r ): | 404 | def compute_vl( p, n, m, r ): |
| @@ -358,26 +408,16 @@ def compute_vl( p, n, m, r ): | |||
| 358 | 408 | ||
| 359 | return M - m + r*n - sum( ni ) | 409 | return M - m + r*n - sum( ni ) |
| 360 | 410 | ||
| 361 | # Computes a basis for G from a frozen_set of generators. | ||
| 362 | # Returns a pair (B,torsion) where B is a list of rational numbers and | ||
| 363 | # torsion is true if -1 is in G and false otherwise. | ||
| 364 | @CachedFunction | ||
| 365 | def generators_to_basis( G ): | ||
| 366 | (BM,BM_primes) = exponent_matrix_with_sign_and_primes( list(G) ) | ||
| 367 | BM = BM.echelon_form() | ||
| 368 | BM_primes.append(-1) | ||
| 369 | |||
| 370 | B = [prod([BM_primes[i]^r[i] for i in range(len(r))]) for r in BM.rows()] | ||
| 371 | |||
| 372 | return ( [ x for x in B if abs(x) != 1 ], -1 in B ) | ||
| 373 | |||
| 374 | |||
| 375 | # Given any basis b of a group G computes an l-good basis for G. This is done | 411 | # Given any basis b of a group G computes an l-good basis for G. This is done |
| 376 | # using the algorithm outlined in the proof of Theorem 14 of (Debry-Perucca). | 412 | # using the algorithm outlined in the proof of Theorem 14 of (Debry-Perucca). |
| 377 | def make_good_basis( b, l ): | 413 | def make_good_basis( b, l ): |
| 378 | M = exponent_matrix( b ) | 414 | M = exponent_matrix( b ) |
| 379 | d = [ divisibility(x,l) for x in M ] | 415 | d = [] |
| 380 | B = [ abs(b[i])^(1/(l^d[i])) for i in range(len(b)) ] | 416 | B = [] |
| 417 | for i in range(len(b)): | ||
| 418 | di = divisibility( M[i], l ) | ||
| 419 | d.append( di ) | ||
| 420 | B.append( abs(b[i])^(1/(l^di)) ) | ||
| 381 | 421 | ||
| 382 | # Computes the coeffiecients of a linear combination of the rows of M | 422 | # Computes the coeffiecients of a linear combination of the rows of M |
| 383 | # that is zero modulo l. These coefficients are elements of F_l. | 423 | # that is zero modulo l. These coefficients are elements of F_l. |
| @@ -385,8 +425,8 @@ def make_good_basis( b, l ): | |||
| 385 | 425 | ||
| 386 | while coeffs != []: | 426 | while coeffs != []: |
| 387 | 427 | ||
| 388 | # Computes which basis element (with non-zero coefficient in the | 428 | # Computes which basis element (with non-zero coefficient in the linear |
| 389 | # linear combination above) has maximal divisibility. | 429 | # combination above) has maximal divisibility. |
| 390 | maxi = -1 | 430 | maxi = -1 |
| 391 | maxd = -1 | 431 | maxd = -1 |
| 392 | for i in range(len(d)): | 432 | for i in range(len(d)): |
| @@ -394,24 +434,31 @@ def make_good_basis( b, l ): | |||
| 394 | maxd = d[i] | 434 | maxd = d[i] |
| 395 | maxi = i | 435 | maxi = i |
| 396 | 436 | ||
| 397 | x = [ (a/coeffs[maxi]).lift() for a in coeffs ] # Now a vector of int | 437 | x = [ (a/coeffs[maxi]).lift() for a in coeffs ] # Now a vector of ints |
| 398 | 438 | ||
| 399 | new_elt = prod([b[i]^(x[i]*l^(d[maxi]-d[i])) for i in range(len(d))]) | 439 | new_element = 1 |
| 440 | for i in range(len(d)): | ||
| 441 | new_element *= b[i]^( x[i] * l^(d[maxi]-d[i]) ) | ||
| 400 | 442 | ||
| 401 | b[maxi] = new_elt | 443 | b[maxi] = new_element |
| 402 | M = exponent_matrix( b ) | 444 | M = exponent_matrix( b ) |
| 403 | d[maxi] = divisibility( M[maxi], l ) | 445 | d[maxi] = divisibility( M[maxi], l ) |
| 404 | B[maxi] = abs(b[maxi])^(1/(l^d[maxi])) | 446 | B[maxi] = abs(b[maxi])^(1/(l^d[maxi])) |
| 405 | 447 | ||
| 406 | coeffs = find_combination( exponent_matrix( B ), l ) | 448 | coeffs = find_combination( exponent_matrix( B ), l ) |
| 407 | 449 | ||
| 408 | return [[b[i] for i in range(len(b)) if d[i]==j] for j in range(max(d)+1)] | 450 | GB = [[]] |
| 451 | for i in range(len(d)): | ||
| 452 | while( len(GB) <= d[i] ): | ||
| 453 | GB.append([]) | ||
| 454 | GB[d[i]].append(b[i]) | ||
| 455 | return GB | ||
| 409 | 456 | ||
| 410 | # Takes a good basis B and adjusts the sign of the elements so that there is | 457 | # Takes a good basis B and adjusts the sign of the elements so that there is at |
| 411 | # at most one negative generator (of positive divisibility). The input is a | 458 | # most one negative generator (of positive divisibility). The input is a good |
| 412 | # good basis in the format returned by make_good_basis. | 459 | # basis in the format returned by make_good_basis. |
| 413 | # Returns a pair (B,d), where B is the updated basis and d is the | 460 | # Returns a pair (B,d), where B is the updated basis and d is the divisibility |
| 414 | # divisibility parameter of the only negative element remained. | 461 | # parameter of the only negative element remained. |
| 415 | # The sign of the d=0 elements is just ignored in the other steps of the | 462 | # The sign of the d=0 elements is just ignored in the other steps of the |
| 416 | # algorithm, so we keep them negative. | 463 | # algorithm, so we keep them negative. |
| 417 | def adjust_sign( B ): | 464 | def adjust_sign( B ): |
| @@ -430,7 +477,6 @@ def adjust_sign( B ): | |||
| 430 | # Given the exponent matrix M of a list of rational numbers B, returns the | 477 | # Given the exponent matrix M of a list of rational numbers B, returns the |
| 431 | # coefficients of a linear combination that is weakly l-divisible, or [] if | 478 | # coefficients of a linear combination that is weakly l-divisible, or [] if |
| 432 | # the B[i] are strongly l-independent. | 479 | # the B[i] are strongly l-independent. |
| 433 | @CachedFunction | ||
| 434 | def find_combination( M, l ): | 480 | def find_combination( M, l ): |
| 435 | M = M.change_ring( GF( l ) ) | 481 | M = M.change_ring( GF( l ) ) |
| 436 | if M.rank() != min( M.dimensions() ): | 482 | if M.rank() != min( M.dimensions() ): |
| @@ -443,8 +489,8 @@ def find_combination( M, l ): | |||
| 443 | # Returns the minimal l-valuation of the exponents. | 489 | # Returns the minimal l-valuation of the exponents. |
| 444 | def divisibility( A, l ): | 490 | def divisibility( A, l ): |
| 445 | if len(A) == 0: | 491 | if len(A) == 0: |
| 446 | print "Warning: computing the divisibility of a torsion element.", | 492 | print( "Warning: computing the divisibility of a torsion element.", end="" ) |
| 447 | print "Returning +Infinity." | 493 | print( "Returning +Infinity." ) |
| 448 | return +Infinity | 494 | return +Infinity |
| 449 | return min( [ valuation( x, l ) for x in A ] ) | 495 | return min( [ valuation( x, l ) for x in A ] ) |
| 450 | 496 | ||
| @@ -469,10 +515,11 @@ def exponent_matrix( B ): | |||
| 469 | # Returns a pair (M,L) where M is the modified exponent matrix and L is the | 515 | # Returns a pair (M,L) where M is the modified exponent matrix and L is the |
| 470 | # list of primes appearing in the factorization. | 516 | # list of primes appearing in the factorization. |
| 471 | def exponent_matrix_with_sign_and_primes( B ): | 517 | def exponent_matrix_with_sign_and_primes( B ): |
| 472 | 518 | prime_list = set() | |
| 473 | prime_list = list({x for a in [prime_factors(g) for g in B] for x in a}) | 519 | for g in B: |
| 520 | prime_list |= set( prime_factors( g ) ) | ||
| 521 | prime_list = list( prime_list ) | ||
| 474 | np = len( prime_list ) | 522 | np = len( prime_list ) |
| 475 | |||
| 476 | rows = [] | 523 | rows = [] |
| 477 | for g in B: | 524 | for g in B: |
| 478 | rowg = [0] * np | 525 | rowg = [0] * np |
| @@ -480,19 +527,21 @@ def exponent_matrix_with_sign_and_primes( B ): | |||
| 480 | for i in range( np ): | 527 | for i in range( np ): |
| 481 | if f[0] == prime_list[i]: | 528 | if f[0] == prime_list[i]: |
| 482 | rowg[i] = f[1] | 529 | rowg[i] = f[1] |
| 483 | rowg.append( 1 - max(0,sgn(g)) ) | 530 | s = 0 |
| 531 | if sgn(g) == -1: | ||
| 532 | s = 1 | ||
| 533 | rowg.append( s ) | ||
| 484 | rows.append( rowg ) | 534 | rows.append( rowg ) |
| 485 | return ( matrix( rows ), prime_list ) | 535 | return ( matrix( rows ), prime_list ) |
| 486 | 536 | ||
| 487 | # The function TotalKummerFailure (with its many wrapper functions) computes | 537 | # This is a wrapper function for total_kummer_failure( G, True ), see below. |
| 488 | # the total table of Kummer Failures for the given group G. Moreover, the | 538 | def TotalKummerFailure( G ): |
| 489 | # result is cached for speeding up following computations on the same group, | 539 | total_kummer_failure( G, True ) |
| 490 | # even if the same group is given with a different set of generators. | 540 | |
| 491 | # | ||
| 492 | # Input: any set of generators for a subgroup G of Q*. | 541 | # Input: any set of generators for a subgroup G of Q*. |
| 493 | # If output=False, returns a 4-uple (t,MM,NN,D): | 542 | # If output=False, returns a 4-uple (t,MM,NN,D): |
| 494 | # - t is a pair, where t[0] is the rank of G and t[1] is either True (if G | 543 | # - t is a pair, where t[0] is the rank of G and t[1] is either True (if G has |
| 495 | # has torsion) or False (is it does not). | 544 | # torsion) or False (is it does not). |
| 496 | # - MM is the pair (M0,divisors(M0)) | 545 | # - MM is the pair (M0,divisors(M0)) |
| 497 | # - NN is the pair (N0,divisors(N0)) | 546 | # - NN is the pair (N0,divisors(N0)) |
| 498 | # - D is a table F, where F[j][i] is the ration between phi(m)n^r and the | 547 | # - D is a table F, where F[j][i] is the ration between phi(m)n^r and the |
| @@ -501,34 +550,42 @@ def exponent_matrix_with_sign_and_primes( B ): | |||
| 501 | # computed for a torsion-free part of G. | 550 | # computed for a torsion-free part of G. |
| 502 | # If output is True, outputs this data in a human-readable way and does not | 551 | # If output is True, outputs this data in a human-readable way and does not |
| 503 | # return any value. | 552 | # return any value. |
| 553 | def total_kummer_failure( G, output ): | ||
| 504 | 554 | ||
| 505 | def TotalKummerFailure( G ): | 555 | # Computing a basis. |
| 506 | total_kummer_failure( G, True ) | 556 | (BM,BM_primes) = exponent_matrix_with_sign_and_primes( G ) |
| 507 | 557 | BM = BM.echelon_form() | |
| 508 | @CachedFunction | 558 | BM_primes.append(-1) |
| 509 | def total_kummer_failure_cachable( G ): | 559 | B = [] |
| 510 | B, torsion = generators_to_basis( G ) | 560 | torsion = False |
| 511 | return total_kummer_failure_cachable_basis( tuple(B), torsion ) | ||
| 512 | 561 | ||
| 513 | @CachedFunction | 562 | for r in BM.rows(): |
| 514 | def total_kummer_failure_cachable_basis( B, torsion ): | 563 | gr = product( [ BM_primes[i]^r[i] for i in range(len(r)) ] ) |
| 515 | B = list(B) | 564 | if gr == -1: |
| 516 | r = len(B) # Rank of G | 565 | torsion = True |
| 566 | break | ||
| 567 | elif gr == 1: | ||
| 568 | break | ||
| 569 | else: | ||
| 570 | B.append(gr) | ||
| 517 | 571 | ||
| 518 | if r == 0: | 572 | if len(B) == 0: |
| 519 | print "G is torsion. The extension is cyclotomic. Stopping." | 573 | print( "G is torsion. The extension is cyclotomic. Stopping." ) |
| 520 | return False | 574 | return False |
| 521 | 575 | ||
| 576 | r = len(B) # Rank of G | ||
| 577 | |||
| 522 | # Compute l-adic data (straightforward) | 578 | # Compute l-adic data (straightforward) |
| 523 | ( bad_p, l_adic_failure_table ) = total_l_adic_failure( B ) | 579 | ( bad_primes, l_adic_failure_table ) = total_l_adic_failure( B ) |
| 524 | 580 | ||
| 525 | # Compute adelic data. | 581 | # Compute adelic data. |
| 526 | (GB,d) = adjust_sign( make_good_basis( B, 2 ) ) | 582 | (GB,d) = adjust_sign( make_good_basis( B, 2 ) ) |
| 527 | adelic_failure_table = adelic_failure_gb( GB, d ) | 583 | adelic_failure_table = adelic_failure_gb( GB, d ) |
| 528 | 584 | ||
| 529 | # Computing the bounds M0 and N0 | 585 | # Computing the bounds M0 and N0 |
| 530 | N0 = prod( [ bad_p[i] ^ len( l_adic_failure_table[i][-1][0] ) \ | 586 | N0 = 1 |
| 531 | for i in range(len(bad_p)) ] ) | 587 | for i in range(len( bad_primes )): |
| 588 | N0 *= bad_primes[i] ^ len( l_adic_failure_table[i][-1][0] ) | ||
| 532 | # Extra factors of 2 may come from the adelic failure | 589 | # Extra factors of 2 may come from the adelic failure |
| 533 | N0 = lcm( N0, 2^len( adelic_failure_table ) ) | 590 | N0 = lcm( N0, 2^len( adelic_failure_table ) ) |
| 534 | divs_N0 = divisors(N0) | 591 | divs_N0 = divisors(N0) |
| @@ -555,20 +612,16 @@ def total_kummer_failure_cachable_basis( B, torsion ): | |||
| 555 | FT[j][l] = lcm( FT[j][l], pp[1] ) | 612 | FT[j][l] = lcm( FT[j][l], pp[1] ) |
| 556 | 613 | ||
| 557 | # Adding l-adic failure to the table | 614 | # Adding l-adic failure to the table |
| 558 | for i in range( len( bad_p ) ): | 615 | for i in range( len( bad_primes ) ): |
| 559 | l = bad_p[i] | 616 | l = bad_primes[i] |
| 560 | for j in range(len(divs_N0)): | 617 | for j in range(len(divs_N0)): |
| 561 | dN = divs_N0[j] | 618 | dN = divs_N0[j] |
| 562 | fl = l_adic_failure_from_data(B,l,l_adic_failure_table[i],dN,dN) | 619 | fl = l_adic_failure_from_data(B,l,l_adic_failure_table[i],dN,dN) |
| 563 | for h in range(len(divs_M0)): | 620 | for h in range(len(divs_M0)): |
| 564 | FT[j][h] *= fl | 621 | FT[j][h] *= fl |
| 565 | 622 | ||
| 566 | return ( ( r, torsion ), ( M0, divs_M0 ), ( N0, divs_N0 ), FT ) | 623 | ret = ( ( r, torsion ), ( M0, divs_M0 ), ( N0, divs_N0 ), FT ) |
| 567 | 624 | ||
| 568 | def total_kummer_failure( G, output ): | ||
| 569 | |||
| 570 | ret = total_kummer_failure_cachable( frozenset(G) ) | ||
| 571 | |||
| 572 | if output: | 625 | if output: |
| 573 | print_total_table( ret ) | 626 | print_total_table( ret ) |
| 574 | # Uncomment following line for case list description. | 627 | # Uncomment following line for case list description. |
| @@ -581,9 +634,9 @@ def total_kummer_failure( G, output ): | |||
| 581 | # as the ration between 2^eN^r and the degree of Q_{M,N} over Q_M, where e=1 | 634 | # as the ration between 2^eN^r and the degree of Q_{M,N} over Q_M, where e=1 |
| 582 | # if N is even and e=0 otherwise. | 635 | # if N is even and e=0 otherwise. |
| 583 | 636 | ||
| 584 | # Makes the failure table for the torsion case when M/N is even. In this | 637 | # Makes the failure table for the torsion case when M/N is even. In this case, |
| 585 | # case an entry of the table is doubled if the corresponding value of N | 638 | # an entry of the table is doubled if the corresponding value of N (actually, |
| 586 | # (actually, of gcd(N,N0) ) is even, and is kept the same otherwise. | 639 | # of gcd(N,N0) ) is even, and is kept the same otherwise. |
| 587 | # The expected degree (over Q) 2^e * phi(M) * N^r, where e=1 if N is even and | 640 | # The expected degree (over Q) 2^e * phi(M) * N^r, where e=1 if N is even and |
| 588 | # e=0 otherwise. | 641 | # e=0 otherwise. |
| 589 | def torsion_table_even( data ): | 642 | def torsion_table_even( data ): |
| @@ -600,8 +653,8 @@ def torsion_table_even( data ): | |||
| 600 | 653 | ||
| 601 | # Makes the failure table for the torsion case when M/N is odd. In this case | 654 | # Makes the failure table for the torsion case when M/N is odd. In this case |
| 602 | # the entry at (M,N) is taken from the torsion-free entry at (2M,N). | 655 | # the entry at (M,N) is taken from the torsion-free entry at (2M,N). |
| 603 | # In other words, the expected degree (over Q) 2^e * phi(M) * N^r, where e=1 | 656 | # In other words, the expected degree (over Q) 2^e * phi(M) * N^r, where e=1 if |
| 604 | # if N is even and e=0 otherwise. | 657 | # N is even and e=0 otherwise. |
| 605 | def torsion_table_odd( data ): | 658 | def torsion_table_odd( data ): |
| 606 | 659 | ||
| 607 | ( ( r, torsion ), ( M0, divs_M0 ), ( N0, divs_N0 ), FT ) = data | 660 | ( ( r, torsion ), ( M0, divs_M0 ), ( N0, divs_N0 ), FT ) = data |
| @@ -625,101 +678,114 @@ def print_total_table( data ): | |||
| 625 | 678 | ||
| 626 | ( ( r, torsion ), ( M0, divs_M0 ), ( N0, divs_N0 ), FT ) = data | 679 | ( ( r, torsion ), ( M0, divs_M0 ), ( N0, divs_N0 ), FT ) = data |
| 627 | 680 | ||
| 628 | print "M_0 =", M0 | 681 | print( "M_0 =", M0 ) |
| 629 | print "N_0 =", N0 | 682 | print( "N_0 =", N0 ) |
| 630 | print "" | 683 | print( "" ) |
| 631 | print "The following table shows the total failure of Kummer", | 684 | print( "The following table shows the total failure of Kummer degrees", end="" ) |
| 632 | if torsion: | ||
| 633 | print "degrees in case the quotient M/N is EVEN." | ||
| 634 | else: | ||
| 635 | print "degrees." | ||
| 636 | print "The degree of the Kummer extension (M,N) is e / f, where", | ||
| 637 | if torsion: | 685 | if torsion: |
| 638 | print "e = phi(M)*N^rank(G) if N is odd and e = 2*phi(M)*N^rank(G)", | 686 | print( "in\n case the quotient M/N is EVEN." ) |
| 639 | print "if N is even", | ||
| 640 | else: | 687 | else: |
| 641 | print "e = phi(M)*N^rank(G)", | 688 | print( "." ) |
| 642 | print "and f is the entry of the table below at the row labelled with", | 689 | print( "Columns correspond to values of M, rows to values of N" ) |
| 643 | print "gcd(N,N0) and the column labelled with gcd(M,M0)." | 690 | print( "" ) |
| 644 | print "" | 691 | print( "The degree of the Kummer extension (M,N) can be extracted by taking" ) |
| 645 | 692 | print( "the value f (failure) of the entry at (gcd(N,N0),gcd(M,M0)) and" ) | |
| 693 | print( "simply computing ed(M,N) / f, where ed(M,N) is the expected degree" ) | ||
| 694 | print( "of the Kummer extension." ) | ||
| 646 | if torsion: | 695 | if torsion: |
| 696 | print( "In this case (-1 is in G), we have ed(M,N) = 2^e*phi(M)*N^r," ) | ||
| 697 | print( "where e=1 if N is even and e=0 if N is odd." ) | ||
| 647 | FT1 = torsion_table_even( data ) | 698 | FT1 = torsion_table_even( data ) |
| 648 | else: | 699 | else: |
| 700 | print( "In this case (G is torsion-free) we have ed(M,N) = phi(M)*N^r," ) | ||
| 649 | FT1 = FT | 701 | FT1 = FT |
| 702 | print( "where r is the rank of G." ) | ||
| 703 | print( "" ) | ||
| 650 | 704 | ||
| 651 | tt = [ ["","|"] + divs_M0 ] | 705 | tt = [ ["","|"] + divs_M0 ] |
| 652 | tt.append( "-" * (len(divs_M0)+2) ) | 706 | tt.append( "-" * (len(divs_M0)+2) ) |
| 653 | for i in range(len(divs_N0)): | 707 | for i in range(len(divs_N0)): |
| 654 | tt.append( [ divs_N0[i] ] + ["|"] + FT1[i] ) | 708 | tt.append( [ divs_N0[i] ] + ["|"] + FT1[i] ) |
| 655 | print table(tt) | 709 | print( table(tt) ) |
| 656 | print "" | 710 | print( "" ) |
| 657 | 711 | ||
| 658 | if torsion: | 712 | if torsion: |
| 659 | print "The following table shows the total failure of Kummer degrees", | 713 | print( "The following table shows the total failure of Kummer degrees in" ) |
| 660 | print "if the quotient M/N is ODD and is read as the previous one." | 714 | print( "case the quotient M/N is ODD." ) |
| 661 | print "" | 715 | print( "This table can be read exactly as the first one." ) |
| 716 | print( "" ) | ||
| 662 | 717 | ||
| 663 | # A good strategy is the following: | 718 | # A good strategy is the following: |
| 664 | # A little translation exercise: the failure at (M,N) in the torsion | 719 | # A little translation exercise: the failure at (M,N) in the torsion |
| 665 | # case is either the same as that for (2M,N) in the torsion-free | 720 | # case is either the same as that for (2M,N) in the torsion-free case |
| 666 | # case (if M is even) or its double (if M is odd). | 721 | # (if M is even) or its double (if M is odd). |
| 667 | # However, due to problems in reading the table for bigger M, it is | 722 | # However, due to problems in reading the table for bigger M, it is |
| 668 | # easier to just compute the degree every time, and then deduce the | 723 | # easier to just compute the degree every time, and then deduce the |
| 669 | # failure. This is not too inefficient, since we can use the data | 724 | # failure. This is not too inefficient, since we can use the data that |
| 670 | # that we have already computed via kummer_degree_from_total_table. | 725 | # we have already computed via kummer_degree_from_total_table. |
| 671 | new_FT = torsion_table_odd( data ) | 726 | new_FT = torsion_table_odd( data ) |
| 672 | # Printing the new table | 727 | # Printing the new table |
| 673 | tt = [ ["","|"] + divs_M0 ] | 728 | tt = [ ["","|"] + divs_M0 ] |
| 674 | tt.append( "-" * (len(divs_M0)+2) ) | 729 | tt.append( "-" * (len(divs_M0)+2) ) |
| 675 | for i in range(len(divs_N0)): | 730 | for i in range(len(divs_N0)): |
| 676 | tt.append( [ divs_N0[i] ] + ["|"] + new_FT[i] ) | 731 | tt.append( [ divs_N0[i] ] + ["|"] + new_FT[i] ) |
| 677 | print table(tt) | 732 | print( table(tt) ) |
| 678 | print "" | 733 | print( "" ) |
| 679 | 734 | ||
| 680 | def print_case_list( data ): | 735 | def print_case_list( data ): |
| 681 | 736 | ||
| 682 | ( ( r, torsion ), ( M0, divs_M0 ), ( N0, divs_N0 ), FT ) = data | 737 | ( ( r, torsion ), ( M0, divs_M0 ), ( N0, divs_N0 ), FT ) = data |
| 683 | FT_odd = torsion_table_odd( data ) | ||
| 684 | 738 | ||
| 739 | FT_odd = torsion_table_odd( data ) | ||
| 740 | # FT1 is either FT or FT_even in the torsion case | ||
| 741 | FT1 = FT | ||
| 685 | if torsion: | 742 | if torsion: |
| 686 | FT1 = torsion_table_even( data ) | 743 | FT1 = torsion_table_even( data ) |
| 687 | pf = sorted(list({ x for row in FT_odd for x in row })) | 744 | pf = [] |
| 688 | else: | 745 | for row in FT1: |
| 689 | FT1 = FT | 746 | pf += row |
| 690 | pf = sorted(list({ x for row in FT1 for x in row })) | 747 | if torsion: |
| 691 | 748 | for row in FT_odd: | |
| 749 | pf += row | ||
| 750 | pf = list(set(pf)) | ||
| 751 | pf.sort() | ||
| 692 | for f in pf: | 752 | for f in pf: |
| 693 | print "Failure is", f, "if", | 753 | print( "Failure is", f, "if", end="" ) |
| 694 | if torsion: | 754 | if torsion: |
| 695 | print "M/N is EVEN and", | 755 | print( "M/N is EVEN and", end="" ) |
| 696 | print "(gcd(M,M0),gcd(N,N0)) is one of the following:" | 756 | print( "(gcd(M,M0),gcd(N,N0)) is one of the following:" ) |
| 697 | print [ (divs_M0[j], divs_N0[i]) \ | 757 | lijst = [] |
| 698 | for i in range(len(divs_N0)) for j in range(len(divs_M0)) \ | 758 | for i in range(len(divs_N0)): |
| 699 | if FT1[i][j] == f ] | 759 | for j in range(len(divs_M0)): |
| 700 | 760 | if FT1[i][j] == f: | |
| 761 | lijst.append( ( divs_M0[j], divs_N0[i] ) ) | ||
| 762 | print( lijst ) | ||
| 701 | if torsion: | 763 | if torsion: |
| 702 | print "or if M/N is ODD and (gcd(M,M0)),gcd(N,N0)) is one of the", | 764 | print( "or if M/N is ODD and (gcd(M,M0)),gcd(N,N0)) is one of the", end="" ) |
| 703 | print "following:" | 765 | print( "following:" ) |
| 704 | print [ (divs_M0[j], divs_N0[i]) \ | ||
| 705 | for i in range(len(divs_N0)) for j in range(len(divs_M0))\ | ||
| 706 | if FT_odd[i][j] == f ] | ||
| 707 | 766 | ||
| 708 | print "" | 767 | lijst_odd = [] |
| 768 | for i in range(len(divs_N0)): | ||
| 769 | for j in range(len(divs_M0)): | ||
| 770 | if FT_odd[i][j] == f: | ||
| 771 | lijst_odd.append( ( divs_M0[j], divs_N0[i] ) ) | ||
| 772 | print( lijst_odd ) | ||
| 773 | |||
| 774 | print( "" ) | ||
| 709 | 775 | ||
| 710 | # Extracts a specific value of failure from the total table. | 776 | # Extracts a specific value of failure from the total table. |
| 711 | def kummer_failure_from_total_table( M, N, data ): | 777 | def kummer_failure_from_total_table( M, N, data ): |
| 712 | ( ( r, torsion ), ( M0, divs_M0 ), ( N0, divs_N0 ), FT ) = data | 778 | ( ( r, torsion ), ( M0, divs_M0 ), ( N0, divs_N0 ), FT ) = data |
| 713 | 779 | FT1 = FT | |
| 714 | if torsion: | 780 | if torsion: |
| 715 | if (M/N) % 2 == 0: | 781 | if (M/N) % 2 == 0: |
| 716 | FT1 = torsion_table_even( data ) | 782 | FT1 = torsion_table_even( data ) |
| 717 | else: | 783 | else: |
| 718 | FT1 = torsion_table_odd( data ) | 784 | FT1 = torsion_table_odd( data ) |
| 719 | else: | ||
| 720 | FT1 = FT | ||
| 721 | 785 | ||
| 722 | return FT1[divs_N0.index( gcd( N, N0 ) )][divs_M0.index( gcd( M, M0 ) )] | 786 | i = divs_N0.index( gcd( N, N0 ) ) |
| 787 | j = divs_M0.index( gcd( M, M0 ) ) | ||
| 788 | return FT1[i][j] | ||
| 723 | 789 | ||
| 724 | # Computes the degree of the Kummer extension (M,N), by taking as input the | 790 | # Computes the degree of the Kummer extension (M,N), by taking as input the |
| 725 | # table computed by TotalKummerFailure. | 791 | # table computed by TotalKummerFailure. |
| @@ -737,17 +803,20 @@ def kummer_degree_from_total_table( M, N, data ): | |||
| 737 | # M must be a multiple of N. | 803 | # M must be a multiple of N. |
| 738 | def KummerDegree( G, M, N ): | 804 | def KummerDegree( G, M, N ): |
| 739 | if M % N != 0: | 805 | if M % N != 0: |
| 740 | print "M is not a multiple of N" | 806 | print( "M is not a multiple of N" ) |
| 741 | return -1 | 807 | return -1 |
| 742 | 808 | ||
| 743 | data = total_kummer_failure(G,False) | 809 | data = total_kummer_failure(G,False) |
| 744 | ((r,torsion),(M0,divs_M0),(N0,divs_N0),FT) = data | 810 | ((r,torsion),(M0,divs_M0),(N0,divs_N0),FT) = data |
| 745 | 811 | ||
| 746 | e_deg = euler_phi(M) * N^r | 812 | exp_deg = euler_phi(M) * N^r |
| 747 | 813 | ||
| 748 | if torsion and N % 2 == 0: | 814 | if torsion and N % 2 == 0: |
| 749 | e_deg *= 2 | 815 | exp_deg *= 2 |
| 750 | 816 | ||
| 817 | j = divs_M0.index(gcd(M,M0)) | ||
| 818 | i = divs_N0.index(gcd(N,N0)) | ||
| 819 | |||
| 751 | if torsion: | 820 | if torsion: |
| 752 | if (M/N)%2 == 0: | 821 | if (M/N)%2 == 0: |
| 753 | failure = torsion_table_even( data ) | 822 | failure = torsion_table_even( data ) |
| @@ -756,5 +825,4 @@ def KummerDegree( G, M, N ): | |||
| 756 | else: | 825 | else: |
| 757 | failure = FT | 826 | failure = FT |
| 758 | 827 | ||
| 759 | return e_deg/failure[divs_N0.index(gcd(N,N0))][divs_M0.index(gcd(M,M0))] | 828 | return exp_deg / failure[i][j] |
| 760 | |||
diff --git a/tex/README b/tex/README new file mode 100644 index 0000000..0cfde24 --- /dev/null +++ b/tex/README | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | Here we collect some incomplete and work-in-progress documentation. | ||
| 2 | |||
| 3 | In compute_degrees we prove that our way to compute the degrees gives the | ||
| 4 | correct result. | ||
| 5 | |||
| 6 | In af_code we break down the code for the "adelic failure" part of the script | ||
| 7 | and we check that it computes the degrees as described in compute_degrees. | ||
diff --git a/tex/af_code.aux b/tex/af_code.aux new file mode 100644 index 0000000..1f8fc85 --- /dev/null +++ b/tex/af_code.aux | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | \relax | ||
| 2 | \citation{PST1} | ||
| 3 | \citation{PST1} | ||
| 4 | \citation{DebryPerucca} | ||
| 5 | \@writefile{loa}{\contentsline {algorithm}{\numberline {1}{\ignorespaces Compute the adelic failure}}{2}} | ||
| 6 | \@writefile{loa}{\contentsline {algorithm}{\numberline {2}{\ignorespaces Adelic failure, case $G\leq \mathbb {Q}^\times $}}{4}} | ||
| 7 | \@writefile{loa}{\contentsline {algorithm}{\numberline {3}{\ignorespaces Adelic failure, case $d\not =-1$, $n\leq d$}}{5}} | ||
| 8 | \@writefile{loa}{\contentsline {algorithm}{\numberline {4}{\ignorespaces Adelic failure, case $d\not =-1$, $n\geq d+2$}}{6}} | ||
| 9 | \@writefile{loa}{\contentsline {algorithm}{\numberline {5}{\ignorespaces Adelic failure, case $d\not =-1$, $n= d+1$}}{7}} | ||
| 10 | \bibcite{DebryPerucca}{1} | ||
| 11 | \bibcite{PST1}{2} | ||
diff --git a/tex/af_code.log b/tex/af_code.log new file mode 100644 index 0000000..126f78c --- /dev/null +++ b/tex/af_code.log | |||
| @@ -0,0 +1,764 @@ | |||
| 1 | This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2019.9.20) 20 SEP 2019 10:04 | ||
| 2 | entering extended mode | ||
| 3 | \write18 enabled. | ||
| 4 | %&-line parsing enabled. | ||
| 5 | **af_code.tex | ||
| 6 | (./af_code.tex | ||
| 7 | LaTeX2e <2017-04-15> | ||
| 8 | Babel <3.18> and hyphenation patterns for 18 language(s) loaded. | ||
| 9 | (/usr/share/texlive/texmf-dist/tex/latex/base/report.cls | ||
| 10 | Document Class: report 2014/09/29 v1.4h Standard LaTeX document class | ||
| 11 | (/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo | ||
| 12 | File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) | ||
| 13 | ) | ||
| 14 | \c@part=\count79 | ||
| 15 | \c@chapter=\count80 | ||
| 16 | \c@section=\count81 | ||
| 17 | \c@subsection=\count82 | ||
| 18 | \c@subsubsection=\count83 | ||
| 19 | \c@paragraph=\count84 | ||
| 20 | \c@subparagraph=\count85 | ||
| 21 | \c@figure=\count86 | ||
| 22 | \c@table=\count87 | ||
| 23 | \abovecaptionskip=\skip41 | ||
| 24 | \belowcaptionskip=\skip42 | ||
| 25 | \bibindent=\dimen102 | ||
| 26 | ) | ||
| 27 | (/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty | ||
| 28 | Package: inputenc 2015/03/17 v1.2c Input encoding file | ||
| 29 | \inpenc@prehook=\toks14 | ||
| 30 | \inpenc@posthook=\toks15 | ||
| 31 | |||
| 32 | (/usr/share/texlive/texmf-dist/tex/latex/base/utf8.def | ||
| 33 | File: utf8.def 2017/01/28 v1.1t UTF-8 support for inputenc | ||
| 34 | Now handling font encoding OML ... | ||
| 35 | ... no UTF-8 mapping file for font encoding OML | ||
| 36 | Now handling font encoding T1 ... | ||
| 37 | ... processing UTF-8 mapping file for font encoding T1 | ||
| 38 | |||
| 39 | (/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.dfu | ||
| 40 | File: t1enc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc | ||
| 41 | defining Unicode char U+00A0 (decimal 160) | ||
| 42 | defining Unicode char U+00A1 (decimal 161) | ||
| 43 | defining Unicode char U+00A3 (decimal 163) | ||
| 44 | defining Unicode char U+00AB (decimal 171) | ||
| 45 | defining Unicode char U+00AD (decimal 173) | ||
| 46 | defining Unicode char U+00BB (decimal 187) | ||
| 47 | defining Unicode char U+00BF (decimal 191) | ||
| 48 | defining Unicode char U+00C0 (decimal 192) | ||
| 49 | defining Unicode char U+00C1 (decimal 193) | ||
| 50 | defining Unicode char U+00C2 (decimal 194) | ||
| 51 | defining Unicode char U+00C3 (decimal 195) | ||
| 52 | defining Unicode char U+00C4 (decimal 196) | ||
| 53 | defining Unicode char U+00C5 (decimal 197) | ||
| 54 | defining Unicode char U+00C6 (decimal 198) | ||
| 55 | defining Unicode char U+00C7 (decimal 199) | ||
| 56 | defining Unicode char U+00C8 (decimal 200) | ||
| 57 | defining Unicode char U+00C9 (decimal 201) | ||
| 58 | defining Unicode char U+00CA (decimal 202) | ||
| 59 | defining Unicode char U+00CB (decimal 203) | ||
| 60 | defining Unicode char U+00CC (decimal 204) | ||
| 61 | defining Unicode char U+00CD (decimal 205) | ||
| 62 | defining Unicode char U+00CE (decimal 206) | ||
| 63 | defining Unicode char U+00CF (decimal 207) | ||
| 64 | defining Unicode char U+00D0 (decimal 208) | ||
| 65 | defining Unicode char U+00D1 (decimal 209) | ||
| 66 | defining Unicode char U+00D2 (decimal 210) | ||
| 67 | defining Unicode char U+00D3 (decimal 211) | ||
| 68 | defining Unicode char U+00D4 (decimal 212) | ||
| 69 | defining Unicode char U+00D5 (decimal 213) | ||
| 70 | defining Unicode char U+00D6 (decimal 214) | ||
| 71 | defining Unicode char U+00D8 (decimal 216) | ||
| 72 | defining Unicode char U+00D9 (decimal 217) | ||
| 73 | defining Unicode char U+00DA (decimal 218) | ||
| 74 | defining Unicode char U+00DB (decimal 219) | ||
| 75 | defining Unicode char U+00DC (decimal 220) | ||
| 76 | defining Unicode char U+00DD (decimal 221) | ||
| 77 | defining Unicode char U+00DE (decimal 222) | ||
| 78 | defining Unicode char U+00DF (decimal 223) | ||
| 79 | defining Unicode char U+00E0 (decimal 224) | ||
| 80 | defining Unicode char U+00E1 (decimal 225) | ||
| 81 | defining Unicode char U+00E2 (decimal 226) | ||
| 82 | defining Unicode char U+00E3 (decimal 227) | ||
| 83 | defining Unicode char U+00E4 (decimal 228) | ||
| 84 | defining Unicode char U+00E5 (decimal 229) | ||
| 85 | defining Unicode char U+00E6 (decimal 230) | ||
| 86 | defining Unicode char U+00E7 (decimal 231) | ||
| 87 | defining Unicode char U+00E8 (decimal 232) | ||
| 88 | defining Unicode char U+00E9 (decimal 233) | ||
| 89 | defining Unicode char U+00EA (decimal 234) | ||
| 90 | defining Unicode char U+00EB (decimal 235) | ||
| 91 | defining Unicode char U+00EC (decimal 236) | ||
| 92 | defining Unicode char U+00ED (decimal 237) | ||
| 93 | defining Unicode char U+00EE (decimal 238) | ||
| 94 | defining Unicode char U+00EF (decimal 239) | ||
| 95 | defining Unicode char U+00F0 (decimal 240) | ||
| 96 | defining Unicode char U+00F1 (decimal 241) | ||
| 97 | defining Unicode char U+00F2 (decimal 242) | ||
| 98 | defining Unicode char U+00F3 (decimal 243) | ||
| 99 | defining Unicode char U+00F4 (decimal 244) | ||
| 100 | defining Unicode char U+00F5 (decimal 245) | ||
| 101 | defining Unicode char U+00F6 (decimal 246) | ||
| 102 | defining Unicode char U+00F8 (decimal 248) | ||
| 103 | defining Unicode char U+00F9 (decimal 249) | ||
| 104 | defining Unicode char U+00FA (decimal 250) | ||
| 105 | defining Unicode char U+00FB (decimal 251) | ||
| 106 | defining Unicode char U+00FC (decimal 252) | ||
| 107 | defining Unicode char U+00FD (decimal 253) | ||
| 108 | defining Unicode char U+00FE (decimal 254) | ||
| 109 | defining Unicode char U+00FF (decimal 255) | ||
| 110 | defining Unicode char U+0100 (decimal 256) | ||
| 111 | defining Unicode char U+0101 (decimal 257) | ||
| 112 | defining Unicode char U+0102 (decimal 258) | ||
| 113 | defining Unicode char U+0103 (decimal 259) | ||
| 114 | defining Unicode char U+0104 (decimal 260) | ||
| 115 | defining Unicode char U+0105 (decimal 261) | ||
| 116 | defining Unicode char U+0106 (decimal 262) | ||
| 117 | defining Unicode char U+0107 (decimal 263) | ||
| 118 | defining Unicode char U+0108 (decimal 264) | ||
| 119 | defining Unicode char U+0109 (decimal 265) | ||
| 120 | defining Unicode char U+010A (decimal 266) | ||
| 121 | defining Unicode char U+010B (decimal 267) | ||
| 122 | defining Unicode char U+010C (decimal 268) | ||
| 123 | defining Unicode char U+010D (decimal 269) | ||
| 124 | defining Unicode char U+010E (decimal 270) | ||
| 125 | defining Unicode char U+010F (decimal 271) | ||
| 126 | defining Unicode char U+0110 (decimal 272) | ||
| 127 | defining Unicode char U+0111 (decimal 273) | ||
| 128 | defining Unicode char U+0112 (decimal 274) | ||
| 129 | defining Unicode char U+0113 (decimal 275) | ||
| 130 | defining Unicode char U+0114 (decimal 276) | ||
| 131 | defining Unicode char U+0115 (decimal 277) | ||
| 132 | defining Unicode char U+0116 (decimal 278) | ||
| 133 | defining Unicode char U+0117 (decimal 279) | ||
| 134 | defining Unicode char U+0118 (decimal 280) | ||
| 135 | defining Unicode char U+0119 (decimal 281) | ||
| 136 | defining Unicode char U+011A (decimal 282) | ||
| 137 | defining Unicode char U+011B (decimal 283) | ||
| 138 | defining Unicode char U+011C (decimal 284) | ||
| 139 | defining Unicode char U+011D (decimal 285) | ||
| 140 | defining Unicode char U+011E (decimal 286) | ||
| 141 | defining Unicode char U+011F (decimal 287) | ||
| 142 | defining Unicode char U+0120 (decimal 288) | ||
| 143 | defining Unicode char U+0121 (decimal 289) | ||
| 144 | defining Unicode char U+0122 (decimal 290) | ||
| 145 | defining Unicode char U+0123 (decimal 291) | ||
| 146 | defining Unicode char U+0124 (decimal 292) | ||
| 147 | defining Unicode char U+0125 (decimal 293) | ||
| 148 | defining Unicode char U+0128 (decimal 296) | ||
| 149 | defining Unicode char U+0129 (decimal 297) | ||
| 150 | defining Unicode char U+012A (decimal 298) | ||
| 151 | defining Unicode char U+012B (decimal 299) | ||
| 152 | defining Unicode char U+012C (decimal 300) | ||
| 153 | defining Unicode char U+012D (decimal 301) | ||
| 154 | defining Unicode char U+012E (decimal 302) | ||
| 155 | defining Unicode char U+012F (decimal 303) | ||
| 156 | defining Unicode char U+0130 (decimal 304) | ||
| 157 | defining Unicode char U+0131 (decimal 305) | ||
| 158 | defining Unicode char U+0132 (decimal 306) | ||
| 159 | defining Unicode char U+0133 (decimal 307) | ||
| 160 | defining Unicode char U+0134 (decimal 308) | ||
| 161 | defining Unicode char U+0135 (decimal 309) | ||
| 162 | defining Unicode char U+0136 (decimal 310) | ||
| 163 | defining Unicode char U+0137 (decimal 311) | ||
| 164 | defining Unicode char U+0139 (decimal 313) | ||
| 165 | defining Unicode char U+013A (decimal 314) | ||
| 166 | defining Unicode char U+013B (decimal 315) | ||
| 167 | defining Unicode char U+013C (decimal 316) | ||
| 168 | defining Unicode char U+013D (decimal 317) | ||
| 169 | defining Unicode char U+013E (decimal 318) | ||
| 170 | defining Unicode char U+0141 (decimal 321) | ||
| 171 | defining Unicode char U+0142 (decimal 322) | ||
| 172 | defining Unicode char U+0143 (decimal 323) | ||
| 173 | defining Unicode char U+0144 (decimal 324) | ||
| 174 | defining Unicode char U+0145 (decimal 325) | ||
| 175 | defining Unicode char U+0146 (decimal 326) | ||
| 176 | defining Unicode char U+0147 (decimal 327) | ||
| 177 | defining Unicode char U+0148 (decimal 328) | ||
| 178 | defining Unicode char U+014A (decimal 330) | ||
| 179 | defining Unicode char U+014B (decimal 331) | ||
| 180 | defining Unicode char U+014C (decimal 332) | ||
| 181 | defining Unicode char U+014D (decimal 333) | ||
| 182 | defining Unicode char U+014E (decimal 334) | ||
| 183 | defining Unicode char U+014F (decimal 335) | ||
| 184 | defining Unicode char U+0150 (decimal 336) | ||
| 185 | defining Unicode char U+0151 (decimal 337) | ||
| 186 | defining Unicode char U+0152 (decimal 338) | ||
| 187 | defining Unicode char U+0153 (decimal 339) | ||
| 188 | defining Unicode char U+0154 (decimal 340) | ||
| 189 | defining Unicode char U+0155 (decimal 341) | ||
| 190 | defining Unicode char U+0156 (decimal 342) | ||
| 191 | defining Unicode char U+0157 (decimal 343) | ||
| 192 | defining Unicode char U+0158 (decimal 344) | ||
| 193 | defining Unicode char U+0159 (decimal 345) | ||
| 194 | defining Unicode char U+015A (decimal 346) | ||
| 195 | defining Unicode char U+015B (decimal 347) | ||
| 196 | defining Unicode char U+015C (decimal 348) | ||
| 197 | defining Unicode char U+015D (decimal 349) | ||
| 198 | defining Unicode char U+015E (decimal 350) | ||
| 199 | defining Unicode char U+015F (decimal 351) | ||
| 200 | defining Unicode char U+0160 (decimal 352) | ||
| 201 | defining Unicode char U+0161 (decimal 353) | ||
| 202 | defining Unicode char U+0162 (decimal 354) | ||
| 203 | defining Unicode char U+0163 (decimal 355) | ||
| 204 | defining Unicode char U+0164 (decimal 356) | ||
| 205 | defining Unicode char U+0165 (decimal 357) | ||
| 206 | defining Unicode char U+0168 (decimal 360) | ||
| 207 | defining Unicode char U+0169 (decimal 361) | ||
| 208 | defining Unicode char U+016A (decimal 362) | ||
| 209 | defining Unicode char U+016B (decimal 363) | ||
| 210 | defining Unicode char U+016C (decimal 364) | ||
| 211 | defining Unicode char U+016D (decimal 365) | ||
| 212 | defining Unicode char U+016E (decimal 366) | ||
| 213 | defining Unicode char U+016F (decimal 367) | ||
| 214 | defining Unicode char U+0170 (decimal 368) | ||
| 215 | defining Unicode char U+0171 (decimal 369) | ||
| 216 | defining Unicode char U+0172 (decimal 370) | ||
| 217 | defining Unicode char U+0173 (decimal 371) | ||
| 218 | defining Unicode char U+0174 (decimal 372) | ||
| 219 | defining Unicode char U+0175 (decimal 373) | ||
| 220 | defining Unicode char U+0176 (decimal 374) | ||
| 221 | defining Unicode char U+0177 (decimal 375) | ||
| 222 | defining Unicode char U+0178 (decimal 376) | ||
| 223 | defining Unicode char U+0179 (decimal 377) | ||
| 224 | defining Unicode char U+017A (decimal 378) | ||
| 225 | defining Unicode char U+017B (decimal 379) | ||
| 226 | defining Unicode char U+017C (decimal 380) | ||
| 227 | defining Unicode char U+017D (decimal 381) | ||
| 228 | defining Unicode char U+017E (decimal 382) | ||
| 229 | defining Unicode char U+01CD (decimal 461) | ||
| 230 | defining Unicode char U+01CE (decimal 462) | ||
| 231 | defining Unicode char U+01CF (decimal 463) | ||
| 232 | defining Unicode char U+01D0 (decimal 464) | ||
| 233 | defining Unicode char U+01D1 (decimal 465) | ||
| 234 | defining Unicode char U+01D2 (decimal 466) | ||
| 235 | defining Unicode char U+01D3 (decimal 467) | ||
| 236 | defining Unicode char U+01D4 (decimal 468) | ||
| 237 | defining Unicode char U+01E2 (decimal 482) | ||
| 238 | defining Unicode char U+01E3 (decimal 483) | ||
| 239 | defining Unicode char U+01E6 (decimal 486) | ||
| 240 | defining Unicode char U+01E7 (decimal 487) | ||
| 241 | defining Unicode char U+01E8 (decimal 488) | ||
| 242 | defining Unicode char U+01E9 (decimal 489) | ||
| 243 | defining Unicode char U+01EA (decimal 490) | ||
| 244 | defining Unicode char U+01EB (decimal 491) | ||
| 245 | defining Unicode char U+01F0 (decimal 496) | ||
| 246 | defining Unicode char U+01F4 (decimal 500) | ||
| 247 | defining Unicode char U+01F5 (decimal 501) | ||
| 248 | defining Unicode char U+0218 (decimal 536) | ||
| 249 | defining Unicode char U+0219 (decimal 537) | ||
| 250 | defining Unicode char U+021A (decimal 538) | ||
| 251 | defining Unicode char U+021B (decimal 539) | ||
| 252 | defining Unicode char U+0232 (decimal 562) | ||
| 253 | defining Unicode char U+0233 (decimal 563) | ||
| 254 | defining Unicode char U+1E02 (decimal 7682) | ||
| 255 | defining Unicode char U+1E03 (decimal 7683) | ||
| 256 | defining Unicode char U+200C (decimal 8204) | ||
| 257 | defining Unicode char U+2010 (decimal 8208) | ||
| 258 | defining Unicode char U+2011 (decimal 8209) | ||
| 259 | defining Unicode char U+2012 (decimal 8210) | ||
| 260 | defining Unicode char U+2013 (decimal 8211) | ||
| 261 | defining Unicode char U+2014 (decimal 8212) | ||
| 262 | defining Unicode char U+2015 (decimal 8213) | ||
| 263 | defining Unicode char U+2018 (decimal 8216) | ||
| 264 | defining Unicode char U+2019 (decimal 8217) | ||
| 265 | defining Unicode char U+201A (decimal 8218) | ||
| 266 | defining Unicode char U+201C (decimal 8220) | ||
| 267 | defining Unicode char U+201D (decimal 8221) | ||
| 268 | defining Unicode char U+201E (decimal 8222) | ||
| 269 | defining Unicode char U+2030 (decimal 8240) | ||
| 270 | defining Unicode char U+2031 (decimal 8241) | ||
| 271 | defining Unicode char U+2039 (decimal 8249) | ||
| 272 | defining Unicode char U+203A (decimal 8250) | ||
| 273 | defining Unicode char U+2423 (decimal 9251) | ||
| 274 | defining Unicode char U+1E20 (decimal 7712) | ||
| 275 | defining Unicode char U+1E21 (decimal 7713) | ||
| 276 | ) | ||
| 277 | Now handling font encoding OT1 ... | ||
| 278 | ... processing UTF-8 mapping file for font encoding OT1 | ||
| 279 | |||
| 280 | (/usr/share/texlive/texmf-dist/tex/latex/base/ot1enc.dfu | ||
| 281 | File: ot1enc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc | ||
| 282 | defining Unicode char U+00A0 (decimal 160) | ||
| 283 | defining Unicode char U+00A1 (decimal 161) | ||
| 284 | defining Unicode char U+00A3 (decimal 163) | ||
| 285 | defining Unicode char U+00AD (decimal 173) | ||
| 286 | defining Unicode char U+00B8 (decimal 184) | ||
| 287 | defining Unicode char U+00BF (decimal 191) | ||
| 288 | defining Unicode char U+00C5 (decimal 197) | ||
| 289 | defining Unicode char U+00C6 (decimal 198) | ||
| 290 | defining Unicode char U+00D8 (decimal 216) | ||
| 291 | defining Unicode char U+00DF (decimal 223) | ||
| 292 | defining Unicode char U+00E6 (decimal 230) | ||
| 293 | defining Unicode char U+00EC (decimal 236) | ||
| 294 | defining Unicode char U+00ED (decimal 237) | ||
| 295 | defining Unicode char U+00EE (decimal 238) | ||
| 296 | defining Unicode char U+00EF (decimal 239) | ||
| 297 | defining Unicode char U+00F8 (decimal 248) | ||
| 298 | defining Unicode char U+0131 (decimal 305) | ||
| 299 | defining Unicode char U+0141 (decimal 321) | ||
| 300 | defining Unicode char U+0142 (decimal 322) | ||
| 301 | defining Unicode char U+0152 (decimal 338) | ||
| 302 | defining Unicode char U+0153 (decimal 339) | ||
| 303 | defining Unicode char U+0174 (decimal 372) | ||
| 304 | defining Unicode char U+0175 (decimal 373) | ||
| 305 | defining Unicode char U+0176 (decimal 374) | ||
| 306 | defining Unicode char U+0177 (decimal 375) | ||
| 307 | defining Unicode char U+0218 (decimal 536) | ||
| 308 | defining Unicode char U+0219 (decimal 537) | ||
| 309 | defining Unicode char U+021A (decimal 538) | ||
| 310 | defining Unicode char U+021B (decimal 539) | ||
| 311 | defining Unicode char U+2013 (decimal 8211) | ||
| 312 | defining Unicode char U+2014 (decimal 8212) | ||
| 313 | defining Unicode char U+2018 (decimal 8216) | ||
| 314 | defining Unicode char U+2019 (decimal 8217) | ||
| 315 | defining Unicode char U+201C (decimal 8220) | ||
| 316 | defining Unicode char U+201D (decimal 8221) | ||
| 317 | ) | ||
| 318 | Now handling font encoding OMS ... | ||
| 319 | ... processing UTF-8 mapping file for font encoding OMS | ||
| 320 | |||
| 321 | (/usr/share/texlive/texmf-dist/tex/latex/base/omsenc.dfu | ||
| 322 | File: omsenc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc | ||
| 323 | defining Unicode char U+00A7 (decimal 167) | ||
| 324 | defining Unicode char U+00B6 (decimal 182) | ||
| 325 | defining Unicode char U+00B7 (decimal 183) | ||
| 326 | defining Unicode char U+2020 (decimal 8224) | ||
| 327 | defining Unicode char U+2021 (decimal 8225) | ||
| 328 | defining Unicode char U+2022 (decimal 8226) | ||
| 329 | ) | ||
| 330 | Now handling font encoding OMX ... | ||
| 331 | ... no UTF-8 mapping file for font encoding OMX | ||
| 332 | Now handling font encoding U ... | ||
| 333 | ... no UTF-8 mapping file for font encoding U | ||
| 334 | defining Unicode char U+00A9 (decimal 169) | ||
| 335 | defining Unicode char U+00AA (decimal 170) | ||
| 336 | defining Unicode char U+00AE (decimal 174) | ||
| 337 | defining Unicode char U+00BA (decimal 186) | ||
| 338 | defining Unicode char U+02C6 (decimal 710) | ||
| 339 | defining Unicode char U+02DC (decimal 732) | ||
| 340 | defining Unicode char U+200C (decimal 8204) | ||
| 341 | defining Unicode char U+2026 (decimal 8230) | ||
| 342 | defining Unicode char U+2122 (decimal 8482) | ||
| 343 | defining Unicode char U+2423 (decimal 9251) | ||
| 344 | )) | ||
| 345 | (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty | ||
| 346 | Package: amsmath 2017/09/02 v2.17a AMS math features | ||
| 347 | \@mathmargin=\skip43 | ||
| 348 | |||
| 349 | For additional information on amsmath, use the `?' option. | ||
| 350 | (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty | ||
| 351 | Package: amstext 2000/06/29 v2.01 AMS text | ||
| 352 | |||
| 353 | (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty | ||
| 354 | File: amsgen.sty 1999/11/30 v2.0 generic functions | ||
| 355 | \@emptytoks=\toks16 | ||
| 356 | \ex@=\dimen103 | ||
| 357 | )) | ||
| 358 | (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty | ||
| 359 | Package: amsbsy 1999/11/29 v1.2d Bold Symbols | ||
| 360 | \pmbraise@=\dimen104 | ||
| 361 | ) | ||
| 362 | (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty | ||
| 363 | Package: amsopn 2016/03/08 v2.02 operator names | ||
| 364 | ) | ||
| 365 | \inf@bad=\count88 | ||
| 366 | LaTeX Info: Redefining \frac on input line 213. | ||
| 367 | \uproot@=\count89 | ||
| 368 | \leftroot@=\count90 | ||
| 369 | LaTeX Info: Redefining \overline on input line 375. | ||
| 370 | \classnum@=\count91 | ||
| 371 | \DOTSCASE@=\count92 | ||
| 372 | LaTeX Info: Redefining \ldots on input line 472. | ||
| 373 | LaTeX Info: Redefining \dots on input line 475. | ||
| 374 | LaTeX Info: Redefining \cdots on input line 596. | ||
| 375 | \Mathstrutbox@=\box26 | ||
| 376 | \strutbox@=\box27 | ||
| 377 | \big@size=\dimen105 | ||
| 378 | LaTeX Font Info: Redeclaring font encoding OML on input line 712. | ||
| 379 | LaTeX Font Info: Redeclaring font encoding OMS on input line 713. | ||
| 380 | \macc@depth=\count93 | ||
| 381 | \c@MaxMatrixCols=\count94 | ||
| 382 | \dotsspace@=\muskip10 | ||
| 383 | \c@parentequation=\count95 | ||
| 384 | \dspbrk@lvl=\count96 | ||
| 385 | \tag@help=\toks17 | ||
| 386 | \row@=\count97 | ||
| 387 | \column@=\count98 | ||
| 388 | \maxfields@=\count99 | ||
| 389 | \andhelp@=\toks18 | ||
| 390 | \eqnshift@=\dimen106 | ||
| 391 | \alignsep@=\dimen107 | ||
| 392 | \tagshift@=\dimen108 | ||
| 393 | \tagwidth@=\dimen109 | ||
| 394 | \totwidth@=\dimen110 | ||
| 395 | \lineht@=\dimen111 | ||
| 396 | \@envbody=\toks19 | ||
| 397 | \multlinegap=\skip44 | ||
| 398 | \multlinetaggap=\skip45 | ||
| 399 | \mathdisplay@stack=\toks20 | ||
| 400 | LaTeX Info: Redefining \[ on input line 2817. | ||
| 401 | LaTeX Info: Redefining \] on input line 2818. | ||
| 402 | ) | ||
| 403 | (/usr/share/texlive/texmf-dist/tex/latex/amscls/amsthm.sty | ||
| 404 | Package: amsthm 2017/10/31 v2.20.4 | ||
| 405 | \thm@style=\toks21 | ||
| 406 | \thm@bodyfont=\toks22 | ||
| 407 | \thm@headfont=\toks23 | ||
| 408 | \thm@notefont=\toks24 | ||
| 409 | \thm@headpunct=\toks25 | ||
| 410 | \thm@preskip=\skip46 | ||
| 411 | \thm@postskip=\skip47 | ||
| 412 | \thm@headsep=\skip48 | ||
| 413 | \dth@everypar=\toks26 | ||
| 414 | ) | ||
| 415 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xy.sty | ||
| 416 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xy.tex Bootstrap'ing: | ||
| 417 | catcodes, docmode, (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyrecat.tex | ||
| 418 | ) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyidioms.tex) | ||
| 419 | |||
| 420 | Xy-pic version 3.8.9 <2013/10/06> | ||
| 421 | Copyright (c) 1991-2013 by Kristoffer H. Rose <krisrose@tug.org> and others | ||
| 422 | Xy-pic is free software: see the User's Guide for details. | ||
| 423 | |||
| 424 | Loading kernel: messages; fonts; allocations: state, | ||
| 425 | \X@c=\dimen112 | ||
| 426 | \Y@c=\dimen113 | ||
| 427 | \U@c=\dimen114 | ||
| 428 | \D@c=\dimen115 | ||
| 429 | \L@c=\dimen116 | ||
| 430 | \R@c=\dimen117 | ||
| 431 | \Edge@c=\toks27 | ||
| 432 | \X@p=\dimen118 | ||
| 433 | \Y@p=\dimen119 | ||
| 434 | \U@p=\dimen120 | ||
| 435 | \D@p=\dimen121 | ||
| 436 | \L@p=\dimen122 | ||
| 437 | \R@p=\dimen123 | ||
| 438 | \Edge@p=\toks28 | ||
| 439 | \X@origin=\dimen124 | ||
| 440 | \Y@origin=\dimen125 | ||
| 441 | \X@xbase=\dimen126 | ||
| 442 | \Y@xbase=\dimen127 | ||
| 443 | \X@ybase=\dimen128 | ||
| 444 | \Y@ybase=\dimen129 | ||
| 445 | \X@min=\dimen130 | ||
| 446 | \Y@min=\dimen131 | ||
| 447 | \X@max=\dimen132 | ||
| 448 | \Y@max=\dimen133 | ||
| 449 | \lastobjectbox@=\box28 | ||
| 450 | \zerodotbox@=\box29 | ||
| 451 | \almostz@=\dimen134 | ||
| 452 | direction, | ||
| 453 | \d@X=\dimen135 | ||
| 454 | \d@Y=\dimen136 | ||
| 455 | \K@=\count100 | ||
| 456 | \KK@=\count101 | ||
| 457 | \Direction=\count102 | ||
| 458 | \K@dXdY=\dimen137 | ||
| 459 | \K@dYdX=\dimen138 | ||
| 460 | \xyread@=\read1 | ||
| 461 | \xywrite@=\write3 | ||
| 462 | \csp@=\count103 | ||
| 463 | \quotPTK@=\dimen139 | ||
| 464 | |||
| 465 | utility macros; pictures: \xy, positions, | ||
| 466 | \swaptoks@@=\toks29 | ||
| 467 | \connectobjectbox@@=\box30 | ||
| 468 | objects, | ||
| 469 | \styletoks@=\toks30 | ||
| 470 | decorations; | ||
| 471 | kernel objects: directionals, circles, text; options; algorithms: directions, | ||
| 472 | edges, connections; Xy-pic loaded) | ||
| 473 | (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty | ||
| 474 | Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch | ||
| 475 | ) | ||
| 476 | Package: xy 2013/10/06 Xy-pic version 3.8.9 | ||
| 477 | |||
| 478 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyall.tex | ||
| 479 | Xy-pic option: All features v.3.8 | ||
| 480 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xycurve.tex | ||
| 481 | Xy-pic option: Curve and Spline extension v.3.12 curve, | ||
| 482 | \crv@cnt@=\count104 | ||
| 483 | \crvpts@=\toks31 | ||
| 484 | \splinebox@=\box31 | ||
| 485 | \splineval@=\dimen140 | ||
| 486 | \splinedepth@=\dimen141 | ||
| 487 | \splinetol@=\dimen142 | ||
| 488 | \splinelength@=\dimen143 | ||
| 489 | circles, | ||
| 490 | \L@=\dimen144 | ||
| 491 | loaded) | ||
| 492 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyframe.tex | ||
| 493 | Xy-pic option: Frame and Bracket extension v.3.14 loaded) | ||
| 494 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xycmtip.tex | ||
| 495 | Xy-pic option: Computer Modern tip extension v.3.7 | ||
| 496 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xytips.tex | ||
| 497 | Xy-pic option: More Tips extension v.3.11 loaded) loaded) | ||
| 498 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyline.tex | ||
| 499 | Xy-pic option: Line styles extension v.3.10 | ||
| 500 | \xylinethick@=\dimen145 | ||
| 501 | loaded) | ||
| 502 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyrotate.tex | ||
| 503 | Xy-pic option: Rotate and Scale extension v.3.8 loaded) | ||
| 504 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xycolor.tex | ||
| 505 | Xy-pic option: Colour extension v.3.11 loaded) | ||
| 506 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xymatrix.tex | ||
| 507 | Xy-pic option: Matrix feature v.3.14 | ||
| 508 | \Row=\count105 | ||
| 509 | \Col=\count106 | ||
| 510 | \queue@=\toks32 | ||
| 511 | \queue@@=\toks33 | ||
| 512 | \qcount@=\count107 | ||
| 513 | \qcount@@=\count108 | ||
| 514 | \matrixsize@=\count109 | ||
| 515 | loaded) | ||
| 516 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyarrow.tex | ||
| 517 | Xy-pic option: Arrow and Path feature v.3.9 path, \ar, loaded) | ||
| 518 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xygraph.tex | ||
| 519 | Xy-pic option: Graph feature v.3.11 loaded) loaded) | ||
| 520 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xypdf.tex | ||
| 521 | Xy-pic option: PDF driver v.1.7 Xy-pic pdf driver: `color' extension support | ||
| 522 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xypdf-co.tex loaded) | ||
| 523 | Xy-pic pdf driver: `curve' extension support | ||
| 524 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xypdf-cu.tex loaded) | ||
| 525 | Xy-pic pdf driver: `frame' extension support | ||
| 526 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xypdf-fr.tex loaded) | ||
| 527 | Xy-pic pdf driver: `line' extension support | ||
| 528 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xypdf-li.tex loaded) | ||
| 529 | Xy-pic pdf driver: `rotate' extension support | ||
| 530 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xypdf-ro.tex loaded) loaded)) | ||
| 531 | (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty | ||
| 532 | Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support | ||
| 533 | \symAMSa=\mathgroup4 | ||
| 534 | \symAMSb=\mathgroup5 | ||
| 535 | LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' | ||
| 536 | (Font) U/euf/m/n --> U/euf/b/n on input line 106. | ||
| 537 | ) | ||
| 538 | (/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty | ||
| 539 | Package: color 2016/07/10 v1.1e Standard LaTeX Color (DPC) | ||
| 540 | |||
| 541 | (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg | ||
| 542 | File: color.cfg 2016/01/02 v1.6 sample color configuration | ||
| 543 | ) | ||
| 544 | Package color Info: Driver file: pdftex.def on input line 147. | ||
| 545 | |||
| 546 | (/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def | ||
| 547 | File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex | ||
| 548 | )) | ||
| 549 | (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty | ||
| 550 | Package: amssymb 2013/01/14 v3.01 AMS font symbols | ||
| 551 | ) | ||
| 552 | (/usr/share/texlive/texmf-dist/tex/latex/float/float.sty | ||
| 553 | Package: float 2001/11/08 v1.3d Float enhancements (AL) | ||
| 554 | \c@float@type=\count110 | ||
| 555 | \float@exts=\toks34 | ||
| 556 | \float@box=\box32 | ||
| 557 | \@float@everytoks=\toks35 | ||
| 558 | \@floatcapt=\box33 | ||
| 559 | ) | ||
| 560 | (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty | ||
| 561 | Package: geometry 2010/09/12 v5.6 Page Geometry | ||
| 562 | |||
| 563 | (/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty | ||
| 564 | Package: keyval 2014/10/28 v1.15 key=value parser (DPC) | ||
| 565 | \KV@toks@=\toks36 | ||
| 566 | ) | ||
| 567 | (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty | ||
| 568 | Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) | ||
| 569 | Package ifvtex Info: VTeX not detected. | ||
| 570 | ) | ||
| 571 | (/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty | ||
| 572 | Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional | ||
| 573 | ) | ||
| 574 | \Gm@cnth=\count111 | ||
| 575 | \Gm@cntv=\count112 | ||
| 576 | \c@Gm@tempcnt=\count113 | ||
| 577 | \Gm@bindingoffset=\dimen146 | ||
| 578 | \Gm@wd@mp=\dimen147 | ||
| 579 | \Gm@odd@mp=\dimen148 | ||
| 580 | \Gm@even@mp=\dimen149 | ||
| 581 | \Gm@layoutwidth=\dimen150 | ||
| 582 | \Gm@layoutheight=\dimen151 | ||
| 583 | \Gm@layouthoffset=\dimen152 | ||
| 584 | \Gm@layoutvoffset=\dimen153 | ||
| 585 | \Gm@dimlist=\toks37 | ||
| 586 | ) | ||
| 587 | (/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty | ||
| 588 | \lst@mode=\count114 | ||
| 589 | \lst@gtempboxa=\box34 | ||
| 590 | \lst@token=\toks38 | ||
| 591 | \lst@length=\count115 | ||
| 592 | \lst@currlwidth=\dimen154 | ||
| 593 | \lst@column=\count116 | ||
| 594 | \lst@pos=\count117 | ||
| 595 | \lst@lostspace=\dimen155 | ||
| 596 | \lst@width=\dimen156 | ||
| 597 | \lst@newlines=\count118 | ||
| 598 | \lst@lineno=\count119 | ||
| 599 | \lst@maxwidth=\dimen157 | ||
| 600 | |||
| 601 | (/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty | ||
| 602 | File: lstmisc.sty 2015/06/04 1.6 (Carsten Heinz) | ||
| 603 | \c@lstnumber=\count120 | ||
| 604 | \lst@skipnumbers=\count121 | ||
| 605 | \lst@framebox=\box35 | ||
| 606 | ) | ||
| 607 | (/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg | ||
| 608 | File: listings.cfg 2015/06/04 1.6 listings configuration | ||
| 609 | )) | ||
| 610 | Package: listings 2015/06/04 1.6 (Carsten Heinz) | ||
| 611 | |||
| 612 | (/usr/share/texlive/texmf-dist/tex/latex/algorithms/algorithm.sty | ||
| 613 | Package: algorithm 2009/08/24 v0.1 Document Style `algorithm' - floating enviro | ||
| 614 | nment | ||
| 615 | |||
| 616 | (/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty | ||
| 617 | Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) | ||
| 618 | ) | ||
| 619 | \@float@every@algorithm=\toks39 | ||
| 620 | \c@algorithm=\count122 | ||
| 621 | ) | ||
| 622 | (/usr/share/texlive/texmf-dist/tex/latex/algorithmicx/algpseudocode.sty | ||
| 623 | Package: algpseudocode | ||
| 624 | |||
| 625 | (/usr/share/texlive/texmf-dist/tex/latex/algorithmicx/algorithmicx.sty | ||
| 626 | Package: algorithmicx 2005/04/27 v1.2 Algorithmicx | ||
| 627 | |||
| 628 | Document Style algorithmicx 1.2 - a greatly improved `algorithmic' style | ||
| 629 | \c@ALG@line=\count123 | ||
| 630 | \c@ALG@rem=\count124 | ||
| 631 | \c@ALG@nested=\count125 | ||
| 632 | \ALG@tlm=\skip49 | ||
| 633 | \ALG@thistlm=\skip50 | ||
| 634 | \c@ALG@Lnr=\count126 | ||
| 635 | \c@ALG@blocknr=\count127 | ||
| 636 | \c@ALG@storecount=\count128 | ||
| 637 | \c@ALG@tmpcounter=\count129 | ||
| 638 | \ALG@tmplength=\skip51 | ||
| 639 | ) | ||
| 640 | Document Style - pseudocode environments for use with the `algorithmicx' style | ||
| 641 | ) | ||
| 642 | \c@lemma=\count130 | ||
| 643 | (./af_code.aux) | ||
| 644 | \openout1 = `af_code.aux'. | ||
| 645 | |||
| 646 | LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 105. | ||
| 647 | LaTeX Font Info: ... okay on input line 105. | ||
| 648 | LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 105. | ||
| 649 | LaTeX Font Info: ... okay on input line 105. | ||
| 650 | LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 105. | ||
| 651 | LaTeX Font Info: ... okay on input line 105. | ||
| 652 | LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 105. | ||
| 653 | LaTeX Font Info: ... okay on input line 105. | ||
| 654 | LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 105. | ||
| 655 | LaTeX Font Info: ... okay on input line 105. | ||
| 656 | LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 105. | ||
| 657 | LaTeX Font Info: ... okay on input line 105. | ||
| 658 | LaTeX Font Info: Try loading font information for U+msa on input line 105. | ||
| 659 | (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd | ||
| 660 | File: umsa.fd 2013/01/14 v3.01 AMS symbols A | ||
| 661 | ) | ||
| 662 | LaTeX Font Info: Try loading font information for U+msb on input line 105. | ||
| 663 | |||
| 664 | (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd | ||
| 665 | File: umsb.fd 2013/01/14 v3.01 AMS symbols B | ||
| 666 | ) | ||
| 667 | Package xypdf Info: Line width: 0.39998pt on input line 105. | ||
| 668 | |||
| 669 | (/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii | ||
| 670 | [Loading MPS to PDF converter (version 2006.09.02).] | ||
| 671 | \scratchcounter=\count131 | ||
| 672 | \scratchdimen=\dimen158 | ||
| 673 | \scratchbox=\box36 | ||
| 674 | \nofMPsegments=\count132 | ||
| 675 | \nofMParguments=\count133 | ||
| 676 | \everyMPshowfont=\toks40 | ||
| 677 | \MPscratchCnt=\count134 | ||
| 678 | \MPscratchDim=\dimen159 | ||
| 679 | \MPnumerator=\count135 | ||
| 680 | \makeMPintoPDFobject=\count136 | ||
| 681 | \everyMPtoPDFconversion=\toks41 | ||
| 682 | ) | ||
| 683 | *geometry* driver: auto-detecting | ||
| 684 | *geometry* detected driver: pdftex | ||
| 685 | *geometry* verbose mode - [ preamble ] result: | ||
| 686 | * driver: pdftex | ||
| 687 | * paper: a4paper | ||
| 688 | * layout: <same size as paper> | ||
| 689 | * layoutoffset:(h,v)=(0.0pt,0.0pt) | ||
| 690 | * modes: | ||
| 691 | * h-part:(L,W,R)=(71.13188pt, 455.24411pt, 71.13188pt) | ||
| 692 | * v-part:(T,H,B)=(85.35826pt, 674.33032pt, 85.35826pt) | ||
| 693 | * \paperwidth=597.50787pt | ||
| 694 | * \paperheight=845.04684pt | ||
| 695 | * \textwidth=455.24411pt | ||
| 696 | * \textheight=674.33032pt | ||
| 697 | * \oddsidemargin=-1.1381pt | ||
| 698 | * \evensidemargin=-1.1381pt | ||
| 699 | * \topmargin=-23.91173pt | ||
| 700 | * \headheight=12.0pt | ||
| 701 | * \headsep=25.0pt | ||
| 702 | * \topskip=10.0pt | ||
| 703 | * \footskip=30.0pt | ||
| 704 | * \marginparwidth=57.0pt | ||
| 705 | * \marginparsep=11.0pt | ||
| 706 | * \columnsep=10.0pt | ||
| 707 | * \skip\footins=9.0pt plus 4.0pt minus 2.0pt | ||
| 708 | * \hoffset=0.0pt | ||
| 709 | * \voffset=0.0pt | ||
| 710 | * \mag=1000 | ||
| 711 | * \@twocolumnfalse | ||
| 712 | * \@twosidefalse | ||
| 713 | * \@mparswitchfalse | ||
| 714 | * \@reversemarginfalse | ||
| 715 | * (1in=72.27pt=25.4mm, 1cm=28.453pt) | ||
| 716 | |||
| 717 | \c@lstlisting=\count137 | ||
| 718 | LaTeX Font Info: Try loading font information for OMS+cmr on input line 117. | ||
| 719 | |||
| 720 | (/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd | ||
| 721 | File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions | ||
| 722 | ) | ||
| 723 | LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available | ||
| 724 | (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 117. | ||
| 725 | [1 | ||
| 726 | |||
| 727 | |||
| 728 | {/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] [3] [4] [5] [6] [7] [8 | ||
| 729 | |||
| 730 | ] (./af_code.aux) ) | ||
| 731 | Here is how much of TeX's memory you used: | ||
| 732 | 7341 strings out of 494283 | ||
| 733 | 92388 string characters out of 6169691 | ||
| 734 | 205701 words of memory out of 5000000 | ||
| 735 | 10561 multiletter control sequences out of 15000+600000 | ||
| 736 | 14410 words of font info for 60 fonts, out of 8000000 for 9000 | ||
| 737 | 497 hyphenation exceptions out of 8191 | ||
| 738 | 27i,13n,32p,3239b,350s stack positions out of 5000i,500n,10000p,200000b,80000s | ||
| 739 | </usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/c | ||
| 740 | m/cmbx10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx | ||
| 741 | 12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmcsc10.pf | ||
| 742 | b></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></us | ||
| 743 | r/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/shar | ||
| 744 | e/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb></usr/share/texl | ||
| 745 | ive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb></usr/share/texlive/tex | ||
| 746 | mf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb></usr/share/texlive/texmf-dist | ||
| 747 | /fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/ | ||
| 748 | type1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/fonts/type1/p | ||
| 749 | ublic/amsfonts/cm/cmr5.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/am | ||
| 750 | sfonts/cm/cmr7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/c | ||
| 751 | m/cmr8.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10 | ||
| 752 | .pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5.pfb></ | ||
| 753 | usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb></usr/sha | ||
| 754 | re/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8.pfb></usr/share/texl | ||
| 755 | ive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr/share/texlive/te | ||
| 756 | xmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb></usr/share/texlive/texmf-di | ||
| 757 | st/fonts/type1/public/amsfonts/symbols/msbm10.pfb> | ||
| 758 | Output written on af_code.pdf (8 pages, 212906 bytes). | ||
| 759 | PDF statistics: | ||
| 760 | 111 PDF objects out of 1000 (max. 8388607) | ||
| 761 | 80 compressed objects within 1 object stream | ||
| 762 | 0 named destinations out of 1000 (max. 500000) | ||
| 763 | 1 words of extra memory for PDF output out of 10000 (max. 10000000) | ||
| 764 | |||
diff --git a/tex/af_code.pdf b/tex/af_code.pdf new file mode 100644 index 0000000..9fccfd5 --- /dev/null +++ b/tex/af_code.pdf | |||
| Binary files differ | |||
diff --git a/tex/af_code.synctex.gz b/tex/af_code.synctex.gz new file mode 100644 index 0000000..bbca130 --- /dev/null +++ b/tex/af_code.synctex.gz | |||
| Binary files differ | |||
diff --git a/tex/af_code.tex b/tex/af_code.tex new file mode 100644 index 0000000..96bd1e6 --- /dev/null +++ b/tex/af_code.tex | |||
| @@ -0,0 +1,474 @@ | |||
| 1 | \documentclass[10pt,a4paper]{report} | ||
| 2 | \usepackage[utf8]{inputenc} | ||
| 3 | \usepackage{amsmath} | ||
| 4 | \usepackage{amsthm} | ||
| 5 | \usepackage[all]{xy} | ||
| 6 | \usepackage{amsfonts} | ||
| 7 | \usepackage{color} | ||
| 8 | \usepackage{amssymb} | ||
| 9 | \usepackage{float} | ||
| 10 | \usepackage[a4paper, top=3cm, bottom=3cm, left=2.5cm, right=2.5cm]{geometry} | ||
| 11 | \usepackage{listings} | ||
| 12 | \usepackage{algorithm} | ||
| 13 | %\usepackage{algorithmic} | ||
| 14 | \usepackage{algpseudocode} | ||
| 15 | |||
| 16 | \DeclareMathOperator{\alg}{alg} | ||
| 17 | \DeclareMathOperator{\obj}{Obj} | ||
| 18 | \DeclareMathOperator{\Hom}{Hom} | ||
| 19 | \DeclareMathOperator{\End}{End} | ||
| 20 | \DeclareMathOperator{\hol}{Hol} | ||
| 21 | \DeclareMathOperator{\aut}{Aut} | ||
| 22 | \DeclareMathOperator{\gal}{Gal} | ||
| 23 | \DeclareMathOperator{\id}{id} | ||
| 24 | \DeclareMathOperator{\res}{res} | ||
| 25 | \DeclareMathOperator{\im}{Im} | ||
| 26 | \DeclareMathOperator{\Id}{Id} | ||
| 27 | \DeclareMathOperator{\fib}{Fib} | ||
| 28 | \DeclareMathOperator{\spec}{Spec} | ||
| 29 | \DeclareMathOperator{\proj}{Proj} | ||
| 30 | \DeclareMathOperator{\trdeg}{trdeg} | ||
| 31 | \DeclareMathOperator{\car}{char} | ||
| 32 | \DeclareMathOperator{\Frac}{Frac} | ||
| 33 | \DeclareMathOperator{\reduced}{red} | ||
| 34 | \DeclareMathOperator{\real}{Re} | ||
| 35 | \DeclareMathOperator{\imag}{Im} | ||
| 36 | \DeclareMathOperator{\vol}{vol} | ||
| 37 | \DeclareMathOperator{\den}{den} | ||
| 38 | \DeclareMathOperator{\rank}{rank} | ||
| 39 | \DeclareMathOperator{\lcm}{lcm} | ||
| 40 | \DeclareMathOperator{\rad}{rad} | ||
| 41 | \DeclareMathOperator{\ord}{ord} | ||
| 42 | \DeclareMathOperator{\Br}{Br} | ||
| 43 | \DeclareMathOperator{\inv}{inv} | ||
| 44 | \DeclareMathOperator{\Nm}{Nm} | ||
| 45 | \DeclareMathOperator{\Tr}{Tr} | ||
| 46 | \DeclareMathOperator{\an}{an} | ||
| 47 | \DeclareMathOperator{\op}{op} | ||
| 48 | \DeclareMathOperator{\sep}{sep} | ||
| 49 | \DeclareMathOperator{\unr}{unr} | ||
| 50 | \DeclareMathOperator{\et}{\acute et} | ||
| 51 | \DeclareMathOperator{\ev}{ev} | ||
| 52 | \DeclareMathOperator{\gl}{GL} | ||
| 53 | \DeclareMathOperator{\SL}{SL} | ||
| 54 | \DeclareMathOperator{\mat}{Mat} | ||
| 55 | \DeclareMathOperator{\ab}{ab} | ||
| 56 | \DeclareMathOperator{\tors}{tors} | ||
| 57 | \DeclareMathOperator{\ed}{ed} | ||
| 58 | |||
| 59 | \newcommand{\grp}{\textsc{Grp}} | ||
| 60 | \newcommand{\set}{\textsc{Set}} | ||
| 61 | \newcommand{\x}{\mathbf{x}} | ||
| 62 | \newcommand{\naturalto}{\overset{.}{\to}} | ||
| 63 | \newcommand{\qbar}{\overline{\mathbb{Q}}} | ||
| 64 | \newcommand{\zbar}{\overline{\mathbb{Z}}} | ||
| 65 | |||
| 66 | \newcommand{\pro}{\mathbb{P}} | ||
| 67 | \newcommand{\aff}{\mathbb{A}} | ||
| 68 | \newcommand{\quat}{\mathbb{H}} | ||
| 69 | \newcommand{\rea}{\mathbb{R}} | ||
| 70 | \newcommand{\kiu}{\mathbb{Q}} | ||
| 71 | \newcommand{\F}{\mathbb{F}} | ||
| 72 | \newcommand{\zee}{\mathbb{Z}} | ||
| 73 | \newcommand{\ow}{\mathcal{O}} | ||
| 74 | \newcommand{\mcx}{\mathcal{X}} | ||
| 75 | \newcommand{\mcy}{\mathcal{Y}} | ||
| 76 | \newcommand{\mcs}{\mathcal{S}} | ||
| 77 | \newcommand{\mca}{\mathcal{A}} | ||
| 78 | \newcommand{\mcb}{\mathcal{B}} | ||
| 79 | \newcommand{\mcf}{\mathcal{F}} | ||
| 80 | \newcommand{\mcg}{\mathcal{G}} | ||
| 81 | \newcommand{\mct}{\mathcal{T}} | ||
| 82 | \newcommand{\mcq}{\mathcal{Q}} | ||
| 83 | \newcommand{\mcr}{\mathcal{R}} | ||
| 84 | \newcommand{\adl}{\mathbf{A}} | ||
| 85 | \newcommand{\mbk}{\mathbf{k}} | ||
| 86 | \newcommand{\m}{\mathfrak{m}} | ||
| 87 | \newcommand{\p}{\mathfrak{p}} | ||
| 88 | |||
| 89 | \newcommand{\kbar}{\overline{K}} | ||
| 90 | |||
| 91 | \newtheorem{lemma}{Lemma} | ||
| 92 | \newtheorem{proposition}[lemma]{Proposition} | ||
| 93 | \newtheorem{conjecture}[lemma]{Conjecture} | ||
| 94 | \newtheorem{corollary}[lemma]{Corollary} | ||
| 95 | \newtheorem{definition}[lemma]{Definition} | ||
| 96 | \newtheorem{theorem}[lemma]{Theorem} | ||
| 97 | \newtheorem{cond-thm}[lemma]{Conditional Theorem} | ||
| 98 | \theoremstyle{definition} | ||
| 99 | \newtheorem{remark}[lemma]{Remark} | ||
| 100 | |||
| 101 | %\author{Sebastiano Tronto} | ||
| 102 | \title{Computation of the adelic failure} | ||
| 103 | |||
| 104 | |||
| 105 | \begin{document} | ||
| 106 | |||
| 107 | \chapter*{Computation of the adelic failure} | ||
| 108 | |||
| 109 | The aim of this document is bridge the gap between the theory developed in \cite{PST1} and the function \texttt{adelic\_failure\_gb} that computes the adelic failure. By reading \cite{PST1}, the pseudo-code in this file and the (commented) SageMath code, one can verify that the script produces the correct results. | ||
| 110 | |||
| 111 | We begin by giving the code for the function that computes the adelic failure, both in SageMath and in pseudocode. Then we procede to breaking it down into different subcases. | ||
| 112 | |||
| 113 | \section*{The SageMath code} | ||
| 114 | |||
| 115 | The function \texttt{adelic\_failure\_gb} takes two parameters as input: a list $B=\{B_0,\dots, B_t\}$ and an integer $d$. Each $B_i$ is itself a list of elements of $G$, and we require the following: | ||
| 116 | \begin{itemize} | ||
| 117 | \item Each element of $B_i=\{B_{i,0},\dots,B_{i,t_i}\}$ has $2$-divisibility $i$, using the terminology of \cite{DebryPerucca}. | ||
| 118 | \item $\mathcal{B}=\bigcup_{i=1}^t B_i$ is a $2$-maximal basis for $G$. | ||
| 119 | \item The integer $d$ is either $-1$ or $1\leq d\leq t$. For $i\in\{1,\dots,t\}\setminus\{d\}$ we have $B_i\subseteq \mathbb{Q}_+$. If $d\neq -1$ we have $B_{d,0}<0$ and $B_{d,j}>0$ for $j\neq 0$. | ||
| 120 | \end{itemize} | ||
| 121 | The output is a list $A=\{A_n\mid n\text{ divides }N_0\}$, indexed by the positive divisors of $N_0$, where $N_0=\max(3,t+1)$ if $d=t$, while $N_0=\max(3,t)$ otherwise. Each $A_n=\{A_{n,0},\dots,A_{n,r_n}\}$ is a list of pairs $A_{n,i}=(d_{n,i},f_{n,i})$. For each $n\mid N_0$ and each $i\leq r_n$, the integer $d_{n,i}$ is a divisor of $M_0=d_{N_0,r_{N_0}}$ and a multiple of $2^i$, and $f_{n,i}$ is the \emph{adelic failure}, that is the degree | ||
| 122 | \begin{align*} | ||
| 123 | f_{n,i}=\left[\mathbb{Q}_{2^i}\left(G^{1/2^i}\right)\cap \mathbb{Q}_{d_{n,i}}:\mathbb{Q}_{2^i}\right]. | ||
| 124 | \end{align*} | ||
| 125 | |||
| 126 | %\lstset{language=Python} | ||
| 127 | %\begin{lstlisting} | ||
| 128 | %def adelic_failure_gb( B, d ): | ||
| 129 | % | ||
| 130 | % ad_fail = [] # The table to be returned at the end. | ||
| 131 | % | ||
| 132 | % if d == len(B)-1: | ||
| 133 | % N = max(3,len(B)+1) | ||
| 134 | % else: | ||
| 135 | % N = max(3,len(B)) | ||
| 136 | % | ||
| 137 | % # The shortlist grows at each step, so we build it incrementally. | ||
| 138 | % shortlist = [] | ||
| 139 | % # The "special element" is (n,b) = \zeta_{2^n}\sqrt{b}. | ||
| 140 | % special_element = (1,1) | ||
| 141 | % | ||
| 142 | % M = 1 # M also grows with n. | ||
| 143 | % | ||
| 144 | % for n in range( 1, N+1 ): # Read as: 1 \leq n \leq N | ||
| 145 | % | ||
| 146 | % # We add the new elements to the shortlist, modifying M if needed. | ||
| 147 | % # This is not done in case we are in the extra "fake" level. | ||
| 148 | % if n-1 < len(B): | ||
| 149 | % for g in B[n-1]: | ||
| 150 | % if g < 0 and n > 1: | ||
| 151 | % special_element = ( n+1, abs(g)^(1/(2^(n-1))) ) | ||
| 152 | % M = lcm( M, special_embed( special_element ) ) | ||
| 153 | % else: | ||
| 154 | % b = g^(1/(2^(n-1))) # b is 2-indivisible | ||
| 155 | % shortlist.append( b ) | ||
| 156 | % M = lcm( M, cyc_embed(b) ) | ||
| 157 | % | ||
| 158 | % # We add a root of an even power of the negative generator, as soon as | ||
| 159 | % # we are beyond its level. | ||
| 160 | % if d != -1 and n == d+2: | ||
| 161 | % b = abs(B[d][0])^(1/2^d) | ||
| 162 | % shortlist.append( b ) | ||
| 163 | % M = lcm( M, cyc_embed(b) ) | ||
| 164 | % | ||
| 165 | % M = lcm(M,2^n) | ||
| 166 | % | ||
| 167 | % if n <= d: | ||
| 168 | % M = lcm( M, 2^(n+1) ) | ||
| 169 | % | ||
| 170 | % if n == 1 and d >= 1: | ||
| 171 | % shortlist.append(-1) | ||
| 172 | % if n > 1 and -1 in shortlist: | ||
| 173 | % shortlist.remove(-1) | ||
| 174 | % | ||
| 175 | % aux = [] # Next line of ad_fail table | ||
| 176 | % | ||
| 177 | % for dM in divisors( M ): | ||
| 178 | % if dM % (2^n) != 0: | ||
| 179 | % continue | ||
| 180 | % | ||
| 181 | % S = [ product(s) for s in subsets( shortlist ) ] | ||
| 182 | % H = [ cyc_embed( s ) for s in S ] | ||
| 183 | % r = len( [ b for b in H if dM % b == 0 ] ) | ||
| 184 | % | ||
| 185 | % if n <= d and dM % (2^(n+1)) == 0 and n > 1: | ||
| 186 | % r *= 2 | ||
| 187 | % | ||
| 188 | % if 8 in H and dM % 8 == 0 and (n >= 3 or (n == 2 and n <= d)): | ||
| 189 | % r = r/2 | ||
| 190 | % | ||
| 191 | % if special_element != (1,1) and special_element[0] == n+1: | ||
| 192 | % nothing_to_do = False | ||
| 193 | % intersecting_QdM = False | ||
| 194 | % for s in S: | ||
| 195 | % new_special = ( n+1, special_element[1] * s ) | ||
| 196 | % m = special_embed( new_special ) | ||
| 197 | % if n == 2 and m == 4: # \zeta_8 times 2 times square | ||
| 198 | % nothing_to_do = True | ||
| 199 | % if dM % m == 0: | ||
| 200 | % intersecting_QdM = True | ||
| 201 | % if intersecting_QdM and not nothing_to_do: | ||
| 202 | % r *= 2 | ||
| 203 | % | ||
| 204 | % aux.append( (dM,r) ) | ||
| 205 | % | ||
| 206 | % ad_fail.append(aux) | ||
| 207 | % | ||
| 208 | % return ad_fail | ||
| 209 | %\end{lstlisting} | ||
| 210 | % | ||
| 211 | %We have used the following auxiliary functions: | ||
| 212 | % | ||
| 213 | %\begin{lstlisting} | ||
| 214 | %# Computes the minimal cyclotomic field containing \sqrt(b) | ||
| 215 | %def cyc_embed( b ): | ||
| 216 | % m = squarefree_part(b) | ||
| 217 | % if m%4 != 1: | ||
| 218 | % m *= 4 | ||
| 219 | % return abs(m) | ||
| 220 | % | ||
| 221 | %# Computes the minimal cyclotomic field containing \zeta_{2^n}\sqrt(b) | ||
| 222 | %def special_embed( (n,b) ): | ||
| 223 | % m = squarefree_part(b) | ||
| 224 | % if n == 3 and m % 2 == 0: | ||
| 225 | % return 4 * cyc_embed(m/2) | ||
| 226 | % else: | ||
| 227 | % return lcm( 2^n, cyc_embed(b) ) | ||
| 228 | %\end{lstlisting} | ||
| 229 | \pagebreak | ||
| 230 | |||
| 231 | \section*{The pseudo-code} | ||
| 232 | We translate the SageMath code into pseudocode for ease of readability. | ||
| 233 | |||
| 234 | \begin{algorithm} | ||
| 235 | \caption{Compute the adelic failure} | ||
| 236 | \begin{algorithmic} | ||
| 237 | \State Let $B$, $t$, $d$ and $N$ as described in the previous section | ||
| 238 | \State Let $M\leftarrow1$, $\texttt{special\_element}\leftarrow1$ and $\texttt{shortlist}\leftarrow[\,]$ | ||
| 239 | |||
| 240 | \State | ||
| 241 | |||
| 242 | \For {$n=1$ to $N$} | ||
| 243 | \If{$n-1<t$} | ||
| 244 | \For{$g\in B_{n-1}$} | ||
| 245 | \If{$g<0$ and $n>1$} | ||
| 246 | \State $\texttt{special\_element}\leftarrow(n+1,\sqrt[2^{n-1}]{|g|})$ | ||
| 247 | \State $M\leftarrow\lcm(M,\texttt{special\_embed}(\texttt{special\_element}))$ | ||
| 248 | \Else | ||
| 249 | \State Add $\sqrt[2^{n-1}]{g}$ to \texttt{shortlist} | ||
| 250 | \State $M\leftarrow\lcm(M,\texttt{cyc\_embed}(g))$ | ||
| 251 | \EndIf | ||
| 252 | \EndFor | ||
| 253 | \EndIf | ||
| 254 | |||
| 255 | \State | ||
| 256 | |||
| 257 | \If{$n=d+2$ and $d\neq -1$} | ||
| 258 | \State Add $\sqrt[2^{d}]{|B_{d,0}|}$ to \texttt{shortlist} | ||
| 259 | \State $M\leftarrow\lcm(M,\texttt{cyc\_embed}(|B_{d,0}|))$ | ||
| 260 | \EndIf | ||
| 261 | |||
| 262 | \State | ||
| 263 | \If{$n\leq d$} | ||
| 264 | \State $M\leftarrow\lcm(M,2^{n+1})$ | ||
| 265 | \Else | ||
| 266 | \State $M\leftarrow\lcm(M,2^n)$ | ||
| 267 | \EndIf | ||
| 268 | \State | ||
| 269 | |||
| 270 | \If{$n=1$ and $d\geq 1$} | ||
| 271 | \State Add $-1$ to \texttt{shortlist} | ||
| 272 | \EndIf | ||
| 273 | \State | ||
| 274 | \If{$n>1$} | ||
| 275 | \State Remove $-1$ from \texttt{shortlist} (if present) | ||
| 276 | \EndIf | ||
| 277 | \State | ||
| 278 | \algstore{alg1} | ||
| 279 | \end{algorithmic} | ||
| 280 | \end{algorithm} | ||
| 281 | \pagebreak | ||
| 282 | |||
| 283 | \begin{algorithm} | ||
| 284 | \begin{algorithmic} | ||
| 285 | \algrestore{alg1} | ||
| 286 | \ForAll{$d_M\in \texttt{divisors}(M)$ such that $2^n\,|\,M$} | ||
| 287 | \State $S\leftarrow\left\{\prod_{x\in T}x\,|\,T\subseteq\texttt{shortlist}\right\}$ | ||
| 288 | \State $H\leftarrow\left\{\min\left\{x\in\mathbb{Z}_{>0}\,|\sqrt{s}\in \mathbb{Q}_x\right\}\,|\,s\in S\right\}$ | ||
| 289 | \State $r\leftarrow\# \left\{s\in S\,|\, \sqrt{s}\in\mathbb{Q}_{d_M}\right\}$ | ||
| 290 | \State | ||
| 291 | \If{$q<n\leq d$ and $2^{n+1}\,|\,{d_M}$} | ||
| 292 | \State $r\leftarrow 2r$ | ||
| 293 | \EndIf | ||
| 294 | \State | ||
| 295 | \If{$8\in H$ and $8\,|\,d_M$ and (either $n\geq 3$ or $n=2\leq d$)} | ||
| 296 | \State $r\leftarrow r/2$ | ||
| 297 | \EndIf | ||
| 298 | \State | ||
| 299 | |||
| 300 | \If{$\texttt{special\_element}=\zeta_{2^{n+1}}\sqrt{b}$ for some $b\in\mathbb{Q}$} | ||
| 301 | \State $\texttt{specials}\leftarrow\{\zeta_{2^{n+1}}\sqrt{bs}\,|\,s\in S\}$ | ||
| 302 | \If{$\exists x\in \texttt{specials}$ such that $x\in\mathbb{Q}_{d_M}$ and $\texttt{special\_embed}(s)\neq 4\,\forall s\in\texttt{specials}$} | ||
| 303 | \State $r\leftarrow 2r$ | ||
| 304 | \EndIf | ||
| 305 | \EndIf | ||
| 306 | \State | ||
| 307 | \State Declare $\left[\mathbb{Q}_{2^n}\left(\sqrt[2^n]{G}\right)\cap \mathbb{Q}_{d_M}:\mathbb{Q}_{2^n}\right]=r$. | ||
| 308 | |||
| 309 | \EndFor | ||
| 310 | \EndFor | ||
| 311 | \end{algorithmic} | ||
| 312 | \end{algorithm} | ||
| 313 | |||
| 314 | \pagebreak | ||
| 315 | |||
| 316 | \section*{Pseudo-code, the sub-cases} | ||
| 317 | |||
| 318 | We divide the pseudocode in sub-cases. In each sub-case we apply the trivial simplifications to the pseudo-code above. | ||
| 319 | |||
| 320 | \subsection*{Case $G\leq \mathbb{Q}_+^\times$} | ||
| 321 | |||
| 322 | \begin{algorithm} | ||
| 323 | \caption{Adelic failure, case $G\leq \mathbb{Q}^\times$} | ||
| 324 | |||
| 325 | \begin{algorithmic} | ||
| 326 | \For {$n=1$ to $N$} | ||
| 327 | \For{$g\in B_{n-1}$} | ||
| 328 | \State Add $\sqrt[2^{n-1}]{g}$ to \texttt{shortlist} | ||
| 329 | \State $M\leftarrow\lcm(M,\texttt{cyc\_embed}(g))$ | ||
| 330 | \EndFor | ||
| 331 | \State | ||
| 332 | \State $M\leftarrow\lcm(M,2^n)$ | ||
| 333 | \State | ||
| 334 | \ForAll{$d_M\in \texttt{divisors}(M)$ such that $2^n\,|\,M$} | ||
| 335 | \State $S\leftarrow\left\{\prod_{x\in T}x\,|\,T\subseteq\texttt{shortlist}\right\}$ | ||
| 336 | \State $H\leftarrow\left\{\min\left\{x\in\mathbb{Z}_{>0}\,|\sqrt{s}\in \mathbb{Q}_x\right\}\,|\,s\in S\right\}$ | ||
| 337 | \State $r\leftarrow\# \left\{s\in S\,|\, \sqrt{s}\in\mathbb{Q}_{d_M}\right\}$ | ||
| 338 | %\State | ||
| 339 | \State Declare $\left[\mathbb{Q}_{2^n}\left(\sqrt[2^n]{G}\right)\cap \mathbb{Q}_{d_M}:\mathbb{Q}_{2^n}\right]=\begin{cases} | ||
| 340 | r/2&\text{ if }8\in H\text{ and }n\geq 3,\\ | ||
| 341 | r&\text{ otherwise}. | ||
| 342 | \end{cases}$ | ||
| 343 | \EndFor | ||
| 344 | \EndFor | ||
| 345 | \end{algorithmic} | ||
| 346 | |||
| 347 | \end{algorithm} | ||
| 348 | \pagebreak | ||
| 349 | \subsection*{Case $d\neq -1$, $n\leq d$} | ||
| 350 | For this and the following cases, we assume we are already inside the main \texttt{for} cycle, since we have particular assumptions on $n$. | ||
| 351 | \begin{algorithm} | ||
| 352 | \caption{Adelic failure, case $d\neq -1$, $n\leq d$} | ||
| 353 | \begin{algorithmic} | ||
| 354 | \For{$g\in B_{n-1}$} | ||
| 355 | \State Add $\sqrt[2^{n-1}]{g}$ to \texttt{shortlist} | ||
| 356 | \State $M\leftarrow\lcm(M,\texttt{cyc\_embed}(g))$ | ||
| 357 | \EndFor | ||
| 358 | \State | ||
| 359 | \State $M\leftarrow\lcm(M,2^{n+1})$ | ||
| 360 | \State | ||
| 361 | \If{$n=1$ and $d\geq 1$} | ||
| 362 | \State Add $-1$ to \texttt{shortlist} | ||
| 363 | \EndIf | ||
| 364 | \State | ||
| 365 | \If{$n>1$} | ||
| 366 | \State Remove $-1$ from \texttt{shortlist} (if present) | ||
| 367 | \EndIf | ||
| 368 | \State | ||
| 369 | \ForAll{$d_M\in \texttt{divisors}(M)$ such that $2^n\,|\,M$} | ||
| 370 | \State $S\leftarrow\left\{\prod_{x\in T}x\,|\,T\subseteq\texttt{shortlist}\right\}$ | ||
| 371 | \State $H\leftarrow\left\{\min\left\{x\in\mathbb{Z}_{>0}\,|\sqrt{s}\in \mathbb{Q}_x\right\}\,|\,s\in S\right\}$ | ||
| 372 | \State $r\leftarrow\# \left\{s\in S\,|\, \sqrt{s}\in\mathbb{Q}_{d_M}\right\}$ | ||
| 373 | \State | ||
| 374 | \If{$n>1$ and $2^{n+1}\,|\,d_M$} | ||
| 375 | \State $r\leftarrow 2r$ | ||
| 376 | \EndIf | ||
| 377 | \State Declare $\left[\mathbb{Q}_{2^n}\left(\sqrt[2^n]{G}\right)\cap \mathbb{Q}_{d_M}:\mathbb{Q}_{2^n}\right]=\begin{cases} | ||
| 378 | r/2&\text{ if }8\in H\text{ and }n\geq 3,\\ | ||
| 379 | r/2&\text{ if }8\in H\text{ and }n=2\text{ and }8\,|\,d_M\\ | ||
| 380 | r&\text{ otherwise}. | ||
| 381 | \end{cases}$ | ||
| 382 | \EndFor | ||
| 383 | \end{algorithmic} | ||
| 384 | |||
| 385 | \end{algorithm} | ||
| 386 | |||
| 387 | |||
| 388 | \pagebreak | ||
| 389 | \subsection*{Case $d\neq -1$, $n\geq d+2$} | ||
| 390 | |||
| 391 | \begin{algorithm} | ||
| 392 | \caption{Adelic failure, case $d\neq -1$, $n\geq d+2$} | ||
| 393 | \begin{algorithmic} | ||
| 394 | \If{$n-1<t$} | ||
| 395 | \For{$g\in B_{n-1}$} | ||
| 396 | \State Add $\sqrt[2^{n-1}]{g}$ to \texttt{shortlist} | ||
| 397 | \State $M\leftarrow\lcm(M,\texttt{cyc\_embed}(g))$ | ||
| 398 | \EndFor | ||
| 399 | \EndIf | ||
| 400 | \State | ||
| 401 | |||
| 402 | \If{$n=d+2$} | ||
| 403 | \State Add $\sqrt[2^{d}]{|B_{d,0}|}$ to \texttt{shortlist} | ||
| 404 | \State $M\leftarrow\lcm(M,\texttt{cyc\_embed}(|B_{d,0}|))$ | ||
| 405 | \EndIf | ||
| 406 | |||
| 407 | \State | ||
| 408 | \State $M\leftarrow\lcm(M,2^{n})$ | ||
| 409 | \State | ||
| 410 | \ForAll{$d_M\in \texttt{divisors}(M)$ such that $2^n\,|\,M$} | ||
| 411 | \State $S\leftarrow\left\{\prod_{x\in T}x\,|\,T\subseteq\texttt{shortlist}\right\}$ | ||
| 412 | \State $H\leftarrow\left\{\min\left\{x\in\mathbb{Z}_{>0}\,|\sqrt{s}\in \mathbb{Q}_x\right\}\,|\,s\in S\right\}$ | ||
| 413 | \State $r\leftarrow\# \left\{s\in S\,|\, \sqrt{s}\in\mathbb{Q}_{d_M}\right\}$ | ||
| 414 | \State Declare $\left[\mathbb{Q}_{2^n}\left(\sqrt[2^n]{G}\right)\cap \mathbb{Q}_{d_M}:\mathbb{Q}_{2^n}\right]=\begin{cases} | ||
| 415 | r/2&\text{ if }8\in H,\\ | ||
| 416 | r&\text{ otherwise}. | ||
| 417 | \end{cases}$ | ||
| 418 | \EndFor | ||
| 419 | \end{algorithmic} | ||
| 420 | |||
| 421 | \end{algorithm} | ||
| 422 | |||
| 423 | \pagebreak | ||
| 424 | |||
| 425 | \subsection*{Case $d\neq -1$, $n= d+1$} | ||
| 426 | |||
| 427 | \begin{algorithm} | ||
| 428 | \caption{Adelic failure, case $d\neq -1$, $n= d+1$} | ||
| 429 | \begin{algorithmic} | ||
| 430 | \For{$g\in B_{n-1}$} | ||
| 431 | \If{$g<0$} | ||
| 432 | \State $\texttt{special\_element}\leftarrow(n+1,\sqrt[2^{n-1}]{|g|})$ | ||
| 433 | \State $M\leftarrow\lcm(M,\texttt{special\_embed}(\texttt{special\_element}))$ | ||
| 434 | \Else | ||
| 435 | \State Add $\sqrt[2^{n-1}]{g}$ to \texttt{shortlist} | ||
| 436 | \State $M\leftarrow\lcm(M,\texttt{cyc\_embed}(g))$ | ||
| 437 | \EndIf | ||
| 438 | \EndFor | ||
| 439 | \State | ||
| 440 | \State $M\leftarrow\lcm(M,2^{n})$ | ||
| 441 | \State | ||
| 442 | \State Remove $-1$ from \texttt{shortlist} (if present) | ||
| 443 | |||
| 444 | |||
| 445 | \State | ||
| 446 | \ForAll{$d_M\in \texttt{divisors}(M)$ such that $2^n\,|\,M$} | ||
| 447 | \State $S\leftarrow\left\{\prod_{x\in T}x\,|\,T\subseteq\texttt{shortlist}\right\}$ | ||
| 448 | \State $H\leftarrow\left\{\min\left\{x\in\mathbb{Z}_{>0}\,|\sqrt{s}\in \mathbb{Q}_x\right\}\,|\,s\in S\right\}$ | ||
| 449 | \State $r\leftarrow\# \left\{s\in S\,|\, \sqrt{s}\in\mathbb{Q}_{d_M}\right\}$ | ||
| 450 | \State | ||
| 451 | %\State $\texttt{specials}\leftarrow\{\zeta_{2^{n+1}}\sqrt{bs}\,|\,s\in S\}$ | ||
| 452 | \If{$\exists x\in \{\zeta_{2^{n+1}}\sqrt{bs}\,|\,s\in S\}\cap\mathbb{Q}_{d_M}$ and $\texttt{special\_embed}(s)\neq 4\,\forall s\in\texttt{specials}$} | ||
| 453 | \State $r\leftarrow 2r$ | ||
| 454 | \EndIf | ||
| 455 | \State Declare $\left[\mathbb{Q}_{2^n}\left(\sqrt[2^n]{G}\right)\cap \mathbb{Q}_{d_M}:\mathbb{Q}_{2^n}\right]=\begin{cases} | ||
| 456 | r/2&\text{ if }8\in H\text{ and }n\geq 3,\\ | ||
| 457 | r&\text{ otherwise}. | ||
| 458 | \end{cases}$ | ||
| 459 | \EndFor | ||
| 460 | \end{algorithmic} | ||
| 461 | |||
| 462 | \end{algorithm} | ||
| 463 | |||
| 464 | \begin{thebibliography}{10} \expandafter\ifx\csname url\endcsname\relax \def\url#1{\texttt{#1}}\fi \expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi | ||
| 465 | |||
| 466 | \bibitem{DebryPerucca} | ||
| 467 | \textsc{Debry, C. - Perucca, A.}: \emph{Reductions of algebraic integers}, J. Number Theory, {\bf 167} (2016), 259--283. | ||
| 468 | |||
| 469 | \bibitem{PST1} | ||
| 470 | \textsc{Perucca, A. - Sgobba, P. - Tronto, S.}: \emph{Explicit Kummer Theory for the rational numbers}, preprint. | ||
| 471 | |||
| 472 | \end{thebibliography} | ||
| 473 | |||
| 474 | \end{document} \ No newline at end of file | ||
diff --git a/tex/old/compute_degree.aux b/tex/old/compute_degree.aux new file mode 100644 index 0000000..8be55bd --- /dev/null +++ b/tex/old/compute_degree.aux | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | \relax | ||
| 2 | \citation{DebryPerucca} | ||
| 3 | \citation{DebryPerucca} | ||
| 4 | \newlabel{lemma_zero}{{1}{1}} | ||
| 5 | \newlabel{degree}{{1}{1}} | ||
| 6 | \@writefile{toc}{\contentsline {section}{\numberline {1}Case $G\leq \mathbb {Q}_+^\times $}{1}} | ||
| 7 | \@writefile{toc}{\contentsline {section}{\numberline {2}General case}{2}} | ||
| 8 | \@writefile{toc}{\contentsline {subsection}{\numberline {2.1}General case, $n=1(\leq d)$}{2}} | ||
| 9 | \@writefile{toc}{\contentsline {subsection}{\numberline {2.2}General case, $n=2\leq d$}{2}} | ||
| 10 | \@writefile{toc}{\contentsline {subsection}{\numberline {2.3}General case, $3\leq n\leq d$}{2}} | ||
| 11 | \@writefile{toc}{\contentsline {subsection}{\numberline {2.4}General case, $n\geq d+2$}{3}} | ||
| 12 | \@writefile{toc}{\contentsline {subsection}{\numberline {2.5}General case, $n=d+1$}{3}} | ||
| 13 | \bibcite{DebryPerucca}{1} | ||
| 14 | \bibcite{PeruccaSgobba}{2} | ||
diff --git a/tex/old/compute_degree.log b/tex/old/compute_degree.log new file mode 100644 index 0000000..571b9ec --- /dev/null +++ b/tex/old/compute_degree.log | |||
| @@ -0,0 +1,706 @@ | |||
| 1 | This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2019.9.20) 20 SEP 2019 10:05 | ||
| 2 | entering extended mode | ||
| 3 | \write18 enabled. | ||
| 4 | %&-line parsing enabled. | ||
| 5 | **compute_degree.tex | ||
| 6 | (./compute_degree.tex | ||
| 7 | LaTeX2e <2017-04-15> | ||
| 8 | Babel <3.18> and hyphenation patterns for 18 language(s) loaded. | ||
| 9 | (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls | ||
| 10 | Document Class: article 2014/09/29 v1.4h Standard LaTeX document class | ||
| 11 | (/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo | ||
| 12 | File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) | ||
| 13 | ) | ||
| 14 | \c@part=\count79 | ||
| 15 | \c@section=\count80 | ||
| 16 | \c@subsection=\count81 | ||
| 17 | \c@subsubsection=\count82 | ||
| 18 | \c@paragraph=\count83 | ||
| 19 | \c@subparagraph=\count84 | ||
| 20 | \c@figure=\count85 | ||
| 21 | \c@table=\count86 | ||
| 22 | \abovecaptionskip=\skip41 | ||
| 23 | \belowcaptionskip=\skip42 | ||
| 24 | \bibindent=\dimen102 | ||
| 25 | ) | ||
| 26 | (/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty | ||
| 27 | Package: inputenc 2015/03/17 v1.2c Input encoding file | ||
| 28 | \inpenc@prehook=\toks14 | ||
| 29 | \inpenc@posthook=\toks15 | ||
| 30 | |||
| 31 | (/usr/share/texlive/texmf-dist/tex/latex/base/utf8.def | ||
| 32 | File: utf8.def 2017/01/28 v1.1t UTF-8 support for inputenc | ||
| 33 | Now handling font encoding OML ... | ||
| 34 | ... no UTF-8 mapping file for font encoding OML | ||
| 35 | Now handling font encoding T1 ... | ||
| 36 | ... processing UTF-8 mapping file for font encoding T1 | ||
| 37 | |||
| 38 | (/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.dfu | ||
| 39 | File: t1enc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc | ||
| 40 | defining Unicode char U+00A0 (decimal 160) | ||
| 41 | defining Unicode char U+00A1 (decimal 161) | ||
| 42 | defining Unicode char U+00A3 (decimal 163) | ||
| 43 | defining Unicode char U+00AB (decimal 171) | ||
| 44 | defining Unicode char U+00AD (decimal 173) | ||
| 45 | defining Unicode char U+00BB (decimal 187) | ||
| 46 | defining Unicode char U+00BF (decimal 191) | ||
| 47 | defining Unicode char U+00C0 (decimal 192) | ||
| 48 | defining Unicode char U+00C1 (decimal 193) | ||
| 49 | defining Unicode char U+00C2 (decimal 194) | ||
| 50 | defining Unicode char U+00C3 (decimal 195) | ||
| 51 | defining Unicode char U+00C4 (decimal 196) | ||
| 52 | defining Unicode char U+00C5 (decimal 197) | ||
| 53 | defining Unicode char U+00C6 (decimal 198) | ||
| 54 | defining Unicode char U+00C7 (decimal 199) | ||
| 55 | defining Unicode char U+00C8 (decimal 200) | ||
| 56 | defining Unicode char U+00C9 (decimal 201) | ||
| 57 | defining Unicode char U+00CA (decimal 202) | ||
| 58 | defining Unicode char U+00CB (decimal 203) | ||
| 59 | defining Unicode char U+00CC (decimal 204) | ||
| 60 | defining Unicode char U+00CD (decimal 205) | ||
| 61 | defining Unicode char U+00CE (decimal 206) | ||
| 62 | defining Unicode char U+00CF (decimal 207) | ||
| 63 | defining Unicode char U+00D0 (decimal 208) | ||
| 64 | defining Unicode char U+00D1 (decimal 209) | ||
| 65 | defining Unicode char U+00D2 (decimal 210) | ||
| 66 | defining Unicode char U+00D3 (decimal 211) | ||
| 67 | defining Unicode char U+00D4 (decimal 212) | ||
| 68 | defining Unicode char U+00D5 (decimal 213) | ||
| 69 | defining Unicode char U+00D6 (decimal 214) | ||
| 70 | defining Unicode char U+00D8 (decimal 216) | ||
| 71 | defining Unicode char U+00D9 (decimal 217) | ||
| 72 | defining Unicode char U+00DA (decimal 218) | ||
| 73 | defining Unicode char U+00DB (decimal 219) | ||
| 74 | defining Unicode char U+00DC (decimal 220) | ||
| 75 | defining Unicode char U+00DD (decimal 221) | ||
| 76 | defining Unicode char U+00DE (decimal 222) | ||
| 77 | defining Unicode char U+00DF (decimal 223) | ||
| 78 | defining Unicode char U+00E0 (decimal 224) | ||
| 79 | defining Unicode char U+00E1 (decimal 225) | ||
| 80 | defining Unicode char U+00E2 (decimal 226) | ||
| 81 | defining Unicode char U+00E3 (decimal 227) | ||
| 82 | defining Unicode char U+00E4 (decimal 228) | ||
| 83 | defining Unicode char U+00E5 (decimal 229) | ||
| 84 | defining Unicode char U+00E6 (decimal 230) | ||
| 85 | defining Unicode char U+00E7 (decimal 231) | ||
| 86 | defining Unicode char U+00E8 (decimal 232) | ||
| 87 | defining Unicode char U+00E9 (decimal 233) | ||
| 88 | defining Unicode char U+00EA (decimal 234) | ||
| 89 | defining Unicode char U+00EB (decimal 235) | ||
| 90 | defining Unicode char U+00EC (decimal 236) | ||
| 91 | defining Unicode char U+00ED (decimal 237) | ||
| 92 | defining Unicode char U+00EE (decimal 238) | ||
| 93 | defining Unicode char U+00EF (decimal 239) | ||
| 94 | defining Unicode char U+00F0 (decimal 240) | ||
| 95 | defining Unicode char U+00F1 (decimal 241) | ||
| 96 | defining Unicode char U+00F2 (decimal 242) | ||
| 97 | defining Unicode char U+00F3 (decimal 243) | ||
| 98 | defining Unicode char U+00F4 (decimal 244) | ||
| 99 | defining Unicode char U+00F5 (decimal 245) | ||
| 100 | defining Unicode char U+00F6 (decimal 246) | ||
| 101 | defining Unicode char U+00F8 (decimal 248) | ||
| 102 | defining Unicode char U+00F9 (decimal 249) | ||
| 103 | defining Unicode char U+00FA (decimal 250) | ||
| 104 | defining Unicode char U+00FB (decimal 251) | ||
| 105 | defining Unicode char U+00FC (decimal 252) | ||
| 106 | defining Unicode char U+00FD (decimal 253) | ||
| 107 | defining Unicode char U+00FE (decimal 254) | ||
| 108 | defining Unicode char U+00FF (decimal 255) | ||
| 109 | defining Unicode char U+0100 (decimal 256) | ||
| 110 | defining Unicode char U+0101 (decimal 257) | ||
| 111 | defining Unicode char U+0102 (decimal 258) | ||
| 112 | defining Unicode char U+0103 (decimal 259) | ||
| 113 | defining Unicode char U+0104 (decimal 260) | ||
| 114 | defining Unicode char U+0105 (decimal 261) | ||
| 115 | defining Unicode char U+0106 (decimal 262) | ||
| 116 | defining Unicode char U+0107 (decimal 263) | ||
| 117 | defining Unicode char U+0108 (decimal 264) | ||
| 118 | defining Unicode char U+0109 (decimal 265) | ||
| 119 | defining Unicode char U+010A (decimal 266) | ||
| 120 | defining Unicode char U+010B (decimal 267) | ||
| 121 | defining Unicode char U+010C (decimal 268) | ||
| 122 | defining Unicode char U+010D (decimal 269) | ||
| 123 | defining Unicode char U+010E (decimal 270) | ||
| 124 | defining Unicode char U+010F (decimal 271) | ||
| 125 | defining Unicode char U+0110 (decimal 272) | ||
| 126 | defining Unicode char U+0111 (decimal 273) | ||
| 127 | defining Unicode char U+0112 (decimal 274) | ||
| 128 | defining Unicode char U+0113 (decimal 275) | ||
| 129 | defining Unicode char U+0114 (decimal 276) | ||
| 130 | defining Unicode char U+0115 (decimal 277) | ||
| 131 | defining Unicode char U+0116 (decimal 278) | ||
| 132 | defining Unicode char U+0117 (decimal 279) | ||
| 133 | defining Unicode char U+0118 (decimal 280) | ||
| 134 | defining Unicode char U+0119 (decimal 281) | ||
| 135 | defining Unicode char U+011A (decimal 282) | ||
| 136 | defining Unicode char U+011B (decimal 283) | ||
| 137 | defining Unicode char U+011C (decimal 284) | ||
| 138 | defining Unicode char U+011D (decimal 285) | ||
| 139 | defining Unicode char U+011E (decimal 286) | ||
| 140 | defining Unicode char U+011F (decimal 287) | ||
| 141 | defining Unicode char U+0120 (decimal 288) | ||
| 142 | defining Unicode char U+0121 (decimal 289) | ||
| 143 | defining Unicode char U+0122 (decimal 290) | ||
| 144 | defining Unicode char U+0123 (decimal 291) | ||
| 145 | defining Unicode char U+0124 (decimal 292) | ||
| 146 | defining Unicode char U+0125 (decimal 293) | ||
| 147 | defining Unicode char U+0128 (decimal 296) | ||
| 148 | defining Unicode char U+0129 (decimal 297) | ||
| 149 | defining Unicode char U+012A (decimal 298) | ||
| 150 | defining Unicode char U+012B (decimal 299) | ||
| 151 | defining Unicode char U+012C (decimal 300) | ||
| 152 | defining Unicode char U+012D (decimal 301) | ||
| 153 | defining Unicode char U+012E (decimal 302) | ||
| 154 | defining Unicode char U+012F (decimal 303) | ||
| 155 | defining Unicode char U+0130 (decimal 304) | ||
| 156 | defining Unicode char U+0131 (decimal 305) | ||
| 157 | defining Unicode char U+0132 (decimal 306) | ||
| 158 | defining Unicode char U+0133 (decimal 307) | ||
| 159 | defining Unicode char U+0134 (decimal 308) | ||
| 160 | defining Unicode char U+0135 (decimal 309) | ||
| 161 | defining Unicode char U+0136 (decimal 310) | ||
| 162 | defining Unicode char U+0137 (decimal 311) | ||
| 163 | defining Unicode char U+0139 (decimal 313) | ||
| 164 | defining Unicode char U+013A (decimal 314) | ||
| 165 | defining Unicode char U+013B (decimal 315) | ||
| 166 | defining Unicode char U+013C (decimal 316) | ||
| 167 | defining Unicode char U+013D (decimal 317) | ||
| 168 | defining Unicode char U+013E (decimal 318) | ||
| 169 | defining Unicode char U+0141 (decimal 321) | ||
| 170 | defining Unicode char U+0142 (decimal 322) | ||
| 171 | defining Unicode char U+0143 (decimal 323) | ||
| 172 | defining Unicode char U+0144 (decimal 324) | ||
| 173 | defining Unicode char U+0145 (decimal 325) | ||
| 174 | defining Unicode char U+0146 (decimal 326) | ||
| 175 | defining Unicode char U+0147 (decimal 327) | ||
| 176 | defining Unicode char U+0148 (decimal 328) | ||
| 177 | defining Unicode char U+014A (decimal 330) | ||
| 178 | defining Unicode char U+014B (decimal 331) | ||
| 179 | defining Unicode char U+014C (decimal 332) | ||
| 180 | defining Unicode char U+014D (decimal 333) | ||
| 181 | defining Unicode char U+014E (decimal 334) | ||
| 182 | defining Unicode char U+014F (decimal 335) | ||
| 183 | defining Unicode char U+0150 (decimal 336) | ||
| 184 | defining Unicode char U+0151 (decimal 337) | ||
| 185 | defining Unicode char U+0152 (decimal 338) | ||
| 186 | defining Unicode char U+0153 (decimal 339) | ||
| 187 | defining Unicode char U+0154 (decimal 340) | ||
| 188 | defining Unicode char U+0155 (decimal 341) | ||
| 189 | defining Unicode char U+0156 (decimal 342) | ||
| 190 | defining Unicode char U+0157 (decimal 343) | ||
| 191 | defining Unicode char U+0158 (decimal 344) | ||
| 192 | defining Unicode char U+0159 (decimal 345) | ||
| 193 | defining Unicode char U+015A (decimal 346) | ||
| 194 | defining Unicode char U+015B (decimal 347) | ||
| 195 | defining Unicode char U+015C (decimal 348) | ||
| 196 | defining Unicode char U+015D (decimal 349) | ||
| 197 | defining Unicode char U+015E (decimal 350) | ||
| 198 | defining Unicode char U+015F (decimal 351) | ||
| 199 | defining Unicode char U+0160 (decimal 352) | ||
| 200 | defining Unicode char U+0161 (decimal 353) | ||
| 201 | defining Unicode char U+0162 (decimal 354) | ||
| 202 | defining Unicode char U+0163 (decimal 355) | ||
| 203 | defining Unicode char U+0164 (decimal 356) | ||
| 204 | defining Unicode char U+0165 (decimal 357) | ||
| 205 | defining Unicode char U+0168 (decimal 360) | ||
| 206 | defining Unicode char U+0169 (decimal 361) | ||
| 207 | defining Unicode char U+016A (decimal 362) | ||
| 208 | defining Unicode char U+016B (decimal 363) | ||
| 209 | defining Unicode char U+016C (decimal 364) | ||
| 210 | defining Unicode char U+016D (decimal 365) | ||
| 211 | defining Unicode char U+016E (decimal 366) | ||
| 212 | defining Unicode char U+016F (decimal 367) | ||
| 213 | defining Unicode char U+0170 (decimal 368) | ||
| 214 | defining Unicode char U+0171 (decimal 369) | ||
| 215 | defining Unicode char U+0172 (decimal 370) | ||
| 216 | defining Unicode char U+0173 (decimal 371) | ||
| 217 | defining Unicode char U+0174 (decimal 372) | ||
| 218 | defining Unicode char U+0175 (decimal 373) | ||
| 219 | defining Unicode char U+0176 (decimal 374) | ||
| 220 | defining Unicode char U+0177 (decimal 375) | ||
| 221 | defining Unicode char U+0178 (decimal 376) | ||
| 222 | defining Unicode char U+0179 (decimal 377) | ||
| 223 | defining Unicode char U+017A (decimal 378) | ||
| 224 | defining Unicode char U+017B (decimal 379) | ||
| 225 | defining Unicode char U+017C (decimal 380) | ||
| 226 | defining Unicode char U+017D (decimal 381) | ||
| 227 | defining Unicode char U+017E (decimal 382) | ||
| 228 | defining Unicode char U+01CD (decimal 461) | ||
| 229 | defining Unicode char U+01CE (decimal 462) | ||
| 230 | defining Unicode char U+01CF (decimal 463) | ||
| 231 | defining Unicode char U+01D0 (decimal 464) | ||
| 232 | defining Unicode char U+01D1 (decimal 465) | ||
| 233 | defining Unicode char U+01D2 (decimal 466) | ||
| 234 | defining Unicode char U+01D3 (decimal 467) | ||
| 235 | defining Unicode char U+01D4 (decimal 468) | ||
| 236 | defining Unicode char U+01E2 (decimal 482) | ||
| 237 | defining Unicode char U+01E3 (decimal 483) | ||
| 238 | defining Unicode char U+01E6 (decimal 486) | ||
| 239 | defining Unicode char U+01E7 (decimal 487) | ||
| 240 | defining Unicode char U+01E8 (decimal 488) | ||
| 241 | defining Unicode char U+01E9 (decimal 489) | ||
| 242 | defining Unicode char U+01EA (decimal 490) | ||
| 243 | defining Unicode char U+01EB (decimal 491) | ||
| 244 | defining Unicode char U+01F0 (decimal 496) | ||
| 245 | defining Unicode char U+01F4 (decimal 500) | ||
| 246 | defining Unicode char U+01F5 (decimal 501) | ||
| 247 | defining Unicode char U+0218 (decimal 536) | ||
| 248 | defining Unicode char U+0219 (decimal 537) | ||
| 249 | defining Unicode char U+021A (decimal 538) | ||
| 250 | defining Unicode char U+021B (decimal 539) | ||
| 251 | defining Unicode char U+0232 (decimal 562) | ||
| 252 | defining Unicode char U+0233 (decimal 563) | ||
| 253 | defining Unicode char U+1E02 (decimal 7682) | ||
| 254 | defining Unicode char U+1E03 (decimal 7683) | ||
| 255 | defining Unicode char U+200C (decimal 8204) | ||
| 256 | defining Unicode char U+2010 (decimal 8208) | ||
| 257 | defining Unicode char U+2011 (decimal 8209) | ||
| 258 | defining Unicode char U+2012 (decimal 8210) | ||
| 259 | defining Unicode char U+2013 (decimal 8211) | ||
| 260 | defining Unicode char U+2014 (decimal 8212) | ||
| 261 | defining Unicode char U+2015 (decimal 8213) | ||
| 262 | defining Unicode char U+2018 (decimal 8216) | ||
| 263 | defining Unicode char U+2019 (decimal 8217) | ||
| 264 | defining Unicode char U+201A (decimal 8218) | ||
| 265 | defining Unicode char U+201C (decimal 8220) | ||
| 266 | defining Unicode char U+201D (decimal 8221) | ||
| 267 | defining Unicode char U+201E (decimal 8222) | ||
| 268 | defining Unicode char U+2030 (decimal 8240) | ||
| 269 | defining Unicode char U+2031 (decimal 8241) | ||
| 270 | defining Unicode char U+2039 (decimal 8249) | ||
| 271 | defining Unicode char U+203A (decimal 8250) | ||
| 272 | defining Unicode char U+2423 (decimal 9251) | ||
| 273 | defining Unicode char U+1E20 (decimal 7712) | ||
| 274 | defining Unicode char U+1E21 (decimal 7713) | ||
| 275 | ) | ||
| 276 | Now handling font encoding OT1 ... | ||
| 277 | ... processing UTF-8 mapping file for font encoding OT1 | ||
| 278 | |||
| 279 | (/usr/share/texlive/texmf-dist/tex/latex/base/ot1enc.dfu | ||
| 280 | File: ot1enc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc | ||
| 281 | defining Unicode char U+00A0 (decimal 160) | ||
| 282 | defining Unicode char U+00A1 (decimal 161) | ||
| 283 | defining Unicode char U+00A3 (decimal 163) | ||
| 284 | defining Unicode char U+00AD (decimal 173) | ||
| 285 | defining Unicode char U+00B8 (decimal 184) | ||
| 286 | defining Unicode char U+00BF (decimal 191) | ||
| 287 | defining Unicode char U+00C5 (decimal 197) | ||
| 288 | defining Unicode char U+00C6 (decimal 198) | ||
| 289 | defining Unicode char U+00D8 (decimal 216) | ||
| 290 | defining Unicode char U+00DF (decimal 223) | ||
| 291 | defining Unicode char U+00E6 (decimal 230) | ||
| 292 | defining Unicode char U+00EC (decimal 236) | ||
| 293 | defining Unicode char U+00ED (decimal 237) | ||
| 294 | defining Unicode char U+00EE (decimal 238) | ||
| 295 | defining Unicode char U+00EF (decimal 239) | ||
| 296 | defining Unicode char U+00F8 (decimal 248) | ||
| 297 | defining Unicode char U+0131 (decimal 305) | ||
| 298 | defining Unicode char U+0141 (decimal 321) | ||
| 299 | defining Unicode char U+0142 (decimal 322) | ||
| 300 | defining Unicode char U+0152 (decimal 338) | ||
| 301 | defining Unicode char U+0153 (decimal 339) | ||
| 302 | defining Unicode char U+0174 (decimal 372) | ||
| 303 | defining Unicode char U+0175 (decimal 373) | ||
| 304 | defining Unicode char U+0176 (decimal 374) | ||
| 305 | defining Unicode char U+0177 (decimal 375) | ||
| 306 | defining Unicode char U+0218 (decimal 536) | ||
| 307 | defining Unicode char U+0219 (decimal 537) | ||
| 308 | defining Unicode char U+021A (decimal 538) | ||
| 309 | defining Unicode char U+021B (decimal 539) | ||
| 310 | defining Unicode char U+2013 (decimal 8211) | ||
| 311 | defining Unicode char U+2014 (decimal 8212) | ||
| 312 | defining Unicode char U+2018 (decimal 8216) | ||
| 313 | defining Unicode char U+2019 (decimal 8217) | ||
| 314 | defining Unicode char U+201C (decimal 8220) | ||
| 315 | defining Unicode char U+201D (decimal 8221) | ||
| 316 | ) | ||
| 317 | Now handling font encoding OMS ... | ||
| 318 | ... processing UTF-8 mapping file for font encoding OMS | ||
| 319 | |||
| 320 | (/usr/share/texlive/texmf-dist/tex/latex/base/omsenc.dfu | ||
| 321 | File: omsenc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc | ||
| 322 | defining Unicode char U+00A7 (decimal 167) | ||
| 323 | defining Unicode char U+00B6 (decimal 182) | ||
| 324 | defining Unicode char U+00B7 (decimal 183) | ||
| 325 | defining Unicode char U+2020 (decimal 8224) | ||
| 326 | defining Unicode char U+2021 (decimal 8225) | ||
| 327 | defining Unicode char U+2022 (decimal 8226) | ||
| 328 | ) | ||
| 329 | Now handling font encoding OMX ... | ||
| 330 | ... no UTF-8 mapping file for font encoding OMX | ||
| 331 | Now handling font encoding U ... | ||
| 332 | ... no UTF-8 mapping file for font encoding U | ||
| 333 | defining Unicode char U+00A9 (decimal 169) | ||
| 334 | defining Unicode char U+00AA (decimal 170) | ||
| 335 | defining Unicode char U+00AE (decimal 174) | ||
| 336 | defining Unicode char U+00BA (decimal 186) | ||
| 337 | defining Unicode char U+02C6 (decimal 710) | ||
| 338 | defining Unicode char U+02DC (decimal 732) | ||
| 339 | defining Unicode char U+200C (decimal 8204) | ||
| 340 | defining Unicode char U+2026 (decimal 8230) | ||
| 341 | defining Unicode char U+2122 (decimal 8482) | ||
| 342 | defining Unicode char U+2423 (decimal 9251) | ||
| 343 | )) | ||
| 344 | (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty | ||
| 345 | Package: amsmath 2017/09/02 v2.17a AMS math features | ||
| 346 | \@mathmargin=\skip43 | ||
| 347 | |||
| 348 | For additional information on amsmath, use the `?' option. | ||
| 349 | (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty | ||
| 350 | Package: amstext 2000/06/29 v2.01 AMS text | ||
| 351 | |||
| 352 | (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty | ||
| 353 | File: amsgen.sty 1999/11/30 v2.0 generic functions | ||
| 354 | \@emptytoks=\toks16 | ||
| 355 | \ex@=\dimen103 | ||
| 356 | )) | ||
| 357 | (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty | ||
| 358 | Package: amsbsy 1999/11/29 v1.2d Bold Symbols | ||
| 359 | \pmbraise@=\dimen104 | ||
| 360 | ) | ||
| 361 | (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty | ||
| 362 | Package: amsopn 2016/03/08 v2.02 operator names | ||
| 363 | ) | ||
| 364 | \inf@bad=\count87 | ||
| 365 | LaTeX Info: Redefining \frac on input line 213. | ||
| 366 | \uproot@=\count88 | ||
| 367 | \leftroot@=\count89 | ||
| 368 | LaTeX Info: Redefining \overline on input line 375. | ||
| 369 | \classnum@=\count90 | ||
| 370 | \DOTSCASE@=\count91 | ||
| 371 | LaTeX Info: Redefining \ldots on input line 472. | ||
| 372 | LaTeX Info: Redefining \dots on input line 475. | ||
| 373 | LaTeX Info: Redefining \cdots on input line 596. | ||
| 374 | \Mathstrutbox@=\box26 | ||
| 375 | \strutbox@=\box27 | ||
| 376 | \big@size=\dimen105 | ||
| 377 | LaTeX Font Info: Redeclaring font encoding OML on input line 712. | ||
| 378 | LaTeX Font Info: Redeclaring font encoding OMS on input line 713. | ||
| 379 | \macc@depth=\count92 | ||
| 380 | \c@MaxMatrixCols=\count93 | ||
| 381 | \dotsspace@=\muskip10 | ||
| 382 | \c@parentequation=\count94 | ||
| 383 | \dspbrk@lvl=\count95 | ||
| 384 | \tag@help=\toks17 | ||
| 385 | \row@=\count96 | ||
| 386 | \column@=\count97 | ||
| 387 | \maxfields@=\count98 | ||
| 388 | \andhelp@=\toks18 | ||
| 389 | \eqnshift@=\dimen106 | ||
| 390 | \alignsep@=\dimen107 | ||
| 391 | \tagshift@=\dimen108 | ||
| 392 | \tagwidth@=\dimen109 | ||
| 393 | \totwidth@=\dimen110 | ||
| 394 | \lineht@=\dimen111 | ||
| 395 | \@envbody=\toks19 | ||
| 396 | \multlinegap=\skip44 | ||
| 397 | \multlinetaggap=\skip45 | ||
| 398 | \mathdisplay@stack=\toks20 | ||
| 399 | LaTeX Info: Redefining \[ on input line 2817. | ||
| 400 | LaTeX Info: Redefining \] on input line 2818. | ||
| 401 | ) | ||
| 402 | (/usr/share/texlive/texmf-dist/tex/latex/amscls/amsthm.sty | ||
| 403 | Package: amsthm 2017/10/31 v2.20.4 | ||
| 404 | \thm@style=\toks21 | ||
| 405 | \thm@bodyfont=\toks22 | ||
| 406 | \thm@headfont=\toks23 | ||
| 407 | \thm@notefont=\toks24 | ||
| 408 | \thm@headpunct=\toks25 | ||
| 409 | \thm@preskip=\skip46 | ||
| 410 | \thm@postskip=\skip47 | ||
| 411 | \thm@headsep=\skip48 | ||
| 412 | \dth@everypar=\toks26 | ||
| 413 | ) | ||
| 414 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xy.sty | ||
| 415 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xy.tex Bootstrap'ing: | ||
| 416 | catcodes, docmode, (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyrecat.tex | ||
| 417 | ) (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyidioms.tex) | ||
| 418 | |||
| 419 | Xy-pic version 3.8.9 <2013/10/06> | ||
| 420 | Copyright (c) 1991-2013 by Kristoffer H. Rose <krisrose@tug.org> and others | ||
| 421 | Xy-pic is free software: see the User's Guide for details. | ||
| 422 | |||
| 423 | Loading kernel: messages; fonts; allocations: state, | ||
| 424 | \X@c=\dimen112 | ||
| 425 | \Y@c=\dimen113 | ||
| 426 | \U@c=\dimen114 | ||
| 427 | \D@c=\dimen115 | ||
| 428 | \L@c=\dimen116 | ||
| 429 | \R@c=\dimen117 | ||
| 430 | \Edge@c=\toks27 | ||
| 431 | \X@p=\dimen118 | ||
| 432 | \Y@p=\dimen119 | ||
| 433 | \U@p=\dimen120 | ||
| 434 | \D@p=\dimen121 | ||
| 435 | \L@p=\dimen122 | ||
| 436 | \R@p=\dimen123 | ||
| 437 | \Edge@p=\toks28 | ||
| 438 | \X@origin=\dimen124 | ||
| 439 | \Y@origin=\dimen125 | ||
| 440 | \X@xbase=\dimen126 | ||
| 441 | \Y@xbase=\dimen127 | ||
| 442 | \X@ybase=\dimen128 | ||
| 443 | \Y@ybase=\dimen129 | ||
| 444 | \X@min=\dimen130 | ||
| 445 | \Y@min=\dimen131 | ||
| 446 | \X@max=\dimen132 | ||
| 447 | \Y@max=\dimen133 | ||
| 448 | \lastobjectbox@=\box28 | ||
| 449 | \zerodotbox@=\box29 | ||
| 450 | \almostz@=\dimen134 | ||
| 451 | direction, | ||
| 452 | \d@X=\dimen135 | ||
| 453 | \d@Y=\dimen136 | ||
| 454 | \K@=\count99 | ||
| 455 | \KK@=\count100 | ||
| 456 | \Direction=\count101 | ||
| 457 | \K@dXdY=\dimen137 | ||
| 458 | \K@dYdX=\dimen138 | ||
| 459 | \xyread@=\read1 | ||
| 460 | \xywrite@=\write3 | ||
| 461 | \csp@=\count102 | ||
| 462 | \quotPTK@=\dimen139 | ||
| 463 | |||
| 464 | utility macros; pictures: \xy, positions, | ||
| 465 | \swaptoks@@=\toks29 | ||
| 466 | \connectobjectbox@@=\box30 | ||
| 467 | objects, | ||
| 468 | \styletoks@=\toks30 | ||
| 469 | decorations; | ||
| 470 | kernel objects: directionals, circles, text; options; algorithms: directions, | ||
| 471 | edges, connections; Xy-pic loaded) | ||
| 472 | (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty | ||
| 473 | Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch | ||
| 474 | ) | ||
| 475 | Package: xy 2013/10/06 Xy-pic version 3.8.9 | ||
| 476 | |||
| 477 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyall.tex | ||
| 478 | Xy-pic option: All features v.3.8 | ||
| 479 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xycurve.tex | ||
| 480 | Xy-pic option: Curve and Spline extension v.3.12 curve, | ||
| 481 | \crv@cnt@=\count103 | ||
| 482 | \crvpts@=\toks31 | ||
| 483 | \splinebox@=\box31 | ||
| 484 | \splineval@=\dimen140 | ||
| 485 | \splinedepth@=\dimen141 | ||
| 486 | \splinetol@=\dimen142 | ||
| 487 | \splinelength@=\dimen143 | ||
| 488 | circles, | ||
| 489 | \L@=\dimen144 | ||
| 490 | loaded) | ||
| 491 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyframe.tex | ||
| 492 | Xy-pic option: Frame and Bracket extension v.3.14 loaded) | ||
| 493 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xycmtip.tex | ||
| 494 | Xy-pic option: Computer Modern tip extension v.3.7 | ||
| 495 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xytips.tex | ||
| 496 | Xy-pic option: More Tips extension v.3.11 loaded) loaded) | ||
| 497 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyline.tex | ||
| 498 | Xy-pic option: Line styles extension v.3.10 | ||
| 499 | \xylinethick@=\dimen145 | ||
| 500 | loaded) | ||
| 501 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyrotate.tex | ||
| 502 | Xy-pic option: Rotate and Scale extension v.3.8 loaded) | ||
| 503 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xycolor.tex | ||
| 504 | Xy-pic option: Colour extension v.3.11 loaded) | ||
| 505 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xymatrix.tex | ||
| 506 | Xy-pic option: Matrix feature v.3.14 | ||
| 507 | \Row=\count104 | ||
| 508 | \Col=\count105 | ||
| 509 | \queue@=\toks32 | ||
| 510 | \queue@@=\toks33 | ||
| 511 | \qcount@=\count106 | ||
| 512 | \qcount@@=\count107 | ||
| 513 | \matrixsize@=\count108 | ||
| 514 | loaded) | ||
| 515 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xyarrow.tex | ||
| 516 | Xy-pic option: Arrow and Path feature v.3.9 path, \ar, loaded) | ||
| 517 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xygraph.tex | ||
| 518 | Xy-pic option: Graph feature v.3.11 loaded) loaded) | ||
| 519 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xypdf.tex | ||
| 520 | Xy-pic option: PDF driver v.1.7 Xy-pic pdf driver: `color' extension support | ||
| 521 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xypdf-co.tex loaded) | ||
| 522 | Xy-pic pdf driver: `curve' extension support | ||
| 523 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xypdf-cu.tex loaded) | ||
| 524 | Xy-pic pdf driver: `frame' extension support | ||
| 525 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xypdf-fr.tex loaded) | ||
| 526 | Xy-pic pdf driver: `line' extension support | ||
| 527 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xypdf-li.tex loaded) | ||
| 528 | Xy-pic pdf driver: `rotate' extension support | ||
| 529 | (/usr/share/texlive/texmf-dist/tex/generic/xypic/xypdf-ro.tex loaded) loaded)) | ||
| 530 | (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty | ||
| 531 | Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support | ||
| 532 | \symAMSa=\mathgroup4 | ||
| 533 | \symAMSb=\mathgroup5 | ||
| 534 | LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' | ||
| 535 | (Font) U/euf/m/n --> U/euf/b/n on input line 106. | ||
| 536 | ) | ||
| 537 | (/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty | ||
| 538 | Package: color 2016/07/10 v1.1e Standard LaTeX Color (DPC) | ||
| 539 | |||
| 540 | (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg | ||
| 541 | File: color.cfg 2016/01/02 v1.6 sample color configuration | ||
| 542 | ) | ||
| 543 | Package color Info: Driver file: pdftex.def on input line 147. | ||
| 544 | |||
| 545 | (/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def | ||
| 546 | File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex | ||
| 547 | )) | ||
| 548 | (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty | ||
| 549 | Package: amssymb 2013/01/14 v3.01 AMS font symbols | ||
| 550 | ) | ||
| 551 | (/usr/share/texlive/texmf-dist/tex/latex/float/float.sty | ||
| 552 | Package: float 2001/11/08 v1.3d Float enhancements (AL) | ||
| 553 | \c@float@type=\count109 | ||
| 554 | \float@exts=\toks34 | ||
| 555 | \float@box=\box32 | ||
| 556 | \@float@everytoks=\toks35 | ||
| 557 | \@floatcapt=\box33 | ||
| 558 | ) | ||
| 559 | (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty | ||
| 560 | Package: geometry 2010/09/12 v5.6 Page Geometry | ||
| 561 | |||
| 562 | (/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty | ||
| 563 | Package: keyval 2014/10/28 v1.15 key=value parser (DPC) | ||
| 564 | \KV@toks@=\toks36 | ||
| 565 | ) | ||
| 566 | (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty | ||
| 567 | Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) | ||
| 568 | Package ifvtex Info: VTeX not detected. | ||
| 569 | ) | ||
| 570 | (/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty | ||
| 571 | Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional | ||
| 572 | ) | ||
| 573 | \Gm@cnth=\count110 | ||
| 574 | \Gm@cntv=\count111 | ||
| 575 | \c@Gm@tempcnt=\count112 | ||
| 576 | \Gm@bindingoffset=\dimen146 | ||
| 577 | \Gm@wd@mp=\dimen147 | ||
| 578 | \Gm@odd@mp=\dimen148 | ||
| 579 | \Gm@even@mp=\dimen149 | ||
| 580 | \Gm@layoutwidth=\dimen150 | ||
| 581 | \Gm@layoutheight=\dimen151 | ||
| 582 | \Gm@layouthoffset=\dimen152 | ||
| 583 | \Gm@layoutvoffset=\dimen153 | ||
| 584 | \Gm@dimlist=\toks37 | ||
| 585 | ) | ||
| 586 | \c@lemma=\count113 | ||
| 587 | |||
| 588 | (./compute_degree.aux) | ||
| 589 | \openout1 = `compute_degree.aux'. | ||
| 590 | |||
| 591 | LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 100. | ||
| 592 | LaTeX Font Info: ... okay on input line 100. | ||
| 593 | LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 100. | ||
| 594 | LaTeX Font Info: ... okay on input line 100. | ||
| 595 | LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 100. | ||
| 596 | LaTeX Font Info: ... okay on input line 100. | ||
| 597 | LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 100. | ||
| 598 | LaTeX Font Info: ... okay on input line 100. | ||
| 599 | LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 100. | ||
| 600 | LaTeX Font Info: ... okay on input line 100. | ||
| 601 | LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 100. | ||
| 602 | LaTeX Font Info: ... okay on input line 100. | ||
| 603 | LaTeX Font Info: Try loading font information for U+msa on input line 100. | ||
| 604 | |||
| 605 | (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd | ||
| 606 | File: umsa.fd 2013/01/14 v3.01 AMS symbols A | ||
| 607 | ) | ||
| 608 | LaTeX Font Info: Try loading font information for U+msb on input line 100. | ||
| 609 | |||
| 610 | (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd | ||
| 611 | File: umsb.fd 2013/01/14 v3.01 AMS symbols B | ||
| 612 | ) | ||
| 613 | Package xypdf Info: Line width: 0.39998pt on input line 100. | ||
| 614 | |||
| 615 | (/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii | ||
| 616 | [Loading MPS to PDF converter (version 2006.09.02).] | ||
| 617 | \scratchcounter=\count114 | ||
| 618 | \scratchdimen=\dimen154 | ||
| 619 | \scratchbox=\box34 | ||
| 620 | \nofMPsegments=\count115 | ||
| 621 | \nofMParguments=\count116 | ||
| 622 | \everyMPshowfont=\toks38 | ||
| 623 | \MPscratchCnt=\count117 | ||
| 624 | \MPscratchDim=\dimen155 | ||
| 625 | \MPnumerator=\count118 | ||
| 626 | \makeMPintoPDFobject=\count119 | ||
| 627 | \everyMPtoPDFconversion=\toks39 | ||
| 628 | ) | ||
| 629 | *geometry* driver: auto-detecting | ||
| 630 | *geometry* detected driver: pdftex | ||
| 631 | *geometry* verbose mode - [ preamble ] result: | ||
| 632 | * driver: pdftex | ||
| 633 | * paper: a4paper | ||
| 634 | * layout: <same size as paper> | ||
| 635 | * layoutoffset:(h,v)=(0.0pt,0.0pt) | ||
| 636 | * modes: | ||
| 637 | * h-part:(L,W,R)=(71.13188pt, 455.24411pt, 71.13188pt) | ||
| 638 | * v-part:(T,H,B)=(85.35826pt, 674.33032pt, 85.35826pt) | ||
| 639 | * \paperwidth=597.50787pt | ||
| 640 | * \paperheight=845.04684pt | ||
| 641 | * \textwidth=455.24411pt | ||
| 642 | * \textheight=674.33032pt | ||
| 643 | * \oddsidemargin=-1.1381pt | ||
| 644 | * \evensidemargin=-1.1381pt | ||
| 645 | * \topmargin=-23.91173pt | ||
| 646 | * \headheight=12.0pt | ||
| 647 | * \headsep=25.0pt | ||
| 648 | * \topskip=10.0pt | ||
| 649 | * \footskip=30.0pt | ||
| 650 | * \marginparwidth=57.0pt | ||
| 651 | * \marginparsep=11.0pt | ||
| 652 | * \columnsep=10.0pt | ||
| 653 | * \skip\footins=9.0pt plus 4.0pt minus 2.0pt | ||
| 654 | * \hoffset=0.0pt | ||
| 655 | * \voffset=0.0pt | ||
| 656 | * \mag=1000 | ||
| 657 | * \@twocolumnfalse | ||
| 658 | * \@twosidefalse | ||
| 659 | * \@mparswitchfalse | ||
| 660 | * \@reversemarginfalse | ||
| 661 | * (1in=72.27pt=25.4mm, 1cm=28.453pt) | ||
| 662 | |||
| 663 | [1 | ||
| 664 | |||
| 665 | {/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] | ||
| 666 | LaTeX Font Info: Try loading font information for OMS+cmr on input line 217. | ||
| 667 | |||
| 668 | |||
| 669 | (/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd | ||
| 670 | File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions | ||
| 671 | ) | ||
| 672 | LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available | ||
| 673 | (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 217. | ||
| 674 | [2] [3] [4] | ||
| 675 | (./compute_degree.aux) ) | ||
| 676 | Here is how much of TeX's memory you used: | ||
| 677 | 5407 strings out of 494283 | ||
| 678 | 64833 string characters out of 6169691 | ||
| 679 | 184730 words of memory out of 5000000 | ||
| 680 | 8655 multiletter control sequences out of 15000+600000 | ||
| 681 | 15245 words of font info for 62 fonts, out of 8000000 for 9000 | ||
| 682 | 497 hyphenation exceptions out of 8191 | ||
| 683 | 27i,16n,24p,3246b,313s stack positions out of 5000i,500n,10000p,200000b,80000s | ||
| 684 | </usr/share/texlive/texmf-dist/fonts/type1/public/amsfo | ||
| 685 | nts/cm/cmbx10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm | ||
| 686 | /cmbx12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmcsc | ||
| 687 | 10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb | ||
| 688 | ></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr | ||
| 689 | /share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb></usr/share | ||
| 690 | /texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb></usr/share/texliv | ||
| 691 | e/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb></usr/share/texlive/texmf | ||
| 692 | -dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/f | ||
| 693 | onts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/fonts/ty | ||
| 694 | pe1/public/amsfonts/cm/cmr7.pfb></usr/share/texlive/texmf-dist/fonts/type1/publ | ||
| 695 | ic/amsfonts/cm/cmsy10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/ams | ||
| 696 | fonts/cm/cmsy5.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/c | ||
| 697 | m/cmsy7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti1 | ||
| 698 | 0.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10 | ||
| 699 | .pfb> | ||
| 700 | Output written on compute_degree.pdf (4 pages, 176578 bytes). | ||
| 701 | PDF statistics: | ||
| 702 | 81 PDF objects out of 1000 (max. 8388607) | ||
| 703 | 58 compressed objects within 1 object stream | ||
| 704 | 0 named destinations out of 1000 (max. 500000) | ||
| 705 | 1 words of extra memory for PDF output out of 10000 (max. 10000000) | ||
| 706 | |||
diff --git a/tex/old/compute_degree.pdf b/tex/old/compute_degree.pdf new file mode 100644 index 0000000..156383c --- /dev/null +++ b/tex/old/compute_degree.pdf | |||
| Binary files differ | |||
diff --git a/tex/old/compute_degree.synctex.gz b/tex/old/compute_degree.synctex.gz new file mode 100644 index 0000000..86cccf0 --- /dev/null +++ b/tex/old/compute_degree.synctex.gz | |||
| Binary files differ | |||
diff --git a/tex/old/compute_degree.tex b/tex/old/compute_degree.tex new file mode 100644 index 0000000..836a229 --- /dev/null +++ b/tex/old/compute_degree.tex | |||
| @@ -0,0 +1,320 @@ | |||
| 1 | \documentclass[10pt,a4paper]{article} | ||
| 2 | \usepackage[utf8]{inputenc} | ||
| 3 | \usepackage{amsmath} | ||
| 4 | \usepackage{amsthm} | ||
| 5 | \usepackage[all]{xy} | ||
| 6 | \usepackage{amsfonts} | ||
| 7 | \usepackage{color} | ||
| 8 | \usepackage{amssymb} | ||
| 9 | \usepackage{float} | ||
| 10 | \usepackage[a4paper, top=3cm, bottom=3cm, left=2.5cm, right=2.5cm]{geometry} | ||
| 11 | |||
| 12 | \DeclareMathOperator{\alg}{alg} | ||
| 13 | \DeclareMathOperator{\obj}{Obj} | ||
| 14 | \DeclareMathOperator{\Hom}{Hom} | ||
| 15 | \DeclareMathOperator{\End}{End} | ||
| 16 | \DeclareMathOperator{\hol}{Hol} | ||
| 17 | \DeclareMathOperator{\aut}{Aut} | ||
| 18 | \DeclareMathOperator{\gal}{Gal} | ||
| 19 | \DeclareMathOperator{\id}{id} | ||
| 20 | \DeclareMathOperator{\res}{res} | ||
| 21 | \DeclareMathOperator{\im}{Im} | ||
| 22 | \DeclareMathOperator{\Id}{Id} | ||
| 23 | \DeclareMathOperator{\fib}{Fib} | ||
| 24 | \DeclareMathOperator{\spec}{Spec} | ||
| 25 | \DeclareMathOperator{\proj}{Proj} | ||
| 26 | \DeclareMathOperator{\trdeg}{trdeg} | ||
| 27 | \DeclareMathOperator{\car}{char} | ||
| 28 | \DeclareMathOperator{\Frac}{Frac} | ||
| 29 | \DeclareMathOperator{\reduced}{red} | ||
| 30 | \DeclareMathOperator{\real}{Re} | ||
| 31 | \DeclareMathOperator{\imag}{Im} | ||
| 32 | \DeclareMathOperator{\vol}{vol} | ||
| 33 | \DeclareMathOperator{\den}{den} | ||
| 34 | \DeclareMathOperator{\rank}{rank} | ||
| 35 | \DeclareMathOperator{\lcm}{lcm} | ||
| 36 | \DeclareMathOperator{\rad}{rad} | ||
| 37 | \DeclareMathOperator{\ord}{ord} | ||
| 38 | \DeclareMathOperator{\Br}{Br} | ||
| 39 | \DeclareMathOperator{\inv}{inv} | ||
| 40 | \DeclareMathOperator{\Nm}{Nm} | ||
| 41 | \DeclareMathOperator{\Tr}{Tr} | ||
| 42 | \DeclareMathOperator{\an}{an} | ||
| 43 | \DeclareMathOperator{\op}{op} | ||
| 44 | \DeclareMathOperator{\sep}{sep} | ||
| 45 | \DeclareMathOperator{\unr}{unr} | ||
| 46 | \DeclareMathOperator{\et}{\acute et} | ||
| 47 | \DeclareMathOperator{\ev}{ev} | ||
| 48 | \DeclareMathOperator{\gl}{GL} | ||
| 49 | \DeclareMathOperator{\SL}{SL} | ||
| 50 | \DeclareMathOperator{\mat}{Mat} | ||
| 51 | \DeclareMathOperator{\ab}{ab} | ||
| 52 | \DeclareMathOperator{\tors}{tors} | ||
| 53 | \DeclareMathOperator{\ed}{ed} | ||
| 54 | |||
| 55 | \newcommand{\grp}{\textsc{Grp}} | ||
| 56 | \newcommand{\set}{\textsc{Set}} | ||
| 57 | \newcommand{\x}{\mathbf{x}} | ||
| 58 | \newcommand{\naturalto}{\overset{.}{\to}} | ||
| 59 | \newcommand{\qbar}{\overline{\mathbb{Q}}} | ||
| 60 | \newcommand{\zbar}{\overline{\mathbb{Z}}} | ||
| 61 | |||
| 62 | \newcommand{\pro}{\mathbb{P}} | ||
| 63 | \newcommand{\aff}{\mathbb{A}} | ||
| 64 | \newcommand{\quat}{\mathbb{H}} | ||
| 65 | \newcommand{\rea}{\mathbb{R}} | ||
| 66 | \newcommand{\kiu}{\mathbb{Q}} | ||
| 67 | \newcommand{\F}{\mathbb{F}} | ||
| 68 | \newcommand{\zee}{\mathbb{Z}} | ||
| 69 | \newcommand{\ow}{\mathcal{O}} | ||
| 70 | \newcommand{\mcx}{\mathcal{X}} | ||
| 71 | \newcommand{\mcy}{\mathcal{Y}} | ||
| 72 | \newcommand{\mcs}{\mathcal{S}} | ||
| 73 | \newcommand{\mca}{\mathcal{A}} | ||
| 74 | \newcommand{\mcb}{\mathcal{B}} | ||
| 75 | \newcommand{\mcf}{\mathcal{F}} | ||
| 76 | \newcommand{\mcg}{\mathcal{G}} | ||
| 77 | \newcommand{\mct}{\mathcal{T}} | ||
| 78 | \newcommand{\mcq}{\mathcal{Q}} | ||
| 79 | \newcommand{\mcr}{\mathcal{R}} | ||
| 80 | \newcommand{\adl}{\mathbf{A}} | ||
| 81 | \newcommand{\mbk}{\mathbf{k}} | ||
| 82 | \newcommand{\m}{\mathfrak{m}} | ||
| 83 | \newcommand{\p}{\mathfrak{p}} | ||
| 84 | |||
| 85 | \newcommand{\kbar}{\overline{K}} | ||
| 86 | |||
| 87 | \newtheorem{lemma}{Lemma} | ||
| 88 | \newtheorem{proposition}[lemma]{Proposition} | ||
| 89 | \newtheorem{conjecture}[lemma]{Conjecture} | ||
| 90 | \newtheorem{corollary}[lemma]{Corollary} | ||
| 91 | \newtheorem{definition}[lemma]{Definition} | ||
| 92 | \newtheorem{theorem}[lemma]{Theorem} | ||
| 93 | \newtheorem{cond-thm}[lemma]{Conditional Theorem} | ||
| 94 | \theoremstyle{definition} | ||
| 95 | \newtheorem{remark}[lemma]{Remark} | ||
| 96 | |||
| 97 | \author{Sebastiano Tronto} | ||
| 98 | |||
| 99 | |||
| 100 | \begin{document} | ||
| 101 | |||
| 102 | \begin{lemma} | ||
| 103 | \label{lemma_zero} | ||
| 104 | Let $H\leq \mathbb{Q}^\times$ be a finitely generated subgroup. Assume that $H$ does not contain minus a square of $\mathbb{Q}^\times$ or that $m=1$. Then we have | ||
| 105 | \begin{align*} | ||
| 106 | \left[\mathbb{Q}_{2^m}\left(\sqrt{H}\right):\mathbb{Q}_{2^m}\right]=\begin{cases} | ||
| 107 | \#\overline H/2 & \text{ if }m\geq 3\text{ and }\exists b\in H\text{ with }b\equiv\pm2\pmod{\mathbb{Q}^{\times 2}},\\ | ||
| 108 | \#\overline H&\text{ otherwise}. | ||
| 109 | \end{cases} | ||
| 110 | \end{align*} | ||
| 111 | where $\overline{H}$ is the image of $H\cdot \mathbb{Q}^{\times 2}$ in $\mathbb{Q}^\times/\mathbb{Q}^{\times 2}$. | ||
| 112 | \begin{proof} | ||
| 113 | Clearly we may assume that $H$ is generated by suqarefree integers $\{g_1,\dots, g_r\}$, where $r=\#\overline H$. In fact, we have that $\mathbb{Q}_{2^m}(\sqrt{H})=\mathbb{Q}_{2^m}(\sqrt{H'})$ for any $H'$ such that $(H\cdot \mathbb{Q}^{\times 2})/\mathbb{Q}^{\times 2}=(H'\cdot \mathbb{Q}^{\times 2})/\mathbb{Q}^{\times 2}$. Recall moreover that by {\color{red}Lemma 13} if there is $\pm2$ times a square in $H$ we can assume that, say, $g_1=\pm 2$. | ||
| 114 | |||
| 115 | Assume first that $m\geq 2$, so that $-1\not\in H$ by assumption. In this case we can work over $\mathbb Q_4$ and use Theorem 18 of \cite{DebryPerucca}. We just need to compute the divisibility parameters over $\mathbb{Q}_4$: | ||
| 116 | \begin{align*} | ||
| 117 | d_1=\begin{cases} | ||
| 118 | 0&\text{ if }g_1\neq\pm2\\ | ||
| 119 | 1&\text{ if }g_1=\pm2 | ||
| 120 | \end{cases}, | ||
| 121 | && | ||
| 122 | d_i=0 | ||
| 123 | \quad \text{ for $i=2,\dots, r$},\\ | ||
| 124 | h_1=\begin{cases} | ||
| 125 | 0&\text{ if } 0\leq g_1\neq2\\ | ||
| 126 | 1&\text{ if } -2\neq g_1<0\\ | ||
| 127 | 2&\text{ if } g_1=\pm 2 | ||
| 128 | \end{cases}, && | ||
| 129 | h_i=\begin{cases} | ||
| 130 | 0&\text{ if }g_i>0\\ | ||
| 131 | 1&\text{ if }g_i<0 | ||
| 132 | \end{cases} | ||
| 133 | \quad \text{ for $i=2,\dots, r$}. | ||
| 134 | \end{align*} | ||
| 135 | Thus, keeping the notation of the aformentioned Theorem, we get | ||
| 136 | \begin{align*} | ||
| 137 | n_1=\min(1,d_1)=\begin{cases} | ||
| 138 | 0&\text{ if }g_1\neq\pm2\\ | ||
| 139 | 1&\text{ if }g_1=\pm2 | ||
| 140 | \end{cases},&& n_i=0\quad \text{ for $i=2,\dots, r$}. | ||
| 141 | \end{align*} | ||
| 142 | Thus we get | ||
| 143 | \begin{align*} | ||
| 144 | v_2\left[\mathbb{Q}_{2^m}(\sqrt{H}):\mathbb Q_{2^m}\right]&=\max(h_1+n_1,\dots, h_r+n_r,m)-m+r-\sum_{i=1}^rn_i=\\ | ||
| 145 | &=\begin{cases} | ||
| 146 | \max(3,m)-m+r-\sum_{i=1}^rn_i&\text{ if }\pm2\in H\\ | ||
| 147 | r-\sum_{i=1}^rn_i&\text{ if }\pm2\not \in H | ||
| 148 | \end{cases}\\ | ||
| 149 | &=\begin{cases} | ||
| 150 | 1+r-1&\text{ if }m=2\text{ and }\pm2\in H\\ | ||
| 151 | r-1&\text{ if }m\geq3\text{ and }\pm2\in H\\ | ||
| 152 | r&\text{ if }\pm2\not\in H | ||
| 153 | \end{cases} | ||
| 154 | \end{align*} | ||
| 155 | which is what we want. | ||
| 156 | |||
| 157 | Assume now that $m=1$. If $-1\not\in H$, we get the desired result directly from Lemma 19 of \cite{DebryPerucca} applied with $G=H$, using the computations that we did in the previous case. In case $-1\in H$, let $H'$ be any subgroup of $H$ such that $H=H'\oplus\langle-1\rangle$. Notice that we have $\#\overline {H'}=r-1$, so that Lemma 19 with $G=H'$ again gives our result, and the Proposition is proved. | ||
| 158 | \end{proof} | ||
| 159 | \end{lemma} | ||
| 160 | |||
| 161 | Let $G\leq \mathbb{Q}^\times$ be a finitely generated torsion-free subgroup of rank $r$ and let $M$ and $n$ be integers such that $2^n\,|\,M$. We want to compute the degree | ||
| 162 | \begin{align} | ||
| 163 | \label{degree} | ||
| 164 | \left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]. | ||
| 165 | \end{align} | ||
| 166 | |||
| 167 | We will use the same notation as that of Remark 17 of Pietro's file. | ||
| 168 | |||
| 169 | \section{Case $G\leq \mathbb{Q}_+^\times$} | ||
| 170 | |||
| 171 | Assume that $G\leq \mathbb{Q}_+^\times$. In this case, by Remark 17, we have that | ||
| 172 | \begin{align*} | ||
| 173 | \mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M =\mathbb{Q}_{2^n}\left(\sqrt{H}\right). | ||
| 174 | \end{align*} | ||
| 175 | |||
| 176 | Let $\overline{H}$ be the image of $H$ in $\mathbb{Q^\times}/\mathbb{Q}^{\times 2}$. By Remark 17 and Lemma \ref{lemma_zero} above, the degree (\ref{degree}) is given by | ||
| 177 | \begin{align*} | ||
| 178 | \left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]= | ||
| 179 | \begin{cases} | ||
| 180 | \#\overline H/2 & \text{if }n\geq 3\text{ and }2\in H,\\ | ||
| 181 | \#\overline H&\text{ otherwise}. | ||
| 182 | \end{cases} | ||
| 183 | \end{align*} | ||
| 184 | |||
| 185 | \section{General case} | ||
| 186 | |||
| 187 | Let $\mathcal{B}$ be a basis for $G$ and let $\mathcal{B}_i\subseteq \mathcal{B}$ be the subset of basis elements of $2$-divisibility $i$. Call also $L=\max d_i$ the largest $2$-divisiblity parameter. In this way $\mathcal{B}_0,\dots,\mathcal{B}_L$ is a partition of $\mathcal{B}$. | ||
| 188 | |||
| 189 | As explained in ({\color{red}ref}) we may assume that there is at most one negative basis element. Since we have dealt with the $G\subseteq \mathbb{Q}_+$ case in the previous section, we assume that such an element exists and that it has $2$-divisibility $d$. We call this element $g_0$. | ||
| 190 | |||
| 191 | It is (or will be?) clear ({\color{red}but we should explain it}) that it actually does not matter if we have negative elements of divisibility $0$: that case is treated exactly as the case $G\subseteq \mathbb{Q}_+$. In conclusion, we assume that: | ||
| 192 | \begin{align*} | ||
| 193 | \mathcal{B}_1,\dots,\mathcal{B}_{d-1},\mathcal{B}_{d+1},\dots,\mathcal{B}_L\subseteq \mathbb{Q}_+,\\ | ||
| 194 | g_0<0 \text{ and }\mathcal{B}_d\setminus \{g_0\}\subseteq \mathbb{Q}_+,\\ | ||
| 195 | d\geq 1. | ||
| 196 | \end{align*} | ||
| 197 | |||
| 198 | We also let | ||
| 199 | \begin{align*} | ||
| 200 | N=\begin{cases} | ||
| 201 | \max(3,L)&\text{if }d\neq L,\\ | ||
| 202 | \max(3,L+1)&\text{if }d=L. | ||
| 203 | \end{cases} | ||
| 204 | \end{align*} | ||
| 205 | |||
| 206 | \subsection{General case, $n=1(\leq d)$} | ||
| 207 | This case can be treated as follows: let $\mathcal{S}'=\mathcal{S}\cup \{-1\}$ and let $H'$ be constructed from $\mathcal{S}'$ in the exact same way as $H$ is constructed from $\mathcal{S}$. Then it's easy to check ({\color{red}it follows from the ``torsion case'' for $G$, it is for sure in some other file}) that $\mathbb{Q}_{2^n}\left(\sqrt{H'}\right)=\mathbb{Q}_{2^{w'}}\left(\sqrt{H}\right)$, where $w'=\min(v_2(M),n+1)$ (as in Remark 17). Then we can again use Lemma \ref{lemma_zero} and conclude that | ||
| 208 | \begin{align*} | ||
| 209 | \left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]= | ||
| 210 | \#\overline{H'}, | ||
| 211 | \end{align*} | ||
| 212 | where $\#\overline{H'}$ is the image of $H'$ in $\mathbb{Q}^\times/\mathbb{Q}^{\times 2}$. | ||
| 213 | |||
| 214 | \subsection{General case, $n=2\leq d$} | ||
| 215 | We consider two cases: | ||
| 216 | \begin{itemize} | ||
| 217 | \item If $v_2(M)=2$ we have $\left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]=\left[\mathbb{Q}_4\left(\sqrt{H}\right):\mathbb{Q}_4\right]=\#\overline{H}$ by Lemma \ref{lemma_zero}. | ||
| 218 | \item If $v_2(M)\geq 3$ we have | ||
| 219 | \begin{align*} | ||
| 220 | \left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]&=\left[\mathbb{Q}_8\left(\sqrt{H}\right):\mathbb{Q}_4\right]=\left[\mathbb{Q}_8\left(\sqrt{H}\right):\mathbb{Q}_8\right]\cdot \left[\mathbb{Q}_8:\mathbb{Q}_4\right]=\\&=2\left[\mathbb{Q}_8\left(\sqrt{H}\right):\mathbb{Q}_8\right], | ||
| 221 | \end{align*} | ||
| 222 | which, by Lemma \ref{lemma_zero}, is given by $\#\overline{H}$ if $2 \in H$ and by $2\#\overline{H}$ otherwise. | ||
| 223 | \end{itemize} | ||
| 224 | |||
| 225 | \subsection{General case, $3\leq n\leq d$} | ||
| 226 | We consider two cases: | ||
| 227 | \begin{itemize} | ||
| 228 | \item If $v_2(M)=3$, by lemma \ref{lemma_zero} we have | ||
| 229 | \begin{align*} | ||
| 230 | \left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]=\left[\mathbb{Q}_8\left(\sqrt{H}\right):\mathbb{Q}_8\right]=\begin{cases} | ||
| 231 | \#\overline H/2 & \text{ if }\pm 2\in H,\\ | ||
| 232 | \#\overline H&\text{ otherwise}. | ||
| 233 | \end{cases} | ||
| 234 | \end{align*} | ||
| 235 | \item If $v_2(M)\geq 4$ we have | ||
| 236 | \begin{align*} | ||
| 237 | \left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]&=\left[\mathbb{Q}_{16}\left(\sqrt{H}\right):\mathbb{Q}_8\right]=\left[\mathbb{Q}_{16}\left(\sqrt{H}\right):\mathbb{Q}_{16}\right]\cdot \left[\mathbb{Q}_{16}:\mathbb{Q}_8\right]=\\&=2\left[\mathbb{Q}_{16}\left(\sqrt{H}\right):\mathbb{Q}_{16}\right], | ||
| 238 | \end{align*} | ||
| 239 | which, by Lemma \ref{lemma_zero}, is given by $\#\overline{H}$ if $2 \in H$ and by $2\#\overline{H}$ otherwise. | ||
| 240 | \end{itemize} | ||
| 241 | |||
| 242 | \subsection{General case, $n\geq d+2$} | ||
| 243 | By the corresponding case in Remark 17, we simply have | ||
| 244 | \begin{align*} | ||
| 245 | \left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]=\begin{cases} | ||
| 246 | \#\overline {H'}/2 & \text{ if }\pm 2\in H,\\ | ||
| 247 | \#\overline {H'}&\text{ otherwise}. | ||
| 248 | \end{cases} | ||
| 249 | \end{align*} | ||
| 250 | where $H'$ is constructed from $\mathcal{S}'=\mathcal{S}\cup\{B_0\}$ and $\overline{H'}$ is the image of $H'$ in $\mathbb{Q}^\times/\mathbb{Q}^{\times 2}$. | ||
| 251 | |||
| 252 | \subsection{General case, $n=d+1$} | ||
| 253 | We distinguish between some cases. | ||
| 254 | \begin{itemize} | ||
| 255 | \item Assume $n=2$ (thus $d=3$) and $v_2(g_0)=2$ (i.e. $2$ divides the square-free part of $B_0$, where $g_0=-B_0^{2^d}$). Then we write the square-free part of $B_0$ as $2s$ for some odd square-free $s\in\mathbb{Z}$. Then letting $\mathcal{S}':=\mathcal{S}\cup \{s\}$ and construct $H'$ from $\mathcal{S}'$ in the usual way. By Remark 17 we have | ||
| 256 | \begin{align*} | ||
| 257 | \left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]=\left[\mathbb{Q}_{2^n}\left(\sqrt{H'}\right):\mathbb{Q}_{2^n}\right]=\#\overline{H'}. | ||
| 258 | \end{align*} | ||
| 259 | But we can be more precise and say that | ||
| 260 | \begin{align*} | ||
| 261 | \#\overline{H'}=\begin{cases} | ||
| 262 | 2\#\overline{H}&\text{if }\sqrt{xs}\in\mathbb{Q}_M\text{ for some }x\in\mathcal{S}\text{ and }s\not\in \mathcal{S},\\ | ||
| 263 | \#\overline{H}&\text{otherwise}. | ||
| 264 | \end{cases} | ||
| 265 | \end{align*} | ||
| 266 | %\item Assume $n=2$, $2^{n+1}\nmid M$ and either $v_2(g_0)>2$ or $g_0$ is odd. Then $\left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]=\#\overline H$. | ||
| 267 | %\item Assume $n=2$, $2^{n+1}\,|\,M$ and either $v_2(g_0)>2$ or $g_0$ is odd. ({\color{red}TODO}) | ||
| 268 | \item Assume $n\geq 2$ and $2^{n+1}\nmid M$. Then | ||
| 269 | \begin{align*} | ||
| 270 | \left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]=\begin{cases} | ||
| 271 | \#\overline H/2 & \text{ if }\pm 2\in H\text{ and }n\geq 3,\\ | ||
| 272 | \#\overline H&\text{ otherwise}. | ||
| 273 | \end{cases} | ||
| 274 | \end{align*} | ||
| 275 | \item Assume $n\geq 2$ and $2^{n+1}\,|\,M$. Following the notation of Remark 17, we have | ||
| 276 | \begin{align*} | ||
| 277 | \mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M=\mathbb{Q}_{2^n}\left(\sqrt{\langle H, H'\rangle}\right) | ||
| 278 | \end{align*} | ||
| 279 | hence | ||
| 280 | \begin{align*} | ||
| 281 | \left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]&=\left[\mathbb{Q}_{2^n}\left(\sqrt{\langle H, H'\rangle}\right):\mathbb{Q}_{2^n}\right]=\\ | ||
| 282 | &=\left[\mathbb{Q}_{2^n}\left(\sqrt{\langle H, H'\rangle}\right):\mathbb{Q}_{2^n}\left(\sqrt{H}\right)\right]\cdot \left[\mathbb{Q}_{2^n}\left(\sqrt{H}\right):\mathbb{Q}_{2^n}\right]. | ||
| 283 | \end{align*} | ||
| 284 | We claim that | ||
| 285 | \begin{align*} | ||
| 286 | \left[\mathbb{Q}_{2^n}\left(\sqrt{\langle H, H'\rangle}\right):\mathbb{Q}_{2^n}\left(\sqrt{H}\right)\right]=\begin{cases} | ||
| 287 | 1&\text{ if }H'=\emptyset\text{ or }H'=\{2\zeta_4\},\\ | ||
| 288 | 2&\text{ otherwise}. | ||
| 289 | \end{cases} | ||
| 290 | \end{align*} | ||
| 291 | To see this, notice that $\sqrt{2\zeta_4}=\zeta_8\sqrt{2}\in\mathbb{Q}_4\subseteq\mathbb{Q}_{2^n}\left(\sqrt{H}\right)$, so the first case is settled. Assume now that there is $x=\zeta_{2^n}b\in H'$ with $x\neq 2\zeta_4$. If $y=\zeta_{2^n}c$ is any other element of $H'$, then we have $\sqrt{x/y}=\sqrt{b/c}$. So if $x,y\in \mathbb{Q}_{2^n}\left(\sqrt{\langle H, H'\rangle}\right)$ we have also $\sqrt{b/c}\in \mathbb{Q}_{2^n}\left(\sqrt{\langle H, H'\rangle}\right)$, which by Kummer theory implies $bc\in H$. But then $y\in \mathbb{Q}_{2^n}\left(\sqrt{H}\right)\left(x\right)$. So we have $\mathbb{Q}_{2^n}\left(\sqrt{\langle H, H'\rangle}\right)=\mathbb{Q}_{2^n}\left(\sqrt{H}\right)(x)$, and the sought degree is $\left[\mathbb{Q}_{2^n}\left(\sqrt{H}\right)(x):\mathbb{Q}_{2^n}\left(\sqrt{H}\right)\right]$, which is in fact $2$ ({\color{red}Do we need to explain this better?}). | ||
| 292 | |||
| 293 | We conclude that | ||
| 294 | \begin{align*} | ||
| 295 | \left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]=\begin{cases} | ||
| 296 | \#\overline{H}/2&\text{ if } n\geq 3,\,\pm2 \in H\text{ and }H'\subseteq\{2\zeta_4\},\\ | ||
| 297 | \#\overline{H}&\text{ if }(n<3\text{ or }\pm2\not\in H)\text{ and }H'\subseteq \{2\zeta_4\},\\ | ||
| 298 | \#\overline{H}&\text{ if } n\geq 3,\,\pm2 \in H\text{ and }H'\not\subseteq\{2\zeta_4\},\\ | ||
| 299 | 2\cdot \#\overline{H}&\text{ if }(n<3\text{ or }\pm2\not\in H)\text{ and }H'\not\subseteq \{2\zeta_4\}. | ||
| 300 | \end{cases} | ||
| 301 | \end{align*} | ||
| 302 | %Let $s$ as in the first subcase of this section and let $\mathcal{C}'$ and $H'$ be as in the last case of Remark 17. We have | ||
| 303 | %\begin{align*} | ||
| 304 | %\left[\mathbb{Q}_{2^n}\left(G^{1/2^n}\right)\cap \mathbb{Q}_M:\mathbb{Q}_{2^n}\right]=&\left[\mathbb{Q}_{2^n}\left(\sqrt{\langle H,\zeta_{2^n}H'\rangle}\right):\mathbb{Q}_{2^n}\right]=\\ | ||
| 305 | %=&\left[\mathbb{Q}_{2^n}\left(\sqrt{\langle H,\zeta_{2^n}H'\rangle}\right):\mathbb{Q}_{2^n}\left(\sqrt{H}\right)\right]\cdot \left[\mathbb{Q}_{2^n}\left(\sqrt{H}\right):\mathbb{Q}_{2^n}\right]. | ||
| 306 | %\end{align*} | ||
| 307 | %Notice that, by construction of $H$ and $H'$, the degree $\left[\mathbb{Q}_{2^n}\left(\sqrt{\langle H,\zeta_{2^n}H'\rangle}\right):\mathbb{Q}_{2^n}\left(\sqrt{H}\right)\right]$ is either $1$ | ||
| 308 | \end{itemize} | ||
| 309 | |||
| 310 | \begin{thebibliography}{10} \expandafter\ifx\csname url\endcsname\relax \def\url#1{\texttt{#1}}\fi \expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi | ||
| 311 | |||
| 312 | \bibitem{DebryPerucca} | ||
| 313 | \textsc{Debry, C. - Perucca, A.}: \emph{Reductions of algebraic integers}, J. Number Theory, {\bf 167} (2016), 259--283. | ||
| 314 | |||
| 315 | \bibitem{PeruccaSgobba} | ||
| 316 | \textsc{Perucca, A. - Sgobba, P.}: \emph{Kummer Theory for Number Fields}, preprint. | ||
| 317 | |||
| 318 | \end{thebibliography} | ||
| 319 | |||
| 320 | \end{document} \ No newline at end of file | ||
diff --git a/tex/preprint.pdf b/tex/preprint.pdf new file mode 100644 index 0000000..061fd7c --- /dev/null +++ b/tex/preprint.pdf | |||
| Binary files differ | |||
