p-adic numbers #
This file defines the p-adic numbers (rationals) ℚ_[p] as
the completion of ℚ with respect to the p-adic norm.
We show that the p-adic norm on ℚ extends to ℚ_[p], that ℚ is embedded in ℚ_[p],
and that ℚ_[p] is Cauchy complete.
Important definitions #
Padic: the type ofp-adic numberspadicNormE: the rational valuedp-adic norm onℚ_[p]Padic.addValuation: the additivep-adic valuation onℚ_[p], with values inWithTop ℤ
Notation #
We introduce the notation ℚ_[p] for the p-adic numbers.
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.
We use the same concrete Cauchy sequence construction that is used to construct ℝ.
ℚ_[p] inherits a field structure from this construction.
The extension of the norm on ℚ to ℚ_[p] is not analogous to extending the absolute value to
ℝ and hence the proof that ℚ_[p] is complete is different from the proof that ℝ is complete.
A small special-purpose simplification tactic, padic_index_simp, is used to manipulate sequence
indices in the proof that the norm extends.
padicNormE is the rational-valued p-adic norm on ℚ_[p].
To instantiate ℚ_[p] as a normed field, we must cast this into an ℝ-valued norm.
The ℝ-valued norm, using notation ‖ ‖ from normed spaces,
is the canonical representation of this norm.
simp prefers padicNorm to padicNormE when possible.
Since padicNormE and ‖ ‖ have different types, simp does not rewrite one to the other.
Coercions from ℚ to ℚ_[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, norm, valuation, cauchy, completion, p-adic completion
Since the norm of the entries of a Cauchy sequence is eventually stationary, we can lift the norm to sequences.
Equations
- PadicSeq.norm f = if hf : f ≈ 0 then 0 else padicNorm p (↑f (PadicSeq.stationaryPoint hf))
Instances For
The p-adic valuation on ℚ lifts to PadicSeq p.
Valuation f is defined to be the valuation of the (ℚ-valued) stationary point of f.
Equations
- PadicSeq.valuation f = if hf : f ≈ 0 then 0 else padicValRat p (↑f (PadicSeq.stationaryPoint hf))
Instances For
notation for p-padic rationals
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Padic.instAddCommGroupPadic = inferInstance
The rational-valued p-adic norm on ℚ_[p] is lifted from the norm on Cauchy sequences. The
canonical form of this function is the normed space instance, with notation ‖ ‖.
Equations
- padicNormE = { toMulHom := { toFun := Quotient.lift PadicSeq.norm ⋯, map_mul' := ⋯ }, nonneg' := ⋯, eq_zero' := ⋯, add_le' := ⋯ }
Instances For
Theorems about padicNormE are named with a ' so the names do not conflict with the
equivalent theorems about norm (‖ ‖).
limSeq f, for f a Cauchy sequence of p-adic numbers, is a sequence of rationals with the
same limit point as f.
Equations
- Padic.limSeq f n = Classical.choose ⋯
Instances For
Equations
Equations
- Padic.normedField p = let __src := Padic.field; let __src_1 := Padic.metricSpace p; NormedField.mk ⋯ ⋯
Equations
- padicNormE.instNontriviallyNormedFieldPadic = let __src := Padic.normedField p; NontriviallyNormedField.mk ⋯
ratNorm q, for a p-adic number q is the p-adic norm of q, as rational number.
The lemma padicNormE.eq_ratNorm asserts ‖q‖ = ratNorm q.
Equations
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Valuation on ℚ_[p] #
Padic.valuation lifts the p-adic valuation on rationals to ℚ_[p].
Equations
- Padic.valuation = Quotient.lift PadicSeq.valuation ⋯
Instances For
The additive p-adic valuation on ℚ_[p], with values in WithTop ℤ.
Equations
- Padic.addValuationDef x = if x = 0 then ⊤ else ↑(Padic.valuation x)
Instances For
The additive p-adic valuation on ℚ_[p], as an addValuation.
Equations
- Padic.addValuation = AddValuation.of Padic.addValuationDef ⋯ ⋯ ⋯ ⋯