Source context 2 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValueabbrev algebraicExtension_standardRealAbsoluteValue : AbsoluteValue ℝ ℝA nontrivial real-valued absolute value on a complete field extends uniquely to every algebraic field extension. Both the archimedean and nonarchimedean branches are included.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValueabbrev algebraicExtension_standardRealAbsoluteValue : AbsoluteValue ℝ ℝarchimedean standard branch: the usual absolute value on ℂ.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValueabbrev algebraicExtension_standardComplexAbsoluteValue : AbsoluteValue ℂ ℝIf 0 < s ≤ 1, the s-power of a real-valued absolute value is again a real-valued absolute value. This is the exponent transport needed for the archimedean branch after Ostrowski's theorem.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuedef rpow
{F : Type*} [Field F] (v : AbsoluteValue F ℝ)
(s : ℝ) (hs0 : 0 < s) (hs1 : s ≤ 1) : AbsoluteValue F ℝ where
toFun x := v x ^ s
map_mul' x y := by
rw [v.map_mul, Real.mul_rpow (v.nonneg x) (v.nonneg y)]
nonneg' x := Real.rpow_nonneg (v.nonneg x) s
eq_zero' x := by
rw [Real.rpow_eq_zero (v.nonneg x) hs0.ne']
exact v.eq_zero
add_le' x y := by
calc
v (x + y) ^ s ≤ (v x + v y) ^ s :=
Real.rpow_le_rpow (v.nonneg _) (v.add_le x y) hs0.le
_ ≤ v x ^ s + v y ^ s :=
Real.rpow_add_le_add_rpow (v.nonneg x) (v.nonneg y) hs0.le hs1Raising an absolute value to a real power evaluates by real exponentiation.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem rpow_apply
{F : Type*} [Field F] (v : AbsoluteValue F ℝ)
(s : ℝ) (hs0 : 0 < s) (hs1 : s ≤ 1) (x : F) :
rpow v s hs0 hs1 x = v x ^ sA positive real power of a nonarchimedean absolute value is again an absolute value.
Unlike AbsoluteValue.rpow, no upper bound on the exponent is needed here: the ultrametric inequality is preserved by every strictly increasing positive power. This is the normalization operation for a nonarchimedean valuation class.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuedef nonarchimedeanRpow
{F : Type*} [Field F] (v : AbsoluteValue F ℝ)
(hv : IsNonarchimedean (v : F → ℝ))
(s : ℝ) (hs : 0 < s) : AbsoluteValue F ℝ where
toFun x := v x ^ s
map_mul' x y := by
rw [v.map_mul, Real.mul_rpow (v.nonneg x) (v.nonneg y)]
nonneg' x := Real.rpow_nonneg (v.nonneg x) s
eq_zero' x := by
rw [Real.rpow_eq_zero (v.nonneg x) hs.ne']
exact v.eq_zero
add_le' x y := by
rcases le_total (v x) (v y) with hxy | hyx
· calc
v (x + y) ^ s ≤ v y ^ s := by
apply Real.rpow_le_rpow (v.nonneg _)
· simpa [max_eq_right hxy] using hv x y
· exact hs.le
_ ≤ v x ^ s + v y ^ s :=
le_add_of_nonneg_left (Real.rpow_nonneg (v.nonneg x) s)
· calc
v (x + y) ^ s ≤ v x ^ s := by
apply Real.rpow_le_rpow (v.nonneg _)
· simpa [max_eq_left hyx] using hv x y
· exact hs.le
_ ≤ v x ^ s + v y ^ s :=
le_add_of_nonneg_right (Real.rpow_nonneg (v.nonneg y) s)Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem nonarchimedeanRpow_apply
{F : Type*} [Field F] (v : AbsoluteValue F ℝ)
(hv : IsNonarchimedean (v : F → ℝ))
(s : ℝ) (hs : 0 < s) (x : F) :
nonarchimedeanRpow v hv s hs x = v x ^ sPositive-power normalization does not change the underlying nonarchimedean valuation class.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem isEquiv_nonarchimedeanRpow
{F : Type*} [Field F] (v : AbsoluteValue F ℝ)
(hv : IsNonarchimedean (v : F → ℝ))
(s : ℝ) (hs : 0 < s) :
v.IsEquiv (nonarchimedeanRpow v hv s hs)The usual complex absolute value restricts to the usual real absolute value.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem algebraicExtension_standardComplexAbsoluteValue_extends_standardReal
(x : ℝ) :
algebraicExtension_standardComplexAbsoluteValue (algebraMap ℝ ℂ x) =
algebraicExtension_standardRealAbsoluteValue xPull back an absolute value along a K-algebra equivalence. This is the transport step used after the archimedean classification identifies a complete archimedean field with ℝ or ℂ.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuedef compAlgEquiv
{K L E : Type*} [Field K] [Field L] [Field E]
[Algebra K L] [Algebra K E] (e : L ≃ₐ[K] E)
(w : AbsoluteValue E ℝ) : AbsoluteValue L ℝComposition with an algebra equivalence evaluates the absolute value after transport.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem compAlgEquiv_apply
{K L E : Type*} [Field K] [Field L] [Field E]
[Algebra K L] [Algebra K E] (e : L ≃ₐ[K] E)
(w : AbsoluteValue E ℝ) (x : L) :
compAlgEquiv e w x = w (e x)Transporting an extending absolute value along an algebra equivalence preserves extension.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem compAlgEquiv_extends_apply
{K L E : Type*} [Field K] [Field L] [Field E]
[Algebra K L] [Algebra K E] (e : L ≃ₐ[K] E)
(w : AbsoluteValue E ℝ) (v : AbsoluteValue K ℝ)
(hw : ∀ x : K, w (algebraMap K E x) = v x)
(x : K) :
compAlgEquiv e w (algebraMap K L x) =
v xPullback along an algebra equivalence preserves exact extension of the base value.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem compAlgEquiv_extends
{K L E : Type*} [Field K] [Field L] [Field E]
[Algebra K L] [Algebra K E] (e : L ≃ₐ[K] E)
(w : AbsoluteValue E ℝ) (v : AbsoluteValue K ℝ)
(hw : Extends v w) :
Extends v (compAlgEquiv e w)Completeness is preserved when an absolute value is pulled back along an algebra equivalence.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem compAlgEquiv_complete
{K L E : Type*} [Field K] [Field L] [Field E]
[Algebra K L] [Algebra K E] (e : L ≃ₐ[K] E)
(w : AbsoluteValue E ℝ)
(hwcomplete : CompleteSpace (WithAbs w)) :
CompleteSpace (WithAbs (compAlgEquiv e w))Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem algebraicExtension_real_algEquiv_real_unique_rpow_extension
{L : Type*} [Field L] [Algebra ℝ L] (e : L ≃ₐ[ℝ] ℝ)
(s : ℝ) (hs0 : 0 < s) (hs1 : s ≤ 1)
(w : AbsoluteValue L ℝ)
(hw : ∀ x : ℝ, w (algebraMap ℝ L x) =
algebraicExtension_standardRealAbsoluteValue x ^ s) :
w = rpow
(compAlgEquiv
e algebraicExtension_standardRealAbsoluteValue)
s hs0 hs1In the ℂ branch over ℝ, the s-power of the usual complex absolute value is the unique extension of the s-power of the usual real absolute value.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem algebraicExtension_real_algEquiv_complex_unique_rpow_extension
{L : Type*} [Field L] [Algebra ℝ L] (e : L ≃ₐ[ℝ] ℂ)
(s : ℝ) (hs0 : 0 < s) (hs1 : s ≤ 1)
(w : AbsoluteValue L ℝ)
(hw : ∀ x : ℝ, w (algebraMap ℝ L x) =
algebraicExtension_standardRealAbsoluteValue x ^ s) :
w = rpow
(compAlgEquiv
e algebraicExtension_standardComplexAbsoluteValue)
s hs0 hs1Over ℂ, an absolute value extending the s-power of the usual complex absolute value is the transported s-power.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem algebraicExtension_complex_algEquiv_complex_unique_rpow_extension
{L : Type*} [Field L] [Algebra ℂ L] (e : L ≃ₐ[ℂ] ℂ)
(s : ℝ) (hs0 : 0 < s) (hs1 : s ≤ 1)
(w : AbsoluteValue L ℝ)
(hw : ∀ z : ℂ, w (algebraMap ℂ L z) =
algebraicExtension_standardComplexAbsoluteValue z ^ s) :
w = rpow
(compAlgEquiv
e algebraicExtension_standardComplexAbsoluteValue)
s hs0 hs1A chosen absolute-value extension together with its uniqueness property.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuestructure UniqueExtension
{K L : Type*} [Field K] [Field L] [Algebra K L]
(v : AbsoluteValue K ℝ) where
/-- The chosen absolute value on the extension field. -/
extension : AbsoluteValue L ℝ
/-- The chosen absolute value restricts to the given base absolute value. -/
isExtension : Extends v extension
/-- Every extension of the base absolute value equals the chosen one. -/
unique :
∀ w : AbsoluteValue L ℝ,
Extends v w → w = extensionSurrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuedef algebraicExtension_realRpow
{L : Type*} [Field L] [Algebra ℝ L] [Algebra.IsAlgebraic ℝ L]
(s : ℝ) (hs0 : 0 < s) (hs1 : s ≤ 1) :
UniqueExtension (K := ℝ) (L := L)
(rpow
algebraicExtension_standardRealAbsoluteValue s hs0 hs1)archimedean s-power theorem over ℂ: every algebraic extension of ℂ has a unique absolute value extending |z|^s, for 0 < s ≤ 1.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuedef algebraicExtension_complexRpow
{L : Type*} [Field L] [Algebra ℂ L] [Algebra.IsAlgebraic ℂ L]
(s : ℝ) (hs0 : 0 < s) (hs1 : s ≤ 1) :
UniqueExtension (K := ℂ) (L := L)
(rpow
algebraicExtension_standardComplexAbsoluteValue s hs0 hs1)Algebraicity is preserved under transport of the base field by a ring equivalence.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem algebraicExtension_isAlgebraic_of_base_ringEquiv
{K E L : Type*} [Field K] [Field E] [Field L] [Algebra K L]
[Algebra.IsAlgebraic K L] (σ : K ≃+* E) :
letI : Algebra E K := RingHom.toAlgebra σ.symm.toRingHom
letI : Algebra E L :=
RingHom.toAlgebra ((algebraMap K L).comp σ.symm.toRingHom)
Algebra.IsAlgebraic E L := by
let : Algebra E K := RingHom.toAlgebra σ.symm.toRingHom
let : Algebra E L :=
RingHom.toAlgebra ((algebraMap K L).comp σ.symm.toRingHom)
have : IsScalarTower E K L :=
IsScalarTower.of_algebraMap_eq (fun r => by
simp [RingHom.algebraMap_toAlgebra])
let e : K ≃ₐ[E] E := AlgEquiv.ofRingEquiv (f := σ) (by
intro r
simp [RingHom.algebraMap_toAlgebra])
have : Algebra.IsAlgebraic E K := e.symm.isAlgebraic
exact Algebra.IsAlgebraic.trans E K LTransport a unique algebraic absolute-value extension after replacing the base field by a ring-equivalent field; the top algebra structure is transported along the same equivalence.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuedef algebraicExtension_baseRingEquiv
{K E L : Type*} [Field K] [Field E] [Field L] [Algebra K L]
(σ : K ≃+* E) (vK : AbsoluteValue K ℝ) (vE : AbsoluteValue E ℝ)
(hvσ : ∀ x : K, vE (σ x) = vK x)
(R :
letI : Algebra E L :=
RingHom.toAlgebra ((algebraMap K L).comp σ.symm.toRingHom)
UniqueExtension (K := E) (L := L) vE) :
UniqueExtension (K := K) (L := L) vK := by
letI : Algebra E L :=
RingHom.toAlgebra ((algebraMap K L).comp σ.symm.toRingHom)
exact
{ extension := R.extension
isExtension := by
intro x
have hbase := R.isExtension (σ x)
have hmap :
algebraMap E L (σ x) = algebraMap K L x := by
simp [RingHom.algebraMap_toAlgebra]
calc
R.extension (algebraMap K L x)
= R.extension (algebraMap E L (σ x)) := by rw [hmap]
_ = vE (σ x) := hbase
_ = vK x := hvσ x
unique := by
intro w hw
apply R.unique w
intro z
have hmap :
algebraMap E L z = algebraMap K L (σ.symm z) := by
simp [RingHom.algebraMap_toAlgebra]
calc
w (algebraMap E L z)
= w (algebraMap K L (σ.symm z)) := by rw [hmap]
_ = vK (σ.symm z) := hw (σ.symm z)
_ = vE z := by
simpa using (hvσ (σ.symm z)).symm }The archimedean branch of the unique algebraic-extension construction.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuedef algebraicExtension_archimedean
{K L : Type*} [Field K] [Field L] [Algebra K L]
[Algebra.IsAlgebraic K L]
(v : AbsoluteValue K ℝ)
(hcomplete : CompleteSpace (WithAbs v))
(harch : ¬ IsNonarchimedean (v : K → ℝ)) :
UniqueExtension (K := K) (L := L) vnonarchimedean algebraic-extension theorem: existence and uniqueness of the extension over any algebraic extension.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuedef algebraicExtension_nonarchimedean
{K L : Type*} [Field K] [Field L] [Algebra K L]
[Algebra.IsAlgebraic K L]
(v : AbsoluteValue K ℝ)
(hcomplete : CompleteSpace (WithAbs v))
(hnonarch : IsNonarchimedean (v : K → ℝ))
(hv : v.IsNontrivial) :
UniqueExtension (K := K) (L := L) v where
extension :=
spectralExtension (K := K) (L := L)
v hcomplete hnonarch hv
isExtension :=
spectralExtension_extends
(K := K) (L := L) v hcomplete hnonarch hv
unique :=
eq_spectralExtension_of_extends
(K := K) (L := L) v hcomplete hnonarch hvalgebraic-extension theorem for the nontrivial valuations: a complete valued field has a unique absolute-value extension to every algebraic extension. The proof splits into the archimedean branch above and the nonarchimedean spectral branch.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuedef uniqueAlgebraicExtension
{K L : Type*} [Field K] [Field L] [Algebra K L]
[Algebra.IsAlgebraic K L]
(v : AbsoluteValue K ℝ)
(hcomplete : CompleteSpace (WithAbs v))
(hv : v.IsNontrivial) :
UniqueExtension (K := K) (L := L) vExistence and uniqueness as a unique-existence statement.
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace AbsoluteValuetheorem existsUnique_extends_of_isAlgebraic
{K L : Type*} [Field K] [Field L] [Algebra K L]
[Algebra.IsAlgebraic K L]
(v : AbsoluteValue K ℝ)
(hcomplete : CompleteSpace (WithAbs v))
(hv : v.IsNontrivial) :
∃! w : AbsoluteValue L ℝ, Extends v w