\(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#

Bases: pAdicGenericElement

frobenius(arithmetic=True)#

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). If False 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)

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
residue(absprec=1, field=None, check_prec=True)#

Reduces this element modulo \(\pi^\mathrm{absprec}\).

INPUT:

  • absprec – a non-negative integer (default: 1)

  • field – boolean (default None). For precision 1, whether to return an element of the residue field or a residue ring. Currently unused.

  • check_prec – boolean (default True). 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

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