Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
r""" Complete Discrete Valuation Rings (CDVR) and Fields (CDVF) """ from __future__ import absolute_import #************************************************************************** # Copyright (C) 2013 Xavier Caruso <xavier.caruso@normalesup.org> # # Distributed under the terms of the GNU General Public License (GPL) # http://www.gnu.org/licenses/ #**************************************************************************
from sage.misc.abstract_method import abstract_method
from sage.categories.category_singleton import Category_singleton from .discrete_valuation import DiscreteValuationRings, DiscreteValuationFields #from sage.misc.cachefunc import cached_method
class CompleteDiscreteValuationRings(Category_singleton): """ The category of complete discrete valuation rings
EXAMPLES::
sage: Zp(7) in CompleteDiscreteValuationRings() True sage: QQ in CompleteDiscreteValuationRings() False sage: QQ[['u']] in CompleteDiscreteValuationRings() True sage: Qp(7) in CompleteDiscreteValuationRings() False sage: TestSuite(CompleteDiscreteValuationRings()).run() """ def super_categories(self): """ EXAMPLES::
sage: CompleteDiscreteValuationRings().super_categories() [Category of discrete valuation rings] """
class ElementMethods: @abstract_method def valuation(self): """ Return the valuation of this element.
EXAMPLES::
sage: R = Zp(7) sage: x = R(7); x 7 + O(7^21) sage: x.valuation() 1 """
def denominator(self): """ Return the denominator of this element normalized as a power of the uniformizer
EXAMPLES::
sage: K = Qp(7) sage: x = K(1/21) sage: x.denominator() 7 + O(7^21)
sage: x = K(7) sage: x.denominator() 1 + O(7^20)
Note that the denominator lives in the ring of integers::
sage: x.denominator().parent() 7-adic Ring with capped relative precision 20
An error is raised when the input is indistinguishable from 0::
sage: x = K(0,5); x O(7^5) sage: x.denominator() Traceback (most recent call last): ... ValueError: Cannot determine the denominator of an element indistinguishable from 0 """ return self.parent()(1)
class CompleteDiscreteValuationFields(Category_singleton): """ The category of complete discrete valuation fields
EXAMPLES::
sage: Zp(7) in CompleteDiscreteValuationFields() False sage: QQ in CompleteDiscreteValuationFields() False sage: LaurentSeriesRing(QQ,'u') in CompleteDiscreteValuationFields() True sage: Qp(7) in CompleteDiscreteValuationFields() True sage: TestSuite(CompleteDiscreteValuationFields()).run() """
def super_categories(self): """ EXAMPLES::
sage: CompleteDiscreteValuationFields().super_categories() [Category of discrete valuation fields] """
class ElementMethods: @abstract_method def valuation(self): """ Return the valuation of this element.
EXAMPLES::
sage: K = Qp(7) sage: x = K(7); x 7 + O(7^21) sage: x.valuation() 1 """
def denominator(self): """ Return the denominator of this element normalized as a power of the uniformizer
EXAMPLES::
sage: K = Qp(7) sage: x = K(1/21) sage: x.denominator() 7 + O(7^21)
sage: x = K(7) sage: x.denominator() 1 + O(7^20)
Note that the denominator lives in the ring of integers::
sage: x.denominator().parent() 7-adic Ring with capped relative precision 20
An error is raised when the input is indistinguishable from 0::
sage: x = K(0,5); x O(7^5) sage: x.denominator() Traceback (most recent call last): ... ValueError: Cannot determine the denominator of an element indistinguishable from 0 """ else: |