|
| 1 | +import Mathlib.RingTheory.DedekindDomain.FiniteAdeleRing |
| 2 | +import Mathlib.NumberTheory.NumberField.Basic |
| 3 | +import Mathlib |
| 4 | + |
| 5 | +universe u |
| 6 | + |
| 7 | +section PRed |
| 8 | +-- Don't try anything in this section because we are missing a definition. |
| 9 | + |
| 10 | +-- see mathlib PR #16485 |
| 11 | +def NumberField.AdeleRing (K : Type u) [Field K] [NumberField K] : Type u := sorry |
| 12 | + |
| 13 | +open NumberField |
| 14 | + |
| 15 | +variable (K : Type*) [Field K] [NumberField K] |
| 16 | + |
| 17 | +-- All these are already done in mathlib PRs, so can be assumed for now. |
| 18 | +-- When they're in mathlib master we can update mathlib and then get these theorems/definitions |
| 19 | +-- for free. |
| 20 | +instance : CommRing (AdeleRing K) := sorry |
| 21 | + |
| 22 | +instance : TopologicalSpace (AdeleRing K) := sorry |
| 23 | + |
| 24 | +instance : TopologicalRing (AdeleRing K) := sorry |
| 25 | + |
| 26 | +instance : Algebra K (AdeleRing K) := sorry |
| 27 | + |
| 28 | +end PRed |
| 29 | + |
| 30 | +section AdeleRingLocallyCompact |
| 31 | +-- This theorem is proved in another project, so we may as well assume it. |
| 32 | + |
| 33 | +-- see https://github.com/smmercuri/adele-ring_locally-compact |
| 34 | + |
| 35 | +variable (K : Type*) [Field K] [NumberField K] |
| 36 | + |
| 37 | +theorem NumberField.AdeleRing.locallyCompactSpace : LocallyCompactSpace (AdeleRing K) := sorry |
| 38 | + |
| 39 | +end AdeleRingLocallyCompact |
| 40 | + |
| 41 | +section TODO |
| 42 | +-- these theorems can't be worked on yet because we don't have an actual definition |
| 43 | +-- of the adele ring. We can work out a strategy when we do. |
| 44 | + |
| 45 | +variable (K : Type*) [Field K] [NumberField K] |
| 46 | + |
| 47 | +-- Maybe this isn't even stated in the best way? |
| 48 | +theorem NumberField.AdeleRing.discrete : ∀ k : K, ∃ U : Set (AdeleRing K), |
| 49 | + IsOpen U ∧ (algebraMap K (AdeleRing K)) ⁻¹' U = {k} := sorry |
| 50 | + |
| 51 | +open NumberField |
| 52 | + |
| 53 | +-- ditto for this one |
| 54 | +theorem NumberField.AdeleRing.cocompact : |
| 55 | + CompactSpace (AdeleRing K ⧸ AddMonoidHom.range (algebraMap K (AdeleRing K)).toAddMonoidHom) := |
| 56 | + sorry |
| 57 | + |
| 58 | +end TODO |
| 59 | + |
| 60 | +-- *************** Sorries which are not impossible start here ***************** |
| 61 | + |
| 62 | +variable (A K L B : Type*) [CommRing A] [CommRing B] [Algebra A B] [Field K] [Field L] |
| 63 | + [Algebra A K] [IsFractionRing A K] [Algebra B L] [IsDedekindDomain A] |
| 64 | + [Algebra K L] [Algebra A L] [IsScalarTower A B L] [IsScalarTower A K L] |
| 65 | + [IsIntegralClosure B A L] [FiniteDimensional K L] |
| 66 | + |
| 67 | +variable [IsDomain B] -- is this necessary? |
| 68 | +variable [Algebra.IsSeparable K L] |
| 69 | + |
| 70 | +-- example : IsDedekindDomain B := IsIntegralClosure.isDedekindDomain A K L B |
| 71 | + |
| 72 | +variable [IsDedekindDomain B] |
| 73 | + |
| 74 | +-- example : IsFractionRing B L := IsIntegralClosure.isFractionRing_of_finite_extension A K L B |
| 75 | + |
| 76 | +variable [IsFractionRing B L] |
| 77 | + |
| 78 | +-- example : Algebra.IsIntegral A B := IsIntegralClosure.isIntegral_algebra A L |
| 79 | + |
| 80 | +variable [Algebra.IsIntegral A B] |
| 81 | + |
| 82 | +-- Conjecture: in this generality there's a natural isomorphism `L ⊗[K] 𝔸_K^∞ → 𝔸_L^∞` |
| 83 | +-- Note however that we don't have a definition of adeles in this generality. |
| 84 | + |
| 85 | +-- One key input is the purely local statement that if L/K |
| 86 | +-- is a finite extension of number fields, and v is a place of K, |
| 87 | +-- then `L ⊗[K] Kᵥ ≅ ⊕_w|v L_w`, where the sum is over the places w |
| 88 | +-- of L above v. |
| 89 | +namespace DedekindDomain |
| 90 | + |
| 91 | +open scoped TensorProduct -- ⊗ notation for tensor product |
| 92 | + |
| 93 | +noncomputable instance : Algebra K (ProdAdicCompletions B L) := RingHom.toAlgebra <| |
| 94 | + (algebraMap L (ProdAdicCompletions B L)).comp (algebraMap K L) |
| 95 | + |
| 96 | +-- Need to pull back elements of HeightOneSpectrum B to HeightOneSpectrum A |
| 97 | +open IsDedekindDomain |
| 98 | + |
| 99 | +namespace HeightOneSpectrum |
| 100 | +-- first need a map from finite places of 𝓞L to finite places of 𝓞K |
| 101 | +variable {B L} in |
| 102 | +def comap (w : HeightOneSpectrum B) : HeightOneSpectrum A where |
| 103 | + asIdeal := w.asIdeal.comap (algebraMap A B) |
| 104 | + isPrime := Ideal.comap_isPrime (algebraMap A B) w.asIdeal |
| 105 | + ne_bot := mt Ideal.eq_bot_of_comap_eq_bot w.ne_bot |
| 106 | + |
| 107 | +open scoped algebraMap |
| 108 | + |
| 109 | +-- homework |
| 110 | +def valuation_comap (w : HeightOneSpectrum B) (x : K) : |
| 111 | + (comap A w).valuation x = w.valuation (algebraMap K L x) ^ (Ideal.ramificationIdx (algebraMap A B) (comap A w).asIdeal w.asIdeal) := sorry |
| 112 | + |
| 113 | +-- Say w is a finite place of L lying above v a finite places |
| 114 | +-- of K. Then there's a ring hom K_v -> L_w. |
| 115 | +variable {B L} in |
| 116 | +noncomputable def of_comap (w : HeightOneSpectrum B) : |
| 117 | + (HeightOneSpectrum.adicCompletion K (comap A w)) →+* (HeightOneSpectrum.adicCompletion L w) := |
| 118 | + letI : UniformSpace K := (comap A w).adicValued.toUniformSpace; |
| 119 | + letI : UniformSpace L := w.adicValued.toUniformSpace; |
| 120 | + UniformSpace.Completion.mapRingHom (algebraMap K L) <| by |
| 121 | + -- question is the following: |
| 122 | + -- if L/K is a finite extension of sensible fields (e.g. number fields) |
| 123 | + -- and if w is a finite place of L lying above v a finite place of K, |
| 124 | + -- and if we give L the w-adic topology and K the v-adic topology, |
| 125 | + -- then the map K → L is continuous |
| 126 | + refine continuous_of_continuousAt_zero (algebraMap K L) ?hf |
| 127 | + delta ContinuousAt |
| 128 | + simp only [map_zero] |
| 129 | + rw [(@Valued.hasBasis_nhds_zero K _ _ _ (comap A w).adicValued).tendsto_iff |
| 130 | + (@Valued.hasBasis_nhds_zero L _ _ _ w.adicValued)] |
| 131 | + simp only [HeightOneSpectrum.adicValued_apply, Set.mem_setOf_eq, true_and, true_implies] |
| 132 | + refine fun i ↦ ⟨i ^ (1 / Ideal.ramificationIdx (algebraMap A B) (comap A w).asIdeal w.asIdeal), fun _ h ↦ ?_⟩ |
| 133 | + -- last line is nonsense but use `valuation_comap` to finish |
| 134 | + push_cast at h |
| 135 | + sorry |
| 136 | + |
| 137 | +end HeightOneSpectrum |
| 138 | + |
| 139 | +open HeightOneSpectrum |
| 140 | + |
| 141 | +noncomputable def ProdAdicCompletions.baseChange : |
| 142 | + L ⊗[K] ProdAdicCompletions A K →ₗ[K] ProdAdicCompletions B L := TensorProduct.lift <| { |
| 143 | + toFun := fun l ↦ { |
| 144 | + toFun := fun kv w ↦ l • (of_comap A K w (kv (comap A w))) |
| 145 | + map_add' := sorry |
| 146 | + map_smul' := sorry |
| 147 | + } |
| 148 | + map_add' := sorry |
| 149 | + map_smul' := sorry |
| 150 | +} |
| 151 | + |
| 152 | +-- hard but hopefully enough (this proof will be a lot of work) |
| 153 | +theorem ProdAdicCompletions.baseChange_iso (x : ProdAdicCompletions A K) : |
| 154 | + ProdAdicCompletions.IsFiniteAdele x ↔ |
| 155 | + ProdAdicCompletions.IsFiniteAdele (ProdAdicCompletions.baseChange A K L B (1 ⊗ₜ x)) := sorry |
| 156 | + |
| 157 | +end DedekindDomain |
| 158 | + |
| 159 | +-- Can we now write down the isomorphism L ⊗ 𝔸_K^∞ = 𝔸_L^∞ ? |
0 commit comments