@@ -48,14 +48,15 @@ namespace NumberField.Units.dirichletUnitTheorem
4848/-!
4949### Dirichlet Unit Theorem
5050
51- We define a group morphism from `(𝓞 K)ˣ` to `{w : InfinitePlace K // w ≠ w₀} → ℝ` where `w₀` is a
52- distinguished (arbitrary) infinite place, prove that its kernel is the torsion subgroup (see
53- `logEmbedding_eq_zero_iff`) and that its image, called `unitLattice`, is a full `ℤ`-lattice. It
54- follows that `unitLattice` is a free `ℤ`-module (see `instModuleFree_unitLattice`) of rank
55- `card (InfinitePlaces K) - 1` (see `unitLattice_rank`). To prove that the `unitLattice` is a full
56- `ℤ`-lattice, we need to prove that it is discrete (see `unitLattice_inter_ball_finite`) and that it
57- spans the full space over `ℝ` (see `unitLattice_span_eq_top`); this is the main part of the proof,
58- see the section `span_top` below for more details.
51+ We define a group morphism from `(𝓞 K)ˣ` to `logSpace K`, defined as
52+ `{w : InfinitePlace K // w ≠ w₀} → ℝ` where `w₀` is a distinguished (arbitrary) infinite place,
53+ prove that its kernel is the torsion subgroup (see `logEmbedding_eq_zero_iff`) and that its image,
54+ called `unitLattice`, is a full `ℤ`-lattice. It follows that `unitLattice` is a free `ℤ`-module
55+ (see `instModuleFree_unitLattice`) of rank `card (InfinitePlaces K) - 1` (see `unitLattice_rank`).
56+ To prove that the `unitLattice` is a full `ℤ`-lattice, we need to prove that it is discrete
57+ (see `unitLattice_inter_ball_finite`) and that it spans the full space over `ℝ`
58+ (see `unitLattice_span_eq_top`); this is the main part of the proof, see the section `span_top`
59+ below for more details.
5960-/
6061
6162open Finset
@@ -69,10 +70,15 @@ variable [NumberField K]
6970/-- The distinguished infinite place. -/
7071def w₀ : InfinitePlace K := (inferInstance : Nonempty (InfinitePlace K)).some
7172
73+ variable (K) in
74+ /-- The `logSpace` is defined as `{w : InfinitePlace K // w ≠ w₀} → ℝ` where `w₀` is the
75+ distinguished infinite place. -/
76+ abbrev logSpace := {w : InfinitePlace K // w ≠ w₀} → ℝ
77+
7278variable (K) in
7379/-- The logarithmic embedding of the units (seen as an `Additive` group). -/
7480def _root_.NumberField.Units.logEmbedding :
75- Additive ((𝓞 K)ˣ) →+ ({w : InfinitePlace K // w ≠ w₀} → ℝ) :=
81+ Additive ((𝓞 K)ˣ) →+ logSpace K :=
7682{ toFun := fun x w => mult w.val * Real.log (w.val ↑x.toMul)
7783 map_zero' := by simp; rfl
7884 map_add' := fun _ _ => by simp [Real.log_mul, mul_add]; rfl }
@@ -153,13 +159,12 @@ variable (K)
153159
154160/-- The lattice formed by the image of the logarithmic embedding. -/
155161noncomputable def _root_.NumberField.Units.unitLattice :
156- Submodule ℤ ({w : InfinitePlace K // w ≠ w₀} → ℝ ) :=
162+ Submodule ℤ (logSpace K ) :=
157163 Submodule.map (logEmbedding K).toIntLinearMap ⊤
158164
159165open scoped Classical in
160166theorem unitLattice_inter_ball_finite (r : ℝ) :
161- ((unitLattice K : Set ({ w : InfinitePlace K // w ≠ w₀} → ℝ)) ∩
162- Metric.closedBall 0 r).Finite := by
167+ ((unitLattice K : Set (logSpace K)) ∩ Metric.closedBall 0 r).Finite := by
163168 obtain hr | hr := lt_or_le r 0
164169 · convert Set.finite_empty
165170 rw [Metric.closedBall_eq_empty.mpr hr]
@@ -297,7 +302,7 @@ theorem exists_unit (w₁ : InfinitePlace K) :
297302 exact seq_norm_le K w₁ hB n
298303
299304theorem unitLattice_span_eq_top :
300- Submodule.span ℝ (unitLattice K : Set ({w : InfinitePlace K // w ≠ w₀} → ℝ )) = ⊤ := by
305+ Submodule.span ℝ (unitLattice K : Set (logSpace K )) = ⊤ := by
301306 classical
302307 refine le_antisymm le_top ?_
303308 -- The standard basis
@@ -356,7 +361,7 @@ instance instZLattice_unitLattice : IsZLattice ℝ (unitLattice K) where
356361 span_top := unitLattice_span_eq_top K
357362
358363protected theorem finrank_eq_rank :
359- finrank ℝ ({w : InfinitePlace K // w ≠ w₀} → ℝ ) = Units.rank K := by
364+ finrank ℝ (logSpace K ) = Units.rank K := by
360365 classical
361366 simp only [finrank_fintype_fun_eq_card, Fintype.card_subtype_compl,
362367 Fintype.card_ofSubsingleton, rank]
@@ -369,7 +374,7 @@ theorem unitLattice_rank :
369374
370375/-- The map obtained by quotienting by the kernel of `logEmbedding`. -/
371376def logEmbeddingQuot :
372- Additive ((𝓞 K)ˣ ⧸ (torsion K)) →+ ({w : InfinitePlace K // w ≠ w₀} → ℝ ) :=
377+ Additive ((𝓞 K)ˣ ⧸ (torsion K)) →+ (logSpace K ) :=
373378 MonoidHom.toAdditive' <|
374379 (QuotientGroup.kerLift (AddMonoidHom.toMultiplicative' (logEmbedding K))).comp
375380 (QuotientGroup.quotientMulEquivOfEq (by
0 commit comments