@@ -21,7 +21,7 @@ This file proves a variant of the Hahn embedding theorem:
2121
2222For a linearly ordered module `M` over an Archimedean division ring `K`,
2323there exists a strictly monotone linear map to lexicographically ordered
24- `HahnSeries ( FiniteArchimedeanClass M) R ` with an archimedean `K`-module `R`,
24+ `R⟦ FiniteArchimedeanClass M⟧ ` with an archimedean `K`-module `R`,
2525as long as there are embeddings from a certain family of Archimedean submodules to `R`.
2626
2727The family of Archimedean submodules `HahnEmbedding.ArchimedeanStrata K M` is indexed by
@@ -35,7 +35,7 @@ to a proof of the classic Hahn embedding theorem. (See `hahnEmbedding_isOrderedA
3535## Main theorem
3636
3737* `hahnEmbedding_isOrderedModule`:
38- there exists a strictly monotone `M →ₗ[K] Lex (HahnSeries ( FiniteArchimedeanClass M) R) ` that maps
38+ there exists a strictly monotone `M →ₗ[K] Lex R⟦ FiniteArchimedeanClass M⟧ ` that maps
3939 `ArchimedeanClass M` to `HahnSeries.orderTop` in the expected way, as long as
4040 `HahnEmbedding.Seed K M R` is nonempty.
4141
@@ -52,13 +52,13 @@ We start with `HahnEmbedding.ArchimedeanStrata` that gives a family of Archimede
5252and a "seed" `HahnEmbedding.Seed` that specifies how to embed each
5353`HahnEmbedding.ArchimedeanStrata.stratum` into `R`.
5454
55- From these, we create a partial map from the direct sum of all `stratum` to `HahnSeries Γ R `.
55+ From these, we create a partial map from the direct sum of all `stratum` to `R⟦Γ⟧ `.
5656If `ArchimedeanClass M` is finite, the direct sum is the entire `M` and we are done
5757(though we don't handle this case separately). Otherwise, we will extend the map to `M` in the
5858following steps.
5959-/
6060
61- open ArchimedeanClass DirectSum
61+ open ArchimedeanClass DirectSum HahnSeries
6262
6363variable {K : Type *} [DivisionRing K] [LinearOrder K] [IsOrderedRing K] [Archimedean K]
6464variable {M : Type *} [AddCommGroup M] [LinearOrder M] [IsOrderedAddMonoid M]
@@ -237,7 +237,7 @@ theorem hahnCoeff_apply {x : seed.baseDomain} {f : Π₀ c, seed.stratum c}
237237/-- Combining all `HahnEmbedding.Seed.coeff` as
238238a partial linear map from `HahnEmbedding.Seed.baseDomain` to `HahnSeries`. -/
239239noncomputable
240- def baseEmbedding : M →ₗ.[K] Lex (HahnSeries ( FiniteArchimedeanClass M) R) where
240+ def baseEmbedding : M →ₗ.[K] Lex R⟦ FiniteArchimedeanClass M⟧ where
241241 domain := seed.baseDomain
242242 toFun := (toLexLinearEquiv _ _).toLinearMap ∘ₗ (HahnSeries.ofFinsuppLinearMap _) ∘ₗ
243243 (Finsupp.lcomapDomain _ Subtype.val_injective) ∘ₗ
@@ -268,7 +268,7 @@ transferring `ArchimedeanClass` to `HahnEmbedding.orderTop`, and being "truncati
268268
269269/-- A partial linear map is called a "partial Hahn embedding" if it extends
270270`HahnEmbedding.Seed.baseEmbedding`, is strictly monotone, and is truncation-closed. -/
271- structure IsPartial (f : M →ₗ.[K] Lex (HahnSeries ( FiniteArchimedeanClass M) R) ) : Prop where
271+ structure IsPartial (f : M →ₗ.[K] Lex R⟦ FiniteArchimedeanClass M⟧ ) : Prop where
272272 /-- A partial Hahn embedding is strictly monotone. -/
273273 strictMono : StrictMono f
274274 /-- A partial Hahn embedding always extends `baseEmbedding`. -/
@@ -395,7 +395,7 @@ theorem isPartial_baseEmbedding [IsOrderedAddMonoid R] : IsPartial seed seed.bas
395395end Seed
396396
397397/-- The type of all partial Hahn embeddings. -/
398- abbrev Partial := {f : M →ₗ.[K] Lex (HahnSeries ( FiniteArchimedeanClass M) R) // IsPartial seed f}
398+ abbrev Partial := {f : M →ₗ.[K] Lex R⟦ FiniteArchimedeanClass M⟧ // IsPartial seed f}
399399
400400namespace Partial
401401variable {seed} (f : Partial seed)
@@ -405,7 +405,7 @@ instance [IsOrderedAddMonoid R] : Inhabited (Partial seed) where
405405 default := ⟨seed.baseEmbedding, seed.isPartial_baseEmbedding⟩
406406
407407/-- `HahnEmbedding.Partial` as an `OrderedAddMonoidHom`. -/
408- def toOrderAddMonoidHom : f.val.domain →+o Lex (HahnSeries ( FiniteArchimedeanClass M) R) where
408+ def toOrderAddMonoidHom : f.val.domain →+o Lex R⟦ FiniteArchimedeanClass M⟧ where
409409 __ := f.val.toFun
410410 map_zero' := by simp
411411 monotone' := f.prop.strictMono.monotone
@@ -586,7 +586,7 @@ theorem isWF_support_evalCoeff [IsOrderedAddMonoid R] [Archimedean R] (x : M) :
586586/-- Promote `HahnEmbedding.Partial.evalCoeff`'s output to a new `HahnSeries`. -/
587587noncomputable
588588def eval [IsOrderedAddMonoid R] [Archimedean R] (x : M) :
589- Lex (HahnSeries ( FiniteArchimedeanClass M) R) :=
589+ Lex R⟦ FiniteArchimedeanClass M⟧ :=
590590 toLex { coeff := f.evalCoeff x
591591 isPWO_support' := (f.isWF_support_evalCoeff x).isPWO }
592592
@@ -772,7 +772,7 @@ theorem eval_lt [IsOrderedAddMonoid R] [Archimedean R] {x : M} (hx : x ∉ f.val
772772/-- Extend `f` to a larger partial linear map by adding a new `x`. -/
773773noncomputable
774774def extendFun [IsOrderedAddMonoid R] [Archimedean R] {x : M} (hx : x ∉ f.val.domain) :
775- M →ₗ.[K] Lex (HahnSeries ( FiniteArchimedeanClass M) R) :=
775+ M →ₗ.[K] Lex R⟦ FiniteArchimedeanClass M⟧ :=
776776 .supSpanSingleton f.val x (eval f x) hx
777777
778778theorem extendFun_strictMono [IsOrderedAddMonoid R] [Archimedean R] {x : M}
@@ -898,7 +898,7 @@ embeddings by adding new elements, the maximal embedding must have the maximal d
898898`HahnEmbedding.Partial`. -/
899899noncomputable
900900def sSupFun {c : Set (Partial seed)} (hc : DirectedOn (· ≤ ·) c) :
901- M →ₗ.[K] Lex (HahnSeries ( FiniteArchimedeanClass M) R) :=
901+ M →ₗ.[K] Lex R⟦ FiniteArchimedeanClass M⟧ :=
902902 LinearPMap.sSup ((·.val) '' c) (hc.mono_comp (by simp))
903903
904904theorem sSupFun_strictMono [IsOrderedAddMonoid R] {c : Set (Partial seed)}
@@ -988,13 +988,13 @@ end HahnEmbedding
988988
989989/-- **Hahn embedding theorem for an ordered module**
990990
991- There exists a strictly monotone `M →ₗ[K] Lex (HahnSeries ( FiniteArchimedeanClass M) R) ` that maps
991+ There exists a strictly monotone `M →ₗ[K] Lex R⟦ FiniteArchimedeanClass M⟧ ` that maps
992992`ArchimedeanClass M` to `HahnSeries.orderTop` in the expected way, as long as
993993`HahnEmbedding.Seed K M R` is nonempty. The `HahnEmbedding.Partial` with maximal domain is the
994994desired embedding. -/
995995theorem hahnEmbedding_isOrderedModule [IsOrderedAddMonoid R] [Archimedean R]
996996 [h : Nonempty (HahnEmbedding.Seed K M R)] :
997- ∃ f : M →ₗ[K] Lex (HahnSeries ( FiniteArchimedeanClass M) R) , StrictMono f ∧
997+ ∃ f : M →ₗ[K] Lex R⟦ FiniteArchimedeanClass M⟧ , StrictMono f ∧
998998 ∀ (a : M), mk a = FiniteArchimedeanClass.withTopOrderIso M (ofLex (f a)).orderTop := by
999999 obtain ⟨e, hdomain⟩ := HahnEmbedding.Partial.exists_domain_eq_top h.some
10001000 obtain harch := e.orderTop_eq_archimedeanClassMk
0 commit comments