This file implements the shared functionality for unramified extensions.
AUTHORS:
An unramified extension of Qp or Zp.
Initializes self
INPUTS:
- poly -- Polynomial defining this extension.
- prec -- The precision cap
- print_mode -- a dictionary with print options
- names -- a 4-tuple, (variable_name, residue_name,
unramified_subextension_variable_name, uniformizer_name)
- element_class -- the class for elements of this unramified extension.
EXAMPLES:
sage: R.<a> = Zq(27) #indirect doctest
Representation.
EXAMPLES:
sage: R.<a> = Zq(125); R #indirect doctest
Unramified Extension of 5-adic Ring with capped absolute precision 20 in a defined by (1 + O(5^20))*x^3 + (3 + O(5^20))*x + (3 + O(5^20))
sage: latex(R) #indirect doctest
\mathbf{Z}_{5^{3}}
Returns how the uniformizer is supposed to print.
EXAMPLES:
sage: R.<a> = Zq(125); R._uniformizer_print()
'5'
Returns how the generator prints.
EXAMPLES:
sage: R.<a> = Zq(125); R._unram_print()
'a'
Returns the discriminant of self over the subring K.
INPUTS:
- K -- a subring/subfield (defaults to the base ring).
EXAMPLES:
sage: R.<a> = Zq(125)
sage: R.discriminant()
...
NotImplementedError
Returns a generator for this unramified extension.
This is an element that satisfies the polynomial defining this extension. Such an element will reduce to a generator of the corresponding residue field extension.
EXAMPLES:
sage: R.<a> = Zq(125); R.gen()
a + O(5^20)
Returns whether or not $Z_p$ has a primitive $p^{mbox{th}}$ root of unity.
Since adjoining a $p^{mbox{th}}$ root of unity yields a totally ramified extension, self will contain one if and only if the ground ring does.
INPUT:
- self -- a p-adic ring
OUTPUT:
- boolean -- whether self has primitive $p^{\mbox{th}}$
root of unity.
EXAMPLES:
sage: R.<a> = Zq(1024); R.has_pth_root()
True
sage: R.<a> = Zq(17^5); R.has_pth_root()
False
Returns whether or not $Z_p$ has a primitive $n^{mbox{th}}$ root of unity.
INPUT:
- self -- a p-adic ring
- n -- an integer
OUTPUT:
- boolean -- whether self has primitive $n^{\mbox{th}}$
root of unity
EXAMPLES:
sage: R.<a> = Zq(37^8)
sage: R.has_root_of_unity(144)
True
sage: R.has_root_of_unity(89)
True
sage: R.has_root_of_unity(11)
False
Returns the inertia degree of self over the subring K.
INPUTS:
- K -- a subring (or subfield) of self. Defaults to the
base.
EXAMPLES:
sage: R.<a> = Zq(125); R.inertia_degree()
3
Returns True if this extension is Galois.
Every unramified extension is Galois.
INPUTS:
- K -- a subring/subfield (defaults to the base ring).
EXAMPLES:
sage: R.<a> = Zq(125); R.is_galois()
True
Returns the ramification index of self over the subring K.
INPUTS:
- K -- a subring (or subfield) of self. Defaults to the
base.
EXAMPLES:
sage: R.<a> = Zq(125); R.ramification_index()
1
Returns the residue class field.
EXAMPLES:
sage: R.<a> = Zq(125); R.residue_class_field()
Finite Field in a0 of size 5^3
Returns a uniformizer for this extension.
Since this extension is unramified, a uniformizer for the ground ring will also be a uniformizer for this extension.
EXAMPLES:
sage: R.<a> = ZqCR(125)
sage: R.uniformizer()
5 + O(5^21)
Returns the nth power of the uniformizer of self (as an element of self).
EXAMPLES:
sage: R.<a> = ZqCR(125)
sage: R.uniformizer_pow(5)
5^5 + O(5^25)