\(p\)-adic Extension Element#
A common superclass for all elements of extension rings and field of \(\ZZ_p\) and \(\QQ_p\).
AUTHORS:
David Roe (2007): initial version
Julian Rueth (2012-10-18): added residue
- class sage.rings.padics.padic_ext_element.pAdicExtElement[source]#
Bases:
pAdicGenericElement
- frobenius(arithmetic=True)[source]#
Return the image of this element under the Frobenius automorphism applied to its parent.
INPUT:
arithmetic
– whether to apply the arithmetic Frobenius (acting by raising to the \(p\)-th power on the residue field). IfFalse
is provided, the image of geometric Frobenius (raising to the \((1/p)\)-th power on the residue field) will be returned instead.
EXAMPLES:
sage: R.<a> = Zq(5^4,3) sage: a.frobenius() (a^3 + a^2 + 3*a) + (3*a + 1)*5 + (2*a^3 + 2*a^2 + 2*a)*5^2 + O(5^3) sage: f = R.defining_polynomial() sage: f(a) O(5^3) sage: f(a.frobenius()) O(5^3) sage: for i in range(4): a = a.frobenius() sage: a a + O(5^3) sage: K.<a> = Qq(7^3,4) sage: b = (a+1)/7 sage: c = b.frobenius(); c (3*a^2 + 5*a + 1)*7^-1 + (6*a^2 + 6*a + 6) + (4*a^2 + 3*a + 4)*7 + (6*a^2 + a + 6)*7^2 + O(7^3) sage: c.frobenius().frobenius() (a + 1)*7^-1 + O(7^3)
>>> from sage.all import * >>> R = Zq(Integer(5)**Integer(4),Integer(3), names=('a',)); (a,) = R._first_ngens(1) >>> a.frobenius() (a^3 + a^2 + 3*a) + (3*a + 1)*5 + (2*a^3 + 2*a^2 + 2*a)*5^2 + O(5^3) >>> f = R.defining_polynomial() >>> f(a) O(5^3) >>> f(a.frobenius()) O(5^3) >>> for i in range(Integer(4)): a = a.frobenius() >>> a a + O(5^3) >>> K = Qq(Integer(7)**Integer(3),Integer(4), names=('a',)); (a,) = K._first_ngens(1) >>> b = (a+Integer(1))/Integer(7) >>> c = b.frobenius(); c (3*a^2 + 5*a + 1)*7^-1 + (6*a^2 + 6*a + 6) + (4*a^2 + 3*a + 4)*7 + (6*a^2 + a + 6)*7^2 + O(7^3) >>> c.frobenius().frobenius() (a + 1)*7^-1 + O(7^3)
An error will be raised if the parent of self is a ramified extension:
sage: x = polygen(ZZ, 'x') sage: K.<a> = Qp(5).extension(x^2 - 5) sage: a.frobenius() Traceback (most recent call last): ... NotImplementedError: Frobenius automorphism only implemented for unramified extensions
>>> from sage.all import * >>> x = polygen(ZZ, 'x') >>> K = Qp(Integer(5)).extension(x**Integer(2) - Integer(5), names=('a',)); (a,) = K._first_ngens(1) >>> a.frobenius() Traceback (most recent call last): ... NotImplementedError: Frobenius automorphism only implemented for unramified extensions
- residue(absprec=1, field=None, check_prec=True)[source]#
Reduces this element modulo \(\pi^\mathrm{absprec}\).
INPUT:
absprec
– a non-negative integer (default:1
)field
– boolean (defaultNone
). For precision 1, whether to return an element of the residue field or a residue ring. Currently unused.check_prec
– boolean (defaultTrue
). Whether to raise an error if this element has insufficient precision to determine the reduction. Errors are never raised for fixed-mod or floating-point types.
OUTPUT:
This element reduced modulo \(\pi^\mathrm{absprec}\).
If
absprec
is zero, then as an element of \(\ZZ/(1)\).If
absprec
is one, then as an element of the residue field.Note
Only implemented for
absprec
less than or equal to one.AUTHORS:
Julian Rueth (2012-10-18): initial version
EXAMPLES:
Unramified case:
sage: # needs sage.libs.flint sage: R = ZpCA(3,5) sage: S.<a> = R[] sage: W.<a> = R.extension(a^2 + 9*a + 1) sage: (a + 1).residue(1) a0 + 1 sage: a.residue(2) Traceback (most recent call last): ... NotImplementedError: reduction modulo p^n with n>1
>>> from sage.all import * >>> # needs sage.libs.flint >>> R = ZpCA(Integer(3),Integer(5)) >>> S = R['a']; (a,) = S._first_ngens(1) >>> W = R.extension(a**Integer(2) + Integer(9)*a + Integer(1), names=('a',)); (a,) = W._first_ngens(1) >>> (a + Integer(1)).residue(Integer(1)) a0 + 1 >>> a.residue(Integer(2)) Traceback (most recent call last): ... NotImplementedError: reduction modulo p^n with n>1
Eisenstein case:
sage: R = ZpCA(3,5) sage: S.<a> = R[] sage: W.<a> = R.extension(a^2 + 9*a + 3) sage: (a + 1).residue(1) 1 sage: a.residue(2) Traceback (most recent call last): ... NotImplementedError: residue() not implemented in extensions for absprec larger than one
>>> from sage.all import * >>> R = ZpCA(Integer(3),Integer(5)) >>> S = R['a']; (a,) = S._first_ngens(1) >>> W = R.extension(a**Integer(2) + Integer(9)*a + Integer(3), names=('a',)); (a,) = W._first_ngens(1) >>> (a + Integer(1)).residue(Integer(1)) 1 >>> a.residue(Integer(2)) Traceback (most recent call last): ... NotImplementedError: residue() not implemented in extensions for absprec larger than one