# $$p$$-Adic Generic Nodes¶

This file contains a bunch of intermediate classes for the $$p$$-adic parents, allowing a function to be implemented at the right level of generality.

AUTHORS:

• David Roe
class sage.rings.padics.generic_nodes.CappedAbsoluteGeneric(base, prec, names, element_class, category=None)

Initializes self.

EXAMPLES:

sage: R = Zp(5) #indirect doctest
sage: R.precision_cap()
20


In trac ticket #14084, the category framework has been implemented for p-adic rings:

sage: TestSuite(R).run()
sage: K = Qp(7)
sage: TestSuite(K).run()


TESTS:

sage: R = Zp(5, 5, 'fixed-mod')
sage: R._repr_option('element_is_atomic')
False

is_capped_absolute()

Returns whether this $$p$$-adic ring bounds precision in a capped absolute fashion.

The absolute precision of an element is the power of $$p$$ modulo which that element is defined. In a capped absolute ring, the absolute precision of elements are bounded by a constant depending on the ring.

EXAMPLES:

sage: R = ZpCA(5, 15)
sage: R.is_capped_absolute()
True
sage: R(5^7)
5^7 + O(5^15)
sage: S = Zp(5, 15)
sage: S.is_capped_absolute()
False
sage: S(5^7)
5^7 + O(5^22)

class sage.rings.padics.generic_nodes.CappedRelativeFieldGeneric(base, prec, names, element_class, category=None)

Initializes self.

EXAMPLES:

sage: R = Zp(5) #indirect doctest
sage: R.precision_cap()
20


In trac ticket #14084, the category framework has been implemented for p-adic rings:

sage: TestSuite(R).run()
sage: K = Qp(7)
sage: TestSuite(K).run()


TESTS:

sage: R = Zp(5, 5, 'fixed-mod')
sage: R._repr_option('element_is_atomic')
False

class sage.rings.padics.generic_nodes.CappedRelativeGeneric(base, prec, names, element_class, category=None)

Initializes self.

EXAMPLES:

sage: R = Zp(5) #indirect doctest
sage: R.precision_cap()
20


In trac ticket #14084, the category framework has been implemented for p-adic rings:

sage: TestSuite(R).run()
sage: K = Qp(7)
sage: TestSuite(K).run()


TESTS:

sage: R = Zp(5, 5, 'fixed-mod')
sage: R._repr_option('element_is_atomic')
False

is_capped_relative()

Returns whether this $$p$$-adic ring bounds precision in a capped relative fashion.

The relative precision of an element is the power of p modulo which the unit part of that element is defined. In a capped relative ring, the relative precision of elements are bounded by a constant depending on the ring.

EXAMPLES:

sage: R = ZpCA(5, 15)
sage: R.is_capped_relative()
False
sage: R(5^7)
5^7 + O(5^15)
sage: S = Zp(5, 15)
sage: S.is_capped_relative()
True
sage: S(5^7)
5^7 + O(5^22)

class sage.rings.padics.generic_nodes.CappedRelativeRingGeneric(base, prec, names, element_class, category=None)

Initializes self.

EXAMPLES:

sage: R = Zp(5) #indirect doctest
sage: R.precision_cap()
20


In trac ticket #14084, the category framework has been implemented for p-adic rings:

sage: TestSuite(R).run()
sage: K = Qp(7)
sage: TestSuite(K).run()


TESTS:

sage: R = Zp(5, 5, 'fixed-mod')
sage: R._repr_option('element_is_atomic')
False

class sage.rings.padics.generic_nodes.FixedModGeneric(base, prec, names, element_class, category=None)

Initializes self.

EXAMPLES:

sage: R = Zp(5) #indirect doctest
sage: R.precision_cap()
20


In trac ticket #14084, the category framework has been implemented for p-adic rings:

sage: TestSuite(R).run()
sage: K = Qp(7)
sage: TestSuite(K).run()


TESTS:

sage: R = Zp(5, 5, 'fixed-mod')
sage: R._repr_option('element_is_atomic')
False

is_fixed_mod()

Returns whether this $$p$$-adic ring bounds precision in a fixed modulus fashion.

The absolute precision of an element is the power of p modulo which that element is defined. In a fixed modulus ring, the absolute precision of every element is defined to be the precision cap of the parent. This means that some operations, such as division by $$p$$, don’t return a well defined answer.

EXAMPLES:

sage: R = ZpFM(5,15)
sage: R.is_fixed_mod()
True
sage: R(5^7,absprec=9)
5^7 + O(5^15)
sage: S = ZpCA(5, 15)
sage: S.is_fixed_mod()
False
sage: S(5^7,absprec=9)
5^7 + O(5^9)


Returns True if and only if R is a $$p$$-adic field.

EXAMPLES:

sage: is_pAdicField(Zp(17))
False
True


Returns True if and only if R is a $$p$$-adic ring (not a field).

EXAMPLES:

sage: is_pAdicRing(Zp(5))
True
False


Initialization.

INPUTS:

- base -- Base ring.
- p -- prime
- print_mode -- dictionary of print options
- names -- how to print the uniformizer
- element_class -- the class for elements of this ring

EXAMPLES:

sage: R = Zp(17) #indirect doctest


Initialization.

INPUTS:

- base -- Base ring.
- p -- prime
- print_mode -- dictionary of print options
- names -- how to print the uniformizer
- element_class -- the class for elements of this ring

EXAMPLES:

sage: R = Zp(17) #indirect doctest


Initialization.

INPUTS:

- base -- Base ring.
- p -- prime
- print_mode -- dictionary of print options
- names -- how to print the uniformizer
- element_class -- the class for elements of this ring

EXAMPLES:

sage: R = Zp(17) #indirect doctest


Initialization

TESTS:

sage: R = Zp(5) #indirect doctest

composite(subfield1, subfield2)

Returns the composite of two subfields of self, i.e., the largest subfield containing both

INPUT:

• self – a $$p$$-adic field
• subfield1 – a subfield
• subfield2 – a subfield

OUTPUT:

• the composite of subfield1 and subfield2

EXAMPLES:

sage: K = Qp(17); K.composite(K, K) is K
True

construction()

Returns the functorial construction of self, namely, completion of the rational numbers with respect a given prime.

Also preserves other information that makes this field unique (e.g. precision, rounding, print mode).

EXAMPLE:

sage: K = Qp(17, 8, print_mode='val-unit', print_sep='&')
sage: c, L = K.construction(); L
Rational Field
sage: c(L)
17-adic Field with capped relative precision 8
sage: K == c(L)
True

subfield(list)

Returns the subfield generated by the elements in list

INPUT:

• self – a $$p$$-adic field
• list – a list of elements of self

OUTPUT:

• the subfield of self generated by the elements of list

EXAMPLES:

sage: K = Qp(17); K.subfield([K(17), K(1827)]) is K
True

subfields_of_degree(n)

Returns the number of subfields of self of degree $$n$$

INPUT:

• self – a $$p$$-adic field
• n – an integer

OUTPUT:

• integer – the number of subfields of degree n over self.base_ring()

EXAMPLES:

sage: K = Qp(17)
sage: K.subfields_of_degree(1)
1


Initialization.

INPUTS:

- base -- Base ring.
- p -- prime
- print_mode -- dictionary of print options
- names -- how to print the uniformizer
- element_class -- the class for elements of this ring

EXAMPLES:

sage: R = Zp(17) #indirect doctest


Initialization.

INPUTS:

- base -- Base ring.
- p -- prime
- print_mode -- dictionary of print options
- names -- how to print the uniformizer
- element_class -- the class for elements of this ring

EXAMPLES:

sage: R = Zp(17) #indirect doctest


Initialization

TESTS:

sage: R = Zp(5) #indirect doctest

construction()

Returns the functorial construction of self, namely, completion of the rational numbers with respect a given prime.

Also preserves other information that makes this field unique (e.g. precision, rounding, print mode).

EXAMPLE:

sage: K = Zp(17, 8, print_mode='val-unit', print_sep='&')
sage: c, L = K.construction(); L
Integer Ring
sage: c(L)
17-adic Ring with capped relative precision 8
sage: K == c(L)
True

random_element(algorithm='default')

Returns a random element of self, optionally using the algorithm argument to decide how it generates the element. Algorithms currently implemented:

• default: Choose $$a_i$$, $$i >= 0$$, randomly between $$0$$ and $$p-1$$ until a nonzero choice is made. Then continue choosing $$a_i$$ randomly between $$0$$ and $$p-1$$ until we reach precision_cap, and return $$\sum a_i p^i$$.

EXAMPLES:

sage: Zp(5,6).random_element()
3 + 3*5 + 2*5^2 + 3*5^3 + 2*5^4 + 5^5 + O(5^6)
sage: ZpCA(5,6).random_element()
4*5^2 + 5^3 + O(5^6)
sage: ZpFM(5,6).random_element()
2 + 4*5^2 + 2*5^4 + 5^5 + O(5^6)


Initialization.

INPUTS:

- base -- Base ring.
- p -- prime
- print_mode -- dictionary of print options
- names -- how to print the uniformizer
- element_class -- the class for elements of this ring

EXAMPLES:

sage: R = Zp(17) #indirect doctest

is_field(proof=True)

Returns whether this ring is actually a field, ie False.

EXAMPLES:

sage: Zp(5).is_field()
False

krull_dimension()

Returns the Krull dimension of self, i.e. 1

INPUT:

• self – a $$p$$-adic ring

OUTPUT:

• the Krull dimension of self. Since self is a $$p$$-adic ring, this is 1.

EXAMPLES:

sage: Zp(5).krull_dimension()
1


#### Previous topic

$$p$$-Adic Base Generic