def construction(self, forbid_frac_field=False): """ 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). INPUT: - ``forbid_frac_field`` -- require a completion functor rather than a fraction field functor. This is used in the :meth:`sage.rings.padics.local_generic.LocalGeneric.change` method. EXAMPLES:: sage: K = Qp(17, 8, print_mode='val-unit', print_sep='&') sage: c, L = K.construction(); L 17-adic Ring with capped relative precision 8 sage: c FractionField sage: c(L) 17-adic Field with capped relative precision 8 sage: K == c(L) True We can get a completion functor by forbidding the fraction field:: sage: c, L = K.construction(forbid_frac_field=True); L Rational Field sage: c Completion[17, prec=8] sage: c(L) 17-adic Field with capped relative precision 8 sage: K == c(L) True TESTS:: sage: R = QpLC(13,(31,41)) sage: R._precision_cap() (31, 41) sage: F, Z = R.construction() sage: S = F(Z) sage: S._precision_cap() (31, 41) """ from sage.categories.pushout import FractionField, CompletionFunctor if forbid_frac_field: extras = { 'print_mode': self._printer.dict(), 'type': self._prec_type(), 'names': self._names } if hasattr(self, '_label'): extras['label'] = self._label return (CompletionFunctor(self.prime(), self._precision_cap(), extras), QQ) else: return FractionField(), self.integer_ring()
def construction(self): r""" Returns a pair ``(functor, parent)`` such that ``functor(parent)`` returns ``self``. This is the construction of `\QQ` as the fraction field of `\ZZ`. EXAMPLES:: sage: QQ.construction() (FractionField, Integer Ring) """ from sage.categories.pushout import FractionField from . import integer_ring return FractionField(), integer_ring.ZZ
def construction(self): """ EXAMPLES:: sage: Frac(ZZ['x']).construction() (FractionField, Univariate Polynomial Ring in x over Integer Ring) sage: K = Frac(GF(3)['t']) sage: f, R = K.construction() sage: f(R) Fraction Field of Univariate Polynomial Ring in t over Finite Field of size 3 sage: f(R) == K True """ from sage.categories.pushout import FractionField return FractionField(), self.ring()
def construction(self): from sage.categories.pushout import FractionField import integer_ring return FractionField(), integer_ring.ZZ