p-adic integers #
This file defines the p-adic integers ℤ_[p] as the subtype of ℚ_[p] with norm ≤ 1.
We show that ℤ_[p]
- is complete,
- is nonarchimedean,
- is a normed ring,
- is a local ring, and
- is a discrete valuation ring.
The relation between ℤ_[p] and ZMod p is established in another file.
Important definitions #
PadicInt: the type ofp-adic integers
Notation #
We introduce the notation ℤ_[p] for the p-adic integers.
Implementation notes #
Much, but not all, of this file assumes that p is prime. This assumption is inferred automatically
by taking [Fact p.Prime] as a type class argument.
Coercions into ℤ_[p] are set up to work with the norm_cast tactic.
References #
- [F. Q. Gouvêa, p-adic numbers][gouvea1997]
- [R. Y. Lewis, A formal proof of Hensel's lemma over the p-adic integers][lewis2019]
Tags #
p-adic, p adic, padic, p-adic integer
The ring of p-adic integers.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Ring structure and coercion to ℚ_[p] #
Equations
- PadicInt.instAddCommGroupPadicInt = inferInstance
The coercion from ℤ_[p] to ℚ_[p] as a ring homomorphism.
Equations
- PadicInt.Coe.ringHom = Subring.subtype (PadicInt.subring p)
Instances For
The inverse of a p-adic integer with norm equal to 1 is also a p-adic integer.
Otherwise, the inverse is defined to be 0.
Equations
Instances For
A sequence of integers that is Cauchy with respect to the p-adic norm converges to a p-adic
integer.
Equations
- PadicInt.ofIntSeq seq h = { val := ⟦{ val := fun (n : ℕ) => ↑(seq n), property := h }⟧, property := (_ : ↑(PadicSeq.norm { val := fun (n : ℕ) => ↑(seq n), property := h }) ≤ 1) }
Instances For
Equations
- PadicInt.instMetricSpacePadicInt p = Subtype.metricSpace
Equations
- (_ : CompleteSpace ℤ_[p]) = (_ : CompleteSpace ↑{x : ℚ_[p] | ‖x‖ ≤ 1})
Equations
- PadicInt.instNormedCommRingPadicInt p = let src := PadicInt.instCommRing; NormedCommRing.mk (_ : ∀ (a b : ℤ_[p]), a * b = b * a)
Equations
- (_ : NormOneClass ℤ_[p]) = (_ : NormOneClass ℤ_[p])
Norm #
Equations
- (_ : CauSeq.IsComplete ℤ_[p] norm) = (_ : CauSeq.IsComplete ℤ_[p] norm)
Valuation on ℤ_[p] #
Units of ℤ_[p] #
A p-adic number u with ‖u‖ = 1 is a unit of ℤ_[p].
Equations
- PadicInt.mkUnits h = let z := { val := u, property := (_ : ‖u‖ ≤ 1) }; { val := z, inv := PadicInt.inv z, val_inv := (_ : z * PadicInt.inv z = 1), inv_val := (_ : PadicInt.inv z * z = 1) }
Instances For
unitCoeff hx is the unit u in the unique representation x = u * p ^ n.
See unitCoeff_spec.
Equations
- PadicInt.unitCoeff hx = let u := ↑x * ↑p ^ (-PadicInt.valuation x); let_fun hu := (_ : ‖↑x * ↑p ^ (-PadicInt.valuation x)‖ = 1); PadicInt.mkUnits hu
Instances For
Various characterizations of open unit balls #
Discrete valuation ring #
Equations
- (_ : DiscreteValuationRing ℤ_[p]) = (_ : DiscreteValuationRing ℤ_[p])
Equations
- (_ : IsAdicComplete (LocalRing.maximalIdeal ℤ_[p]) ℤ_[p]) = (_ : IsAdicComplete (LocalRing.maximalIdeal ℤ_[p]) ℤ_[p])
Equations
- PadicInt.algebra = Algebra.ofSubring (PadicInt.subring p)
Equations
- (_ : IsFractionRing ℤ_[p] ℚ_[p]) = (_ : IsLocalization (nonZeroDivisors ℤ_[p]) ℚ_[p])