Adèles¶
Adèles of Number Fields
Let \(K = \QQ(\alpha)\) be the number field generated by \(\alpha\) over \(\QQ\). Let \(O\) be the ring of integers of \(K\). We define a finite prime of \(K\) to be a prime ideal of \(O\). An infinite prime of \(K\) is an embedding \(\phi: K \to \CC\) such that \(\phi(\alpha) \geq 0\). By a prime of \(K\) we shall mean either a finite or an infinite prime of \(K\).
The set of primes of \(K\) corresponds bijectively to the set of equivalence classes of absolute values on \(K\). For \(p\) a prime of \(K\), we let the field of \(p\)-adic numbers be the completion of \(K\) with respect to a corresponding absolute value and we denote it by \(K_p\).
For \(p\) a finite prime of \(K\), we denote the (normalized) valuation on \(K_p\) by \(ord_p: K_p \to \ZZ \cup \{\infty\}\), setting \(ord_p(0) = \infty\). We denote the corresponding valuation ring by \(O_p\) and call it the ring of \(p\)-adic integers. For \(p\) an infinite prime of \(K\) we set \(O_p = K_p\).
The adèle ring \(\Bold{A}_K\) of \(K\) is usually defined as the restricted product \(\prod_p' K_p\) with \(p\) ranging over all primes of \(K\) and the restricted product taken with respect to the open subrings \(O_p\). Concretely, that means
Let \((r,s)\) denote the signature of \(K\). We will view \(\Bold{A}_K\) as the ring
where the infinite primes of \(K\) are ordered according to K.places()
and
the ring of profinite \(K\)-numbers \(\hat{K}\) is identified with the finite adèle
ring in the natural way (cf. [Her2021] Section 3.4).
This point of view leads us to define a \(K\)-adèle in SageMath to consist out of
an infinite part and a finite part; the infinite part is a list of length
\(r+s\), where the first \(r\) entries are RealInterval
instances and the last
\(s\) entries are ComplexInterval
instances and the finite part is a profinite
\(K\)-number. The represented subset of such an adèle \(((x_1, ..., x_{r+s}), y)\)
is given by
where \(R(x_i)\) denotes the interval in \(\RR\) or \(\CC\) that \(x_i\) represents and \(R(y)\) denotes the represented subset in \(\hat{K}\) of \(y\).
Examples with \(\QQ\)-adèles¶
Let’s create the adèle ring of \(\QQ\):
sage: A = Adeles(QQ); A
Adèle Ring of Rational Field
And let’s create some adèles:
sage: a = A(3.14, Qhat(1/3, 14)); a
(3.1400000000000002?, 1/3 mod 14)
sage: b = A(1.5, Qhat(2, 6)); b
(1.5000000000000000?, 2 mod 6)
sage: c = A(-1, -1); c
(-1, -1)
As you can see, the adèles are printed using their infinite and finite parts.
sage: a.infinite_part()
[3.1400000000000002?]
sage: a.finite_part()
1/3 mod 14
Arithmetic is done component-wise:
sage: a + b
(4.640000000000000?, 1/3 mod 2)
sage: a - c
(4.140000000000000?, 4/3 mod 14)
sage: b * a
(4.710000000000000?, 2/3 mod 2)
sage: a / c
(-3.1400000000000002?, 41/3 mod 14)
We can ask the projections of our adèle to various \(p\)-adic fields, as well as \(\RR\):
sage: a[2]
1 + O(2)
sage: a[3]
3^-1 + O(3^0)
sage: a[5]
O(5^0)
sage: a[7]
5 + O(7)
sage: a[oo]
3.1400000000000002?
We can also create adèles over \(\QQ\) using \(p\)-adic numbers:
sage: d_2 = Qp(2)(3, 3); d_2
1 + 2 + O(2^3)
sage: d_3 = Qp(3)(1/6, 2); d_3
2*3^-1 + 1 + 3 + O(3^2)
sage: d_5 = Qp(5)(1/50, -1); d_5
3*5^-2 + O(5^-1)
sage: d = A([9.7, d_2, d_3, d_5]); d
(9.6999999999999993?, 809/75 mod 72/5)
sage: d[2]
1 + 2 + O(2^3)
sage: d[3]
2*3^-1 + 1 + 3 + O(3^2)
sage: d[5]
3*5^-2 + O(5^-1)
sage: d[7]
O(7^0)
This \(p\)-adic functionality is however only available for adèles over \(\QQ\), not for \(K\)-adèles for \(K\) a non-trivial number field. This is because SageMath currently does not have an implementation of \(p\)-adic numbers for \(p\) finite primes of number fields in general.
Adèles over Number Fields¶
Let’s create a non-trivial number field and the corresponding adèle ring.
sage: K.<a> = NumberField(x^5 - x^3 - 2*x + 1)
sage: Khat = ProfiniteNumbers(K)
sage: Ak = Adeles(K); Ak
Adèle Ring of Number Field in a with defining polynomial x^5 - x^3 - 2*x + 1
sage: K.signature()
(3, 1)
The signature of \(K\) is \((3, 1)\), hence we need three reals and one complex number for our \(K\)-adèles:
sage: b = Ak([-1, 1, 2, 4*I], Khat(a, 100/3)); b
(-1, 1, 2, 4*I, a mod (100/3))
The order of the \(\RR\)’s and \(\CC\)’s is given by K.places()
:
sage: K.places()
[Ring morphism:
From: Number Field in a with defining polynomial x^5 - x^3 - 2*x + 1
To: Real Field with 106 bits of precision
Defn: a |--> -1.486472477019139559485881355066,
Ring morphism:
From: Number Field in a with defining polynomial x^5 - x^3 - 2*x + 1
To: Real Field with 106 bits of precision
Defn: a |--> 0.4613519931561143817091321992793,
Ring morphism:
From: Number Field in a with defining polynomial x^5 - x^3 - 2*x + 1
To: Real Field with 106 bits of precision
Defn: a |--> 1.311334219189466694020034823301,
Ring morphism:
From: Number Field in a with defining polynomial x^5 - x^3 - 2*x + 1
To: Complex Field with 53 bits of precision
Defn: a |--> -0.143106867663221 + 1.04474941303801*I]
Hence under the natural (diagonal) embedding \(K \to \Bold{A}_K\), the generator
a
of \(K\) maps to the following \(K\)-adèle:
sage: Ak(a)
(-1.486472477019140?, 0.4613519931561144?, 1.311334219189467?, -0.14310686766322076? + 1.0447494130380122?*I, a)
The above conversion defines a coercion and hence we can do:
sage: a + b
(-2.486472477019140?, 1.461351993156115?, 3.311334219189467?, -0.14310686766322076? + 5.0447494130380122?*I, 2*a mod (100/3))
sage: a * b
(1.486472477019140?, 0.4613519931561144?, 2.622668438378934?, -4.1789976521520487? - 0.57242747065288302?*I, a^2 mod (100/3*a))
See also
REFERENCES:
[Her2021] Mathé Hertogh, Computing with adèles and idèles, master’s thesis, Leiden University, 2021.
This implementation of adèles is based on [Her2021]. An extensive exposition of properties, design choices and two applications can be found there.
AUTHORS:
Mathé Hertogh (2021-07): initial version based on [Her2021]
-
class
adeles.adele.
Adele
(parent, infinite, finite)¶ Bases:
sage.structure.element.CommutativeAlgebraElement
Adèle over a Number Field
REFERENCES:
Section 3.4 of [Her2021].
-
__init__
(parent, infinite, finite)¶ Construct the adèle determined by
infinite
andfinite
INPUT:
parent
– an adèle ring of some number field \(K\)infinite
– a list of elements in real/complex interval fields; denoting the signature of \(K\) by \((r,s)\), the list must have length \(r+s\), the first \(r\) entries must be elements ofRealIntervalField
and the last \(s\) entries must be elements ofComplexIntervalField
. If \(K\) has a unique infinite prime, then we also accept an element ofRIF
orCIF
, depending on whether the prime is real or complex.finite
– a profinite number over \(K\)
OUTPUT:
An adèle with infinite part given by
infinite
and finite part given byfinite
.EXAMPLES:
sage: A = Adeles(QQ) sage: Adele(A, 3.14, 7) (3.1400000000000002?, 7) sage: Qhat = ProfiniteNumbers(QQ) sage: Adele(A, 7.9, Qhat(7/2, 9)) (7.9000000000000004?, 7/2 mod 9)
sage: K.<a> = NumberField(x^3+x+1) sage: Ak = Adeles(K) sage: Khat = ProfiniteNumbers(K) sage: Adele(Ak, [-1, 1+I], Khat(a/3, 100/3)) (-1, 1 + 1*I, 1/3*a mod (100/3))
TESTS:
sage: Adele(A, [3.0, -1.0], 7) Traceback (most recent call last): ... TypeError: infinite should have length 1 sage: Adele(Ak, 1.0, 7) Traceback (most recent call last): ... TypeError: infinite must be a list sage: Adele(A, [I], 7) Traceback (most recent call last): ... TypeError: 0th infinite value (I) should lie in Real Interval Field with 53 bits of precision sage: Adele(A, [1.0], a+1) Traceback (most recent call last): ... TypeError: finite should lie in Profinite Numbers of Rational Field
-
__getitem__
(p)¶ Return the projection of this adèle to the field of
p
-adic numbersINPUT:
p
– a prime number orInfinity
Only implemented for \(\QQ\)-adèles, as no general implementation of completions at finite places of a number field exists in SageMath at the time of writing.
View \(\Bold{A}_\QQ\) as \(\RR \times \prod_p' \QQ_p\) with \(p\) ranging over all prime numbers and the restructed product taken with respect to the open subrings \(\ZZ_p\). This method implements the projections \(\Bold{A}_\QQ \to \RR\) and \(\Bold{A}_\QQ \to \QQ_p\) for \(p\) a prime number.
EXAMPLES:
sage: A = Adeles(QQ) sage: a = A(1.23456789, Qhat(1/3, 2^5 * 3^10)); a (1.2345678899999999?, 1/3 mod 1889568) sage: a[oo] 1.2345678899999999? sage: a[2] 1 + 2 + 2^3 + O(2^5) sage: a[3] 3^-1 + O(3^10) sage: a[5] O(5^0)
REFERENCES:
Section 4.6 of [Her2021].
-
_add_
(other)¶ Return the sum of this adèle and
other
EXAMPLES:
sage: A = Adeles(QQ) sage: a = A(1.5, Qhat(-1/6, 2)) sage: b = A(2.5, Qhat(3/2, 12)) sage: a + b (4, 4/3 mod 2) sage: a + 1 (2.5000000000000000?, 5/6 mod 2)
sage: K.<zeta5> = CyclotomicField(5) sage: Ak = Adeles(K) sage: Khat = ProfiniteNumbers(K) sage: c = Ak([I, -I], Khat((1+zeta5+zeta5^2)/2, 100)) sage: d = Ak([3.5, I], Khat((zeta5^3+zeta5^4)/2, 200)) sage: c + d (3.5000000000000000? + 1*I, 0, 0 mod (100))
REFERENCES:
Section Arithmetic in Section 3.4 of [Her2021].
-
_sub_
(other)¶ Return the difference of this adèle and
other
EXAMPLES:
sage: A = Adeles(QQ) sage: a = A(-10.375, Qhat(4/3, 5)) sage: b = A(5, Qhat(2/5, 5,)) sage: a - b (-15.375000000000000?, 14/15 mod 5) sage: b - a (15.375000000000000?, 61/15 mod 5)
sage: K.<a> = NumberField(x^2+3) sage: Ak = Adeles(K) sage: Khat = ProfiniteNumbers(K) sage: b = Ak(I, Khat(a/4, 10*a)) sage: c = Ak(1, Khat(1/4, 30)) sage: b - c (-1 + 1*I, 1/4*a - 1/4 mod (-10*a)) sage: c - c (0, 0 mod (30)) sage: b - a (-0.73205080756887720?*I, -3/4*a mod (-10*a))
REFERENCES:
Section Arithmetic in Section 3.4 of [Her2021].
-
_mul_
(other)¶ Return the product of this adèle and
other
EXAMPLES:
sage: A = Adeles(QQ) sage: a = A(-1, Qhat(1/5, 80/3)) sage: b = A(79, Qhat(1/2, 80)) sage: a * b (-79, 1/10 mod 8/3)
sage: K.<a> = NumberField(x^2+x+1) sage: Ak = Adeles(K) sage: Khat = ProfiniteNumbers(K) sage: b = Ak(I, Khat(a, 10*a)) sage: c = Ak([CIF(2.3+I)], Khat(7*a+2, 30*a-3, a)) sage: b * b (-1, -a - 1 mod (10)) sage: a * b (-0.86602540378443860? - 0.50000000000000000?*I, -a - 1 mod (-10*a - 10))
REFERENCES:
Section Arithmetic in Section 3.4 of [Her2021].
-
_div_
(other)¶ Return the quotient of this adèle by
other
EXAMPLES:
sage: A = Adeles(QQ) sage: a = A([3.0], Qhat(6, 14)) sage: b = A([2.0], 3/2) sage: a / b (1.5000000000000000?, 4 mod 28/3)
sage: K.<a> = NumberField(x^4-5) sage: Ak = Adeles(K) sage: Khat = ProfiniteNumbers(K) sage: b = Ak([5, 5, 5], Khat(5, 1024/9)) sage: c = Ak([5, -1, I], a) sage: b / c (1, -5, -5*I, a^3 mod (1024/45*a^3))
Note
One can only divide by adèles whose finite part has zero modulus and non-zero value. If
other
does not satisfy this, an exception is raised:sage: c / b Traceback (most recent call last): ... ValueError: division by profinite number with non-zero modulus sage: z = Ak([1, 1, 1], 0) sage: b / z Traceback (most recent call last): ... ZeroDivisionError: profinite number division by zero
REFERENCES:
Section Arithmetic in Section 3.4 of [Her2021].
-
_richcmp_
(other, op)¶ Compare this adèle with
other
based on the relationop
We only implement equality and non-equality.
We declare two adèles equal if the could be equal, i.e. if their represented subsets have non-empty intersection.
Inequality is defined as not being equal.
EXAMPLES:
sage: A = Adeles() sage: Qhat = ProfiniteNumbers(QQ) sage: b = A([RIF(2.0, 3.0)], Qhat(3/7, 10/7)) sage: c = A([RIF(2.5, 3.5)], Qhat(13/7, 20/7)) sage: d = A([2.1], Qhat(13/7, 20/7)) sage: e = A([2.1], Qhat(3/7, 20/7)) sage: b == c True sage: b == d True sage: c == d False sage: b != e False sage: d == e False sage: c != d True
sage: K.<i> = NumberField(x^2+1) sage: Ak = Adeles(K) sage: Khat = ProfiniteNumbers(K) sage: b = Ak([I], Khat(i/3, (10+i)/3)) sage: c = Ak([RIF(-1, 4)*I], Khat(-10/3, 2/3*(10+i))) sage: b == c True sage: b != c False
REFERENCES:
Section 5.4 of [Her2021].
TESTS:
sage: b < c Traceback (most recent call last): ... NotImplementedError: only equality and inequality are implemented
-
finite_part
()¶ Return the finite part of this adèle
EXAMPLES:
sage: A = Adeles(QQ) sage: a = A(2.0, Qhat(17/2, 1000/3)) sage: a.finite_part() 17/2 mod 1000/3
-
infinite_part
(index=None)¶ Return the infinite part of this adèle as a list, or a single entry
INPUT:
index
– non-negative integer smaller than the length of our infinite part (optional); if specified, return theindex
-th entry of our infinite part
OUTPUT:
Return the infinite part of this adèle, or the
index
-th entry ifindex
is specified.EXAMPLES:
sage: K.<a> = NumberField(x^5 + 10) sage: A = Adeles(K) sage: a = A([1.6, I, -I], 0) sage: a.infinite_part() [1.6000000000000001?, 1*I, -1*I] sage: a.infinite_part(0) 1.6000000000000001? sage: a.infinite_part(2) -1*I
-
to_rational_vector
()¶ Convert this adèle to a vector of \(\QQ\)-adèles
Let \(K\) be our base number field, \(\alpha\) its generator over \(\QQ\) and \(n\) its degree over \(\QQ\). Then every \(x \in \Bold{A}_K\) can be written uniquely as \(x = \sum_{i=0}^{n-1} x_i \alpha^i\) with \(x_i \in \Bold{A}_\QQ\). This induces a map \(\phi: \Bold{A}_K \to \Bold{A}_\QQ^n\).
This method implements \(\phi\).
OUTPUT:
A vector \((x_0, ..., x_{n-1})\) of \(\QQ\)-adèles such that the following holds. Let \(i \in \{0, ..., n-1\}\) and let \(\phi_i: \Bold{A}_K \to \Bold{A}_\QQ\) be the composition of \(\phi\) with the projection to the \(i\)-th \(\Bold{A}_\QQ\). Then for any \(\alpha\) that
self
represents, \(\phi_i(\alpha)\) is represented by \(x_i\).EXAMPLES:
sage: K.<a> = NumberField(x^3-2) sage: AK = Adeles(K) sage: b = AK([-7, 2+I], 1+2*a+3*a^2) sage: c = b.to_rational_vector(); c ((-1.00000000000000?, 1), (-1.92285836561943?, 2), (-2.25358945349955?, 3))
Let us check that these infinite parts are correct:
sage: x = [ci[oo] for ci in c]; x [-1.00000000000000?, -1.92285836561943?, -2.25358945349955?] sage: emb = infinite_completions(K, embeddings_only=True) sage: x[0] + x[1]*emb[0](a) + x[2]*emb[0](a^2) -7.0000000000000? sage: x[0] + x[1]*emb[1](a) + x[2]*emb[1](a^2) 2.0000000000000? + 1.00000000000000?*I
See also
REFERENCES:
Section 4.4 of [Her2021].
-
-
class
adeles.adele.
Adeles
(K)¶ Bases:
sage.structure.unique_representation.UniqueRepresentation
,sage.rings.ring.CommutativeAlgebra
Adèle Ring of a Number Field
REFERENCES:
Section 3.4 of [Her2021].
-
_element_constructor_
(x, y=None)¶ Construct an adèle
INPUT:
We accept many input formats. Denote our base number field by \(K\) and its signature by \((r,s)\).
The standard format is a pair \((x,y)\) where \(x\) specifies the infinite part and \(y\) specifies the finite part. Here \(x\) should be a list of length \(r+s\) with the first \(r\) entries in
RIF
and the last \(s\) entries inCIF
. And \(y\) should be a profinite \(K\)-number.The other formats accept only one argument and they can be one of the following.
a \(K\)-adèle; construct a copy
an element \(x\) of \(K\); construct the (diagonal) image of \(x\) in this adèle ring
a profinite \(K\)-integer; specifies the finite part only
a \(K\)-idèle; convert the idèle to an adèle (see
_from_idele()
)
If \(K\) is \(\QQ\), we also accept a list consisting of \(p\)-adic numbers, for distinct prime numbers \(p\), as well as at most one real number. See
_from_padics()
for details.EXAMPLES:
We start with the standard format:
sage: K.<a> = NumberField(x^3-7) sage: Ak = Adeles(K) sage: Khat = ProfiniteNumbers(K) sage: b = Ak([3.14, -I], Khat(a+1/5, 9*a^2)); b (3.1400000000000002?, -1*I, (a mod (9*a^2))/(a + 1))
Let’s make a copy of
b
:sage: c = Ak(b); c (3.1400000000000002?, -1*I, (a mod (9*a^2))/(a + 1))
We create the adèle corresponding to \(a/2\):
sage: Ak(a/2) (0.9564655913861945?, -0.47823279569309730? + 0.82832349998615107?*I, 1/2*a)
Upon given a profinite
K
-number, the values at the infinite primes are completely unknonwn:sage: Ak(Khat(1/10, 100*a^2)) (RR, CC, 1/10 mod (100*a^2))
We can also convert an idèle to an adèle:
sage: J = Ideles(K) sage: u = J([-1, I], {a: (a, 6)}); u Idele with values: infinity_0: -1 infinity_1: 1*I (7, a): a * U(6) other primes: 1 * U(0) sage: Ak(u) (-1, 1*I, a mod (686, 49*a + 343, 49*a^2 + 343))
Lastly we demonstrate the construction of a \(\QQ\)-adèle using \(p\)-adic numbers:
sage: A = Adeles(QQ) sage: a_2 = Qp(2)(5/2, 2); a_2 2^-1 + 2 + O(2^2) sage: a_3 = Qp(3)(7/27, -1); a_3 3^-3 + 2*3^-2 + O(3^-1) sage: a = A([-7.25, a_2, a_3]); a (-7.2500000000000000?, 23/54 mod 4/3) sage: a[2] 2^-1 + 2 + O(2^2) sage: a[3] 3^-3 + 2*3^-2 + O(3^-1)
-
_from_padics
(padics)¶ Construct an adèle over \(\QQ\) from the list of \(p\)-adic numbers
padics
Only implemented over \(\QQ\), as no general implementation of \(p\)-adic numbers currently exists for general number fields.
INPUT:
padics
– a list consisting of \(p\)-adic numbers, for distinct prime numbers \(p\), as well as at most one real number
OUTPUT:
The \(\QQ\)-adèle with infinite part equal to the real number in the list, if it exists, or \(\RR\) otherwise, and with finite part given by
_from_padic_numbers()
, to which we give as inputpadics
with the optional real number removed.EXAMPLES:
sage: A = Adeles() sage: a_2 = Qp(2)(6, 3); a_2 2 + 2^2 + O(2^3) sage: a_5 = Qp(5)(2/5, 1); a_5 2*5^-1 + O(5) sage: a = A._from_padics([9.7, a_2, a_5]); a (9.6999999999999993?, 102/5 mod 40) sage: a[2] 2 + 2^2 + O(2^3) sage: a[3] O(3^0) sage: a[5] 2*5^-1 + O(5) sage: a[oo] 9.6999999999999993?
sage: b_3 = Qp(3)(0, 2) sage: b_7 = Qp(7)(1/(2*49), -1) sage: b = A._from_padics([b_7, b_3]); b (RR, 18/49 mod 9/7) sage: b[3] == b_3 and b[7] == b_7 True
REFERENCES:
Section 4.6 of [Her2021].
-
_from_idele
(idele)¶ Construct the adèle corresponding to the idèle
idele
This implements the inclusion of the idèles into the adèles. Due to the different ways of storing adèles and idèles, this may lose precision: the represented subset of the returned
Adele
will contain the represented subset ofidèle
and it might be bigger.EXAMPLES:
sage: A = Adeles(QQ) sage: from idele import Ideles sage: J = Ideles(QQ) sage: u = J(6, {2: (1, 1), 3: (1/3, 0)}) sage: A(u) (6, 1/3 mod 2/3) sage: v = J(7.9, {3: (2, 2), 5: (1, 1)}) sage: A(v) (7.9000000000000004?, 11 mod 90)
Note the factor \(2\) in te modulus of the finite part in this last example. This is because
v[2]
is1 * U(0)
, which has represented subset \(\ZZ_2^*\), which equals \(1 + 2\ZZ_2\). Hence we know that the finite part ofA(v)
is1
moduluo2
, even though no explicit value is stored forv
at2
.A similar thing happens in the following example over a non-trivial number field:
sage: K.<a> = NumberField(x^2+5) sage: Ak = Adeles(K) sage: Jk = Ideles(K) sage: u = Jk([I], {}) sage: Ak(u) (1*I, a mod (2, a + 1))
Now a more complicated example:
sage: p2, p3 = K.prime_above(2), K.prime_above(3) sage: v = Jk([1+I], {p2: (a, 3), p3: (1/3-a, 3)}) sage: Ak(v) (1 + 1*I, 1/3*a + 2/3 mod (36, 2*a + 14))
This conversion defines a coercion:
sage: a = A([2.5], Qhat(1/5, 10)) sage: u = J([-0.5], {2: (1/2, 2), 5: (1, 1)}) sage: a + u (2, 87/10 mod 10) sage: u - a (-3, 83/10 mod 10) sage: a * u (-1.2500000000000000?, 7/10 mod 1)
REFERENCES:
Section 4.3 of [Her2021].
-
characteristic
()¶ Return the characteristic of this ring, which is zero
EXAMPLES:
sage: Adeles().characteristic() 0
-
construction
()¶ Return a pair
(functor, parent)
such thatfunctor(parent)
returns this adèle ring.EXAMPLES:
sage: A, Q = Adeles().construction(); A, Q (AdelizationFunctor, Rational Field) sage: A(Q) is Adeles() True
sage: K.<a> = NumberField(x^5-2) sage: A, K = Adeles(K).construction(); A, K (AdelizationFunctor, Number Field in a with defining polynomial x^5 - 2) sage: A(K) is Adeles(K) True
-
epsilon
()¶ Return the precision error of elements in this ring
As this depends on the elements, we can give no reasonable answer and hence raise a
NotImplementedError
.EXAMPLES:
sage: Adeles().epsilon() Traceback (most recent call last): ... NotImplementedError: precision error depends on the elements involved
-
gen
(n=0)¶ Return the
n
-th generator of this ringAs this ring has only one generator, we only accept
n == 0
.INPUT:
n
– the index of the generator to return (default:0
); must be zero
EXAMPLES:
sage: Adeles(CyclotomicField(5)).gen() (1, 1, 1) sage: Adeles().gen(0) (1, 1)
TESTS:
sage: Adeles(QQ).gen(1) Traceback (most recent call last): ... IndexError: n must be 0
-
gens
()¶ Return a tuple of generators of this ring, which is
(1,)
EXAMPLES:
sage: Adeles().gens() ((1, 1),)
-
is_exact
()¶ Return
False
, indicating that doing arithmetic can lead to precision lossEXAMPLES:
sage: Adeles().is_exact() False
-
is_field
(proof=True)¶ Return
False
, indicating that this ring is not a fieldEXAMPLES:
sage: Adeles().is_field() False
-
is_finite
()¶ Return
False
, indicating that this adèle ring is not finiteEXAMPLES:
sage: Adeles().is_finite() False
-
is_integral_domain
(proof=None)¶ Return
False
, indicating that this adèle ring is not an integral domainEXAMPLES:
sage: Adeles().is_integral_domain() False
-
ngens
()¶ Return the number of generators of this ring, which is \(1\)
EXAMPLES:
sage: Adeles().ngens() 1
-
number_field
()¶ Return the base number field of this adèle ring
EXAMPLES:
sage: K.<a> = NumberField(x^5+7*x+9) sage: Adeles(K).number_field() Number Field in a with defining polynomial x^5 + 7*x + 9
-
order
()¶ Return
Infinity
, indicating that this ring has infinitely many elementsEXAMPLES:
sage: Adeles().order() +Infinity
-
random_element
()¶ Return a random element of this adèle ring
EXAMPLES:
sage: [Adeles().random_element() for i in range(8)] # random [(0.27373183534599522?, 8 mod 9), (-0.093881488288479976?, 0 mod 7), (0.30161163018038062?, 2 mod 20), (0.41150508905962280?, -5), (-0.65571439239360441?, 1), (-0.73036548915661804?, 1/5 mod 13/5), (0.22238770477164250?, 1 mod 45/2), (-0.95472024452579408?, 5/3 mod 2)]
sage: [Adeles(K).random_element() for i in range(8)] # random [(0.79423215622331634?, -0.40137427709553509? - 0.64534892614076900?*I, 43/16*a^2 + 1/16*a - 1/16 mod (129/8*a^2 + 141/4*a + 21/4)), (0.52942291646206008?, -0.58341619510920518? + 0.36230656269735762?*I, 1/3*a^2 mod (2/3)), (0.89152090833818054?, 0.49795817189108283? - 0.70150555814011307?*I, 9*a - 2 mod (42)), (0.44924372673739877?, 0.26028465739297824? - 0.040401847180406625?*I, 0 mod (1/2)), (0.073877767325941424?, -0.91366841344236605? - 0.021723717207447813?*I, -6*a^2 + a mod (26*a + 13)), (-0.33577218142520793?, 0.29090471478072467? + 0.43029026051764663?*I, a^2 + 1/2*a + 1 mod (26)), (0.49505274874739480?, 0.24198576476487932? + 0.25729961424886950?*I, 1/4*a + 5/4 mod (5/4*a^2)), (-0.15573868218812215?, 0.12998234921383456? + 0.99415852426545226?*I, -2*a^2 mod (-a^2 - 1))]
-
some_elements
()¶ Return some elements of this adèle ring
EXAMPLES:
sage: Adeles().some_elements() [(0, 0), (1, 2/5 mod 6/5), (1, 1), (4.571428571428572?, 17/7 mod 30/7)]
-
-
class
adeles.adele.
AdelizationFunctor
(args=None, kwds=None)¶ Bases:
sage.categories.pushout.ConstructionFunctor
The functor sending a number field to its adèle ring