passagemath-repl 10.5.28__py3-none-any.whl → 10.5.30__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. passagemath_repl-10.5.30.data/data/share/jupyter/kernels/sagemath/kernel.json +1 -0
  2. passagemath_repl-10.5.30.data/data/share/jupyter/kernels/sagemath/logo-64x64.png +0 -0
  3. passagemath_repl-10.5.30.data/data/share/jupyter/kernels/sagemath/logo.svg +352 -0
  4. {passagemath_repl-10.5.28.dist-info → passagemath_repl-10.5.30.dist-info}/METADATA +3 -3
  5. {passagemath_repl-10.5.28.dist-info → passagemath_repl-10.5.30.dist-info}/RECORD +95 -24
  6. {passagemath_repl-10.5.28.dist-info → passagemath_repl-10.5.30.dist-info}/top_level.txt +1 -0
  7. sage/ext_data/all__sagemath_repl.py +1 -0
  8. sage/interfaces/all__sagemath_repl.py +1 -0
  9. sage/repl/ipython_kernel/install.py +6 -8
  10. sage/tests/books/__init__.py +2 -0
  11. sage/tests/books/computational-mathematics-with-sagemath/__init__.py +1 -0
  12. sage/tests/books/computational-mathematics-with-sagemath/calculus_doctest.py +550 -0
  13. sage/tests/books/computational-mathematics-with-sagemath/combinat_doctest.py +1054 -0
  14. sage/tests/books/computational-mathematics-with-sagemath/domaines_doctest.py +444 -0
  15. sage/tests/books/computational-mathematics-with-sagemath/float_doctest.py +478 -0
  16. sage/tests/books/computational-mathematics-with-sagemath/graphique_doctest.py +255 -0
  17. sage/tests/books/computational-mathematics-with-sagemath/graphtheory_doctest.py +419 -0
  18. sage/tests/books/computational-mathematics-with-sagemath/integration_doctest.py +291 -0
  19. sage/tests/books/computational-mathematics-with-sagemath/linalg_doctest.py +455 -0
  20. sage/tests/books/computational-mathematics-with-sagemath/linsolve_doctest.py +422 -0
  21. sage/tests/books/computational-mathematics-with-sagemath/lp_doctest.py +235 -0
  22. sage/tests/books/computational-mathematics-with-sagemath/mpoly_doctest.py +561 -0
  23. sage/tests/books/computational-mathematics-with-sagemath/nonlinear_doctest.py +491 -0
  24. sage/tests/books/computational-mathematics-with-sagemath/numbertheory_doctest.py +156 -0
  25. sage/tests/books/computational-mathematics-with-sagemath/polynomes_doctest.py +406 -0
  26. sage/tests/books/computational-mathematics-with-sagemath/premierspas_doctest.py +181 -0
  27. sage/tests/books/computational-mathematics-with-sagemath/programmation_doctest.py +663 -0
  28. sage/tests/books/computational-mathematics-with-sagemath/recequadiff_doctest.py +393 -0
  29. sage/tests/books/computational-mathematics-with-sagemath/sol/__init__.py +1 -0
  30. sage/tests/books/computational-mathematics-with-sagemath/sol/calculus_doctest.py +265 -0
  31. sage/tests/books/computational-mathematics-with-sagemath/sol/combinat_doctest.py +218 -0
  32. sage/tests/books/computational-mathematics-with-sagemath/sol/domaines_doctest.py +60 -0
  33. sage/tests/books/computational-mathematics-with-sagemath/sol/float_doctest.py +142 -0
  34. sage/tests/books/computational-mathematics-with-sagemath/sol/graphique_doctest.py +106 -0
  35. sage/tests/books/computational-mathematics-with-sagemath/sol/graphtheory_doctest.py +54 -0
  36. sage/tests/books/computational-mathematics-with-sagemath/sol/integration_doctest.py +57 -0
  37. sage/tests/books/computational-mathematics-with-sagemath/sol/linalg_doctest.py +57 -0
  38. sage/tests/books/computational-mathematics-with-sagemath/sol/linsolve_doctest.py +26 -0
  39. sage/tests/books/computational-mathematics-with-sagemath/sol/lp_doctest.py +48 -0
  40. sage/tests/books/computational-mathematics-with-sagemath/sol/mpoly_doctest.py +116 -0
  41. sage/tests/books/computational-mathematics-with-sagemath/sol/nonlinear_doctest.py +112 -0
  42. sage/tests/books/computational-mathematics-with-sagemath/sol/numbertheory_doctest.py +168 -0
  43. sage/tests/books/computational-mathematics-with-sagemath/sol/polynomes_doctest.py +108 -0
  44. sage/tests/books/computational-mathematics-with-sagemath/sol/recequadiff_doctest.py +59 -0
  45. sage/tests/books/judson-abstract-algebra/__init__.py +1 -0
  46. sage/tests/books/judson-abstract-algebra/actions-sage-exercises.py +52 -0
  47. sage/tests/books/judson-abstract-algebra/actions-sage.py +174 -0
  48. sage/tests/books/judson-abstract-algebra/algcodes-sage.py +131 -0
  49. sage/tests/books/judson-abstract-algebra/boolean-sage.py +270 -0
  50. sage/tests/books/judson-abstract-algebra/cosets-sage-exercises.py +88 -0
  51. sage/tests/books/judson-abstract-algebra/cosets-sage.py +171 -0
  52. sage/tests/books/judson-abstract-algebra/crypt-sage.py +152 -0
  53. sage/tests/books/judson-abstract-algebra/cyclic-sage.py +451 -0
  54. sage/tests/books/judson-abstract-algebra/domains-sage.py +164 -0
  55. sage/tests/books/judson-abstract-algebra/fields-sage.py +300 -0
  56. sage/tests/books/judson-abstract-algebra/finite-sage.py +109 -0
  57. sage/tests/books/judson-abstract-algebra/galois-sage.py +485 -0
  58. sage/tests/books/judson-abstract-algebra/groups-sage.py +281 -0
  59. sage/tests/books/judson-abstract-algebra/homomorph-sage-exercises.py +66 -0
  60. sage/tests/books/judson-abstract-algebra/homomorph-sage.py +201 -0
  61. sage/tests/books/judson-abstract-algebra/integers-sage.py +198 -0
  62. sage/tests/books/judson-abstract-algebra/isomorph-sage.py +173 -0
  63. sage/tests/books/judson-abstract-algebra/normal-sage.py +134 -0
  64. sage/tests/books/judson-abstract-algebra/permute-sage.py +320 -0
  65. sage/tests/books/judson-abstract-algebra/poly-sage.py +301 -0
  66. sage/tests/books/judson-abstract-algebra/rings-sage.py +414 -0
  67. sage/tests/books/judson-abstract-algebra/sets-sage.py +164 -0
  68. sage/tests/books/judson-abstract-algebra/struct-sage.py +64 -0
  69. sage/tests/books/judson-abstract-algebra/sylow-sage.py +251 -0
  70. sage/tests/books/judson-abstract-algebra/vect-sage-exercises.py +49 -0
  71. sage/tests/books/judson-abstract-algebra/vect-sage.py +212 -0
  72. sage/tests/memcheck/__init__.py +1 -0
  73. sage/tests/memcheck/run_tests.py +25 -0
  74. sage/tests/memcheck/run_tests_in_valgrind.py +36 -0
  75. sage/tests/memcheck/symbolic_expression.py +12 -0
  76. sage/tests/memcheck/verify_no_leak.py +28 -0
  77. sage/tests/all.py +0 -0
  78. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-cachegrind +0 -0
  79. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-callgrind +0 -0
  80. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-cleaner +0 -0
  81. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-coverage +0 -0
  82. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-eval +0 -0
  83. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-fixdoctests +0 -0
  84. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-inline-fortran +0 -0
  85. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-ipynb2rst +0 -0
  86. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-ipython +0 -0
  87. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-massif +0 -0
  88. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-notebook +0 -0
  89. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-omega +0 -0
  90. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-preparse +0 -0
  91. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-run +0 -0
  92. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-run-cython +0 -0
  93. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-runtests +0 -0
  94. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-startuptime.py +0 -0
  95. {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-valgrind +0 -0
  96. {passagemath_repl-10.5.28.dist-info → passagemath_repl-10.5.30.dist-info}/WHEEL +0 -0
@@ -0,0 +1,485 @@
1
+ # sage_setup: distribution = sagemath-repl
2
+ # sage.doctest: needs sage.groups sage.rings.number_field
3
+ ## Sage Doctest File ##
4
+ #**************************************#
5
+ #* Generated from PreTeXt source *#
6
+ #* on 2017-08-24T11:43:34-07:00 *#
7
+ #* *#
8
+ #* http://mathbook.pugetsound.edu *#
9
+ #* *#
10
+ #**************************************#
11
+ ##
12
+ """
13
+ Please contact Rob Beezer (beezer@ups.edu) with
14
+ any test failures here that need to be changed
15
+ as a result of changes accepted into Sage. You
16
+ may edit/change this file in any sensible way, so
17
+ that development work may procede. Your changes
18
+ may later be replaced by the authors of "Abstract
19
+ Algebra: Theory and Applications" when the text is
20
+ updated, and a replacement of this file is proposed
21
+ for review.
22
+ """
23
+ ##
24
+ ## To execute doctests in these files, run
25
+ ## $ $SAGE_ROOT/sage -t <directory-of-these-files>
26
+ ## or
27
+ ## $ $SAGE_ROOT/sage -t <a-single-file>
28
+ ##
29
+ ## Replace -t by "-tp n" for parallel testing,
30
+ ## "-tp 0" will use a sensible number of threads
31
+ ##
32
+ ## See: http://www.sagemath.org/doc/developer/doctesting.html
33
+ ## or run $ $SAGE_ROOT/sage --advanced for brief help
34
+ ##
35
+ ## Generated at 2017-08-24T11:43:34-07:00
36
+ ## From "Abstract Algebra"
37
+ ## At commit 26d3cac0b4047f4b8d6f737542be455606e2c4b4
38
+ ##
39
+ ## Section 23.6 Sage
40
+ ##
41
+ r"""
42
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
43
+
44
+ sage: x = polygen(QQ, 'x')
45
+ sage: N.<a> = NumberField(x^4 - 2); N
46
+ Number Field in a with defining polynomial x^4 - 2
47
+
48
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
49
+
50
+ sage: L.<b> = N.galois_closure(); L
51
+ Number Field in b with defining polynomial x^8 + 28*x^4 + 2500
52
+
53
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
54
+
55
+ sage: L.degree()
56
+ 8
57
+
58
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
59
+
60
+ sage: y = polygen(L, 'y')
61
+ sage: (y^4 - 2).factor()
62
+ (y - 1/120*b^5 - 19/60*b) *
63
+ (y - 1/240*b^5 + 41/120*b) *
64
+ (y + 1/240*b^5 - 41/120*b) *
65
+ (y + 1/120*b^5 + 19/60*b)
66
+
67
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
68
+
69
+ sage: G = L.galois_group(); G
70
+ Galois group 8T4 ([4]2) with order 8 of x^8 + 28*x^4 + 2500
71
+
72
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
73
+
74
+ sage: G.is_abelian()
75
+ False
76
+
77
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
78
+
79
+ sage: G.order()
80
+ 8
81
+
82
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
83
+
84
+ sage: G.list()
85
+ [(), (1,2,8,7)(3,4,6,5),
86
+ (1,3)(2,5)(4,7)(6,8), (1,4)(2,3)(5,8)(6,7),
87
+ (1,5)(2,6)(3,7)(4,8), (1,6)(2,4)(3,8)(5,7),
88
+ (1,7,8,2)(3,5,6,4), (1,8)(2,7)(3,6)(4,5)]
89
+
90
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
91
+
92
+ sage: G.is_isomorphic(DihedralGroup(4))
93
+ True
94
+
95
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
96
+
97
+ sage: x = polygen(QQ, 'x')
98
+ sage: p = x^4 - 2
99
+ sage: N.<a> = NumberField(p); N
100
+ Number Field in a with defining polynomial x^4 - 2
101
+
102
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
103
+
104
+ sage: y = polygen(N, 'y')
105
+ sage: p = p.subs(x=y)
106
+ sage: p.factor()
107
+ (y - a) * (y + a) * (y^2 + a^2)
108
+
109
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
110
+
111
+ sage: M.<b> = NumberField(y^2 + a^2); M
112
+ Number Field in b with defining polynomial y^2 + a^2 over
113
+ its base field
114
+
115
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
116
+
117
+ sage: z = polygen(M, 'z')
118
+ sage: (z^4 - 2).factor()
119
+ (z - b) * (z - a) * (z + a) * (z + b)
120
+
121
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
122
+
123
+ sage: L.<c> = M.absolute_field(); L
124
+ Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
125
+
126
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
127
+
128
+ sage: fromL, toL = L.structure()
129
+
130
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
131
+
132
+ sage: roots = p.roots(ring=L, multiplicities=False); roots
133
+ [1/120*c^5 + 19/60*c,
134
+ 1/240*c^5 - 41/120*c,
135
+ -1/240*c^5 + 41/120*c,
136
+ -1/120*c^5 - 19/60*c]
137
+
138
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
139
+
140
+ sage: [fromL(r) for r in roots]
141
+ [b, a, -a, -b]
142
+
143
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
144
+
145
+ sage: G = End(L); G
146
+ Automorphism group of Number Field in c with
147
+ defining polynomial x^8 + 28*x^4 + 2500
148
+
149
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
150
+
151
+ sage: [tau(1) for tau in G]
152
+ [1, 1, 1, 1, 1, 1, 1, 1]
153
+
154
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
155
+
156
+ sage: Sequence([[fromL(tau(r)) for r in roots] for tau in G], cr=True)
157
+ [[b, a, -a, -b],
158
+ [-b, -a, a, b],
159
+ [a, -b, b, -a],
160
+ [b, -a, a, -b],
161
+ [-a, -b, b, a],
162
+ [a, b, -b, -a],
163
+ [-b, a, -a, b],
164
+ [-a, b, -b, a]]
165
+
166
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
167
+
168
+ sage: S4 = SymmetricGroup(4)
169
+ sage: elements = [S4([1, 2, 3, 4]),
170
+ ....: S4([4, 3, 2, 1]),
171
+ ....: S4([2, 4, 1, 3]),
172
+ ....: S4([1, 3, 2, 4]),
173
+ ....: S4([3, 4, 1, 2]),
174
+ ....: S4([2, 1, 4, 3]),
175
+ ....: S4([4, 2, 3, 1]),
176
+ ....: S4([3, 1, 4, 2])]
177
+ sage: elements
178
+ [(), (1,4)(2,3), (1,2,4,3), (2,3), (1,3)(2,4),
179
+ (1,2)(3,4), (1,4), (1,3,4,2)]
180
+
181
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
182
+
183
+ sage: P = S4.subgroup(elements)
184
+ sage: P.is_isomorphic(DihedralGroup(4))
185
+ True
186
+
187
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
188
+
189
+ sage: basis = L.power_basis(); basis
190
+ [1, c, c^2, c^3, c^4, c^5, c^6, c^7]
191
+
192
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
193
+
194
+ sage: tau = G[3]
195
+ sage: z = 4 + 5*c+ 6*c^3-7*c^6
196
+ sage: tz = tau(4 + 5*c+ 6*c^3-7*c^6); tz
197
+ 11/250*c^7 - 98/25*c^6 + 1/12*c^5 + 779/125*c^3 +
198
+ 6006/25*c^2 - 11/6*c + 4
199
+
200
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
201
+
202
+ sage: tz.vector()
203
+ (4, -11/6, 6006/25, 779/125, 0, 1/12, -98/25, 11/250)
204
+
205
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
206
+
207
+ sage: tau_matrix = column_matrix([tau(be).vector() for be in basis])
208
+ sage: tau_matrix
209
+ [ 1 0 0 0 -28 0 0 0]
210
+ [ 0 -11/30 0 0 0 779/15 0 0]
211
+ [ 0 0 -14/25 0 0 0 -858/25 0]
212
+ [ 0 0 0 779/750 0 0 0 -4031/375]
213
+ [ 0 0 0 0 -1 0 0 0]
214
+ [ 0 1/60 0 0 0 11/30 0 0]
215
+ [ 0 0 -1/50 0 0 0 14/25 0]
216
+ [ 0 0 0 11/1500 0 0 0 -779/750]
217
+
218
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
219
+
220
+ sage: tau_matrix*z.vector()
221
+ (4, -11/6, 6006/25, 779/125, 0, 1/12, -98/25, 11/250)
222
+
223
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
224
+
225
+ sage: tau_matrix*(z.vector()) == (tau(z)).vector()
226
+ True
227
+
228
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
229
+
230
+ sage: K = (tau_matrix-identity_matrix(8)).right_kernel(); K
231
+ Vector space of degree 8 and dimension 4 over Rational Field
232
+ Basis matrix:
233
+ [ 1 0 0 0 0 0 0 0]
234
+ [ 0 1 0 0 0 1/38 0 0]
235
+ [ 0 0 1 0 0 0 -1/22 0]
236
+ [ 0 0 0 1 0 0 0 1/278]
237
+
238
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
239
+
240
+ sage: fromL(1)
241
+ 1
242
+
243
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
244
+
245
+ sage: fromL(c + (1/38)*c^5)
246
+ 60/19*b
247
+
248
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
249
+
250
+ sage: fromL(c^2 - (1/22)*c^6)
251
+ 150/11*a^2
252
+
253
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
254
+
255
+ sage: fromL(c^3 + (1/278)*c^7)
256
+ 1500/139*a^2*b
257
+
258
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
259
+
260
+ sage: a^2 + b^2
261
+ 0
262
+
263
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
264
+
265
+ sage: sg = P.subgroups()
266
+ sage: [H.gens() for H in sg]
267
+ [((),),
268
+ ((1,4)(2,3),),
269
+ ((2,3),),
270
+ ((1,4),),
271
+ ((1,2)(3,4),),
272
+ ((1,3)(2,4),),
273
+ ((1,4)(2,3), (2,3)),
274
+ ((1,4)(2,3), (1,2,4,3)),
275
+ ((1,4)(2,3), (1,2)(3,4)),
276
+ ((1,4)(2,3), (2,3), (1,2,4,3))]
277
+
278
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
279
+
280
+ sage: [H.order() for H in sg]
281
+ [1, 2, 2, 2, 2, 2, 4, 4, 4, 8]
282
+
283
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
284
+
285
+ sage: tau = G[4]
286
+ sage: tau_matrix = column_matrix([tau(be).vector() for be in basis])
287
+ sage: (tau_matrix-identity_matrix(8)).right_kernel()
288
+ Vector space of degree 8 and dimension 4 over Rational Field
289
+ Basis matrix:
290
+ [ 1 0 0 0 0 0 0 0]
291
+ [ 0 1 0 0 0 1/158 0 0]
292
+ [ 0 0 1 0 0 0 1/78 0]
293
+ [ 0 0 0 1 0 0 0 13/614]
294
+
295
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
296
+
297
+ sage: fromL(tau(1))
298
+ 1
299
+
300
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
301
+
302
+ sage: fromL(tau(c+(1/158)*c^5))
303
+ 120/79*b - 120/79*a
304
+
305
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
306
+
307
+ sage: fromL(tau(c^2+(1/78)*c^6))
308
+ -200/39*a*b
309
+
310
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
311
+
312
+ sage: fromL(tau(c^3+(13/614)*c^7))
313
+ 3000/307*a^2*b + 3000/307*a^3
314
+
315
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
316
+
317
+ sage: (b-a)^2
318
+ -2*a*b
319
+
320
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
321
+
322
+ sage: (b-a)^3
323
+ 2*a^2*b + 2*a^3
324
+
325
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
326
+
327
+ sage: subinfo = L.subfield((79/120)*(c+(1/158)*c^5)); subinfo
328
+ (Number Field in c0 with defining polynomial x^4 + 8 with c0 = 1/240*c^5 + 79/120*c,
329
+ Ring morphism:
330
+ From: Number Field in c0 with defining polynomial x^4 + 8 with c0 = 1/240*c^5 + 79/120*c
331
+ To: Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
332
+ Defn: c0 |--> 1/240*c^5 + 79/120*c)
333
+
334
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
335
+
336
+ sage: V = QQ^8
337
+ sage: for tau in [G[0], G[1], G[3], G[6]]:
338
+ ....: tau_matrix = column_matrix([tau(be).vector() for be in basis])
339
+ ....: K = (tau_matrix-identity_matrix(8)).right_kernel()
340
+ ....: V = V.intersection(K)
341
+ sage: V
342
+ Vector space of degree 8 and dimension 2 over Rational Field
343
+ Basis matrix:
344
+ [ 1 0 0 0 0 0 0 0]
345
+ [ 0 0 1 0 0 0 -1/22 0]
346
+
347
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
348
+
349
+ sage: fromL(tau(c^2 - (1/22)*c^6))
350
+ 150/11*a^2
351
+
352
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
353
+
354
+ sage: F, mapping = L.subfield((11/150)*(c^2 - (1/22)*c^6))
355
+ sage: F
356
+ Number Field in c0 with defining polynomial x^2 - 2 with c0 = -1/300*c^6 + 11/150*c^2
357
+
358
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
359
+
360
+ sage: V = QQ^8
361
+ sage: for tau in [G[0], G[1], G[2], G[7]]:
362
+ ....: tau_matrix = column_matrix([tau(be).vector() for be in basis])
363
+ ....: K = (tau_matrix-identity_matrix(8)).right_kernel()
364
+ ....: V = V.intersection(K)
365
+ sage: V
366
+ Vector space of degree 8 and dimension 2 over Rational Field
367
+ Basis matrix:
368
+ [1 0 0 0 0 0 0 0]
369
+ [0 0 0 0 1 0 0 0]
370
+
371
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
372
+
373
+ sage: fromL(tau(c^4))
374
+ -24*a^3*b - 14
375
+
376
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
377
+
378
+ sage: F, mapping = L.subfield((c^4+14)/-48)
379
+ sage: F
380
+ Number Field in c0 with defining polynomial x^2 + 1 with c0 = -1/48*c^4 - 7/24
381
+
382
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
383
+
384
+ sage: L.subfields()
385
+ [(Number Field in c0 with defining polynomial x,
386
+ Ring morphism:
387
+ From: Number Field in c0 with defining polynomial x
388
+ To: Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
389
+ Defn: 0 |--> 0,
390
+ None),
391
+ (Number Field in c1 with defining polynomial x^2 + 112*x + 40000,
392
+ Ring morphism:
393
+ From: Number Field in c1 with defining polynomial x^2 + 112*x + 40000
394
+ To: Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
395
+ Defn: c1 |--> 4*c^4,
396
+ None),
397
+ (Number Field in c2 with defining polynomial x^2 + 512,
398
+ Ring morphism:
399
+ From: Number Field in c2 with defining polynomial x^2 + 512
400
+ To: Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
401
+ Defn: c2 |--> 1/25*c^6 + 78/25*c^2,
402
+ None),
403
+ (Number Field in c3 with defining polynomial x^2 - 288,
404
+ Ring morphism:
405
+ From: Number Field in c3 with defining polynomial x^2 - 288
406
+ To: Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
407
+ Defn: c3 |--> -1/25*c^6 + 22/25*c^2,
408
+ None),
409
+ (Number Field in c4 with defining polynomial x^4 + 112*x^2 + 40000,
410
+ Ring morphism:
411
+ From: Number Field in c4 with defining polynomial x^4 + 112*x^2 + 40000
412
+ To: Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
413
+ Defn: c4 |--> 2*c^2,
414
+ None),
415
+ (Number Field in c5 with defining polynomial x^4 + 8,
416
+ Ring morphism:
417
+ From: Number Field in c5 with defining polynomial x^4 + 8
418
+ To: Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
419
+ Defn: c5 |--> -1/80*c^5 + 1/40*c,
420
+ None),
421
+ (Number Field in c6 with defining polynomial x^4 + 648,
422
+ Ring morphism:
423
+ From: Number Field in c6 with defining polynomial x^4 + 648
424
+ To: Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
425
+ Defn: c6 |--> 1/80*c^5 + 79/40*c,
426
+ None),
427
+ (Number Field in c7 with defining polynomial x^4 - 512,
428
+ Ring morphism:
429
+ From: Number Field in c7 with defining polynomial x^4 - 512
430
+ To: Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
431
+ Defn: c7 |--> -1/60*c^5 + 41/30*c,
432
+ None),
433
+ (Number Field in c8 with defining polynomial x^4 - 32,
434
+ Ring morphism:
435
+ From: Number Field in c8 with defining polynomial x^4 - 32
436
+ To: Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
437
+ Defn: c8 |--> 1/60*c^5 + 19/30*c,
438
+ None),
439
+ (Number Field in c9 with defining polynomial x^8 + 28*x^4 + 2500,
440
+ Ring morphism:
441
+ From: Number Field in c9 with defining polynomial x^8 + 28*x^4 + 2500
442
+ To: Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
443
+ Defn: c9 |--> c,
444
+ Ring morphism:
445
+ From: Number Field in c with defining polynomial x^8 + 28*x^4 + 2500
446
+ To: Number Field in c9 with defining polynomial x^8 + 28*x^4 + 2500
447
+ Defn: c |--> c9)]
448
+
449
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
450
+
451
+ sage: tau = G[6]
452
+ sage: tau_matrix = column_matrix([tau(be).vector() for be in basis])
453
+ sage: (tau_matrix-identity_matrix(8)).right_kernel()
454
+ Vector space of degree 8 and dimension 4 over Rational Field
455
+ Basis matrix:
456
+ [ 1 0 0 0 0 0 0 0]
457
+ [ 0 1 0 0 0 -1/82 0 0]
458
+ [ 0 0 1 0 0 0 -1/22 0]
459
+ [ 0 0 0 1 0 0 0 11/58]
460
+
461
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
462
+
463
+ sage: fromL(tau(1))
464
+ 1
465
+
466
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
467
+
468
+ sage: fromL(tau(c+(-1/82)*c^5))
469
+ -120/41*a
470
+
471
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
472
+
473
+ sage: fromL(tau(c^2+(-1/22)*c^6))
474
+ 150/11*a^2
475
+
476
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
477
+
478
+ sage: fromL(tau(c^3+(11/58)*c^7))
479
+ 3000/29*a^3
480
+
481
+ ~~~~~~~~~~~~~~~~~~~~~~ ::
482
+
483
+ sage: sg[2].is_normal(P)
484
+ False
485
+ """