Paper XII · Lean source
AdicCompletionComparison.lean
Inherited / related evidence Coverage and evidence
The edition relies on earlier or related formal evidence. That evidence is not a fresh full-edition replay.
This viewer reads the retained source; it does not run Lean or assign new claim mappings.
Local imports (1)
PaperXII/AdicCompletionComparison.lean210 lines
Original source path
core/publication/source/lean_guide/formal_release/lean/PaperXII/AdicCompletionComparison.leanSkip declarations and read code
1 import PaperXII.AdicQuotientTopology
2 import Mathlib.RingTheory.AdicCompletion.LocalRing
3
4 /-!
5 # Comparison with the actual algebraic adic completion
6
7 The inverse-limit completion is proved to be a completion of the same uniform
8 space. Density and the inducing property are proved from actual residue maps;
9 no completion package is supplied as an assumption.
10 -/
11 noncomputable section
12 open Filter Topology UniformSpace
13 open scoped Uniformity
14 set_option autoImplicit false
15 namespace PaperXII.AdicModel
16
17 variable {R : Type*} [CommRing R] (I : Ideal R)
18
19 abbrev AlgebraicTarget := Carrier (AdicCompletion I R)
20 (I.map (algebraMap R (AdicCompletion I R)))
21
22 def intoAlgebraic : Carrier R I →+* AlgebraicTarget I :=
23 ((rawEquiv _ _).symm.toRingHom.comp (algebraMap R (AdicCompletion I R))).comp
24 (rawEquiv R I).toRingHom
25
26 theorem algebraicTarget_complete (fg : I.FG) : CompleteSpace (AlgebraicTarget I) := by
27 have h : IsAdicComplete (WithIdeal.i : Ideal (AlgebraicTarget I)) (AlgebraicTarget I) :=
28 AdicCompletion.isAdicComplete_self I fg
29 exact ((carrier_isAdic _ _).isAdicComplete_iff.mp h).1
30
31 theorem algebraicTarget_t2 (fg : I.FG) : T2Space (AlgebraicTarget I) := by
32 have h : IsAdicComplete (WithIdeal.i : Ideal (AlgebraicTarget I)) (AlgebraicTarget I) :=
33 AdicCompletion.isAdicComplete_self I fg
34 exact ((carrier_isAdic _ _).isAdicComplete_iff.mp h).2
35
36 /-- Powers of the actual extended ideal are exactly residue-evaluation kernels. -/
37 theorem algebraic_mem_power_iff (fg : I.FG) (n : ℕ) (x : AdicCompletion I R) :
38 x ∈ (I.map (algebraMap R (AdicCompletion I R))) ^ n ↔
39 AdicCompletion.eval I R n x = 0 := by
40 rw [← Ideal.map_pow, ← Submodule.restrictScalars_mem R, ← Ideal.smul_top_eq_map,
41 AdicCompletion.pow_smul_top_eq_ker_eval fg, LinearMap.mem_ker]
42
43 /-- Inverse images of every ideal power are computed, not postulated. -/
44 theorem intoAlgebraic_power_iff (fg : I.FG) (n : ℕ) (x : Carrier R I) :
45 intoAlgebraic I x ∈ (WithIdeal.i : Ideal (AlgebraicTarget I)) ^ n ↔
46 x ∈ (WithIdeal.i : Ideal (Carrier R I)) ^ n := by
47 change algebraMap R (AdicCompletion I R) (rawEquiv R I x) ∈
48 (I.map (algebraMap R (AdicCompletion I R))) ^ n ↔ rawEquiv R I x ∈ I ^ n
49 rw [algebraic_mem_power_iff I fg]
50 change AdicCompletion.eval I R n (AdicCompletion.of I R (rawEquiv R I x)) = 0 ↔ _
51 rw [AdicCompletion.eval_of]
52 simp [Ideal.Quotient.eq_zero_iff_mem, Ideal.mul_top]
53
54 /-- The canonical map induces the exact original adic uniformity. -/
55 theorem intoAlgebraic_isUniformInducing (fg : I.FG) : IsUniformInducing (intoAlgebraic I) := by
56 rw [(carrier_isAdic R I).hasBasis_nhds_zero.uniformity_of_nhds_zero.isUniformInducing_iff
57 (carrier_isAdic _ _).hasBasis_nhds_zero.uniformity_of_nhds_zero]
58 constructor
59 · intro n _
60 refine ⟨n, trivial, ?_⟩
61 intro x y hxy
62 change intoAlgebraic I y - intoAlgebraic I x ∈ (WithIdeal.i : Ideal (AlgebraicTarget I)) ^ n
63 rw [← map_sub]
64 exact (intoAlgebraic_power_iff I fg n (y - x)).mpr hxy
65 · intro n _
66 refine ⟨n, trivial, ?_⟩
67 intro x y hxy
68 change intoAlgebraic I y - intoAlgebraic I x ∈ (WithIdeal.i : Ideal (AlgebraicTarget I)) ^ n at hxy
69 rw [← map_sub] at hxy
70 exact (intoAlgebraic_power_iff I fg n (y - x)).mp hxy
71
72 /-- Every residue class in the completion has an actual original representative. -/
73 theorem intoAlgebraic_dense (fg : I.FG) : DenseRange (intoAlgebraic I) := by
74 rw [DenseRange, dense_iff_inter_open]
75 intro U hU hne
76 obtain ⟨x, hx⟩ := hne
77 obtain ⟨n, _, hn⟩ := (carrier_isAdic _ _).hasBasis_nhds x |>.mem_iff.mp (hU.mem_nhds hx)
78 obtain ⟨r, hr⟩ := Submodule.Quotient.mk_surjective _
79 (AdicCompletion.eval I R n (rawEquiv _ _ x))
80 let y : AlgebraicTarget I := intoAlgebraic I ((rawEquiv R I).symm r)
81 have hdiff : y - x ∈ (WithIdeal.i : Ideal (AlgebraicTarget I)) ^ n := by
82 change algebraMap R (AdicCompletion I R) r - rawEquiv _ _ x ∈
83 (I.map (algebraMap R (AdicCompletion I R))) ^ n
84 rw [algebraic_mem_power_iff I fg]
85 change AdicCompletion.eval I R n (AdicCompletion.of I R r - rawEquiv _ _ x) = 0
86 rw [map_sub, AdicCompletion.eval_of]
87 exact sub_eq_zero.mpr hr
88 refine ⟨y, ?_, ⟨(rawEquiv R I).symm r, rfl⟩⟩
89 apply hn
90 exact ⟨y - x, hdiff, add_sub_cancel _ _⟩
91
92 /-- An abstract package constructed from the actual algebraic completion. -/
93 def algebraicPackage (fg : I.FG) : AbstractCompletion (Carrier R I) where
94 space := AlgebraicTarget I
95 coe := intoAlgebraic I
96 uniformStruct := inferInstance
97 complete := algebraicTarget_complete I fg
98 separation := by have := algebraicTarget_t2 I fg; infer_instance
99 isUniformInducing := intoAlgebraic_isUniformInducing I fg
100 dense := intoAlgebraic_dense I fg
101
102 /-- A proved uniform equivalence between the two actual completion constructions. -/
103 def algebraicUniformEquiv (fg : I.FG) : Completed R I ≃ᵤ AlgebraicTarget I :=
104 Completion.cPkg.compareEquiv (algebraicPackage I fg)
105
106 /-- The comparison preserves the ring operations, not only the uniformity. -/
107 def algebraicRingEquiv (fg : I.FG) : Completed R I ≃+* AlgebraicTarget I := by
108 letI := algebraicTarget_complete I fg
109 letI := algebraicTarget_t2 I fg
110 exact RingEquiv.ofBijective
111 (Completion.extensionHom (intoAlgebraic I) (intoAlgebraic_isUniformInducing I fg).uniformContinuous.continuous)
112 (algebraicUniformEquiv I fg).bijective
113
114 theorem algebraicRingEquiv_continuous (fg : I.FG) : Continuous (algebraicRingEquiv I fg) :=
115 (algebraicUniformEquiv I fg).continuous
116
117 theorem algebraicRingEquiv_symm_continuous (fg : I.FG) :
118 Continuous (algebraicRingEquiv I fg).symm := by
119 have he : (⇑(algebraicRingEquiv I fg).symm) = (⇑(algebraicUniformEquiv I fg).symm) := by
120 funext x
121 apply (algebraicRingEquiv I fg).injective
122 exact ((algebraicRingEquiv I fg).apply_symm_apply x).trans
123 ((algebraicUniformEquiv I fg).apply_symm_apply x).symm
124 rw [he]
125 exact (algebraicUniformEquiv I fg).symm.continuous
126
127 @[simp] theorem algebraicRingEquiv_embed (fg : I.FG) (r : R) :
128 algebraicRingEquiv I fg (embed R I r) =
129 (rawEquiv _ _).symm (algebraMap R (AdicCompletion I R) r) := by
130 have := algebraicTarget_complete I fg
131 have := algebraicTarget_t2 I fg
132 exact Completion.extensionHom_coe (intoAlgebraic I)
133 (intoAlgebraic_isUniformInducing I fg).uniformContinuous.continuous ((rawEquiv R I).symm r)
134
135 /-- Completion at any finitely generated maximal ideal is an actual local ring. -/
136 theorem completed_isLocalRing [I.IsMaximal] (fg : I.FG) : IsLocalRing (Completed R I) := by
137 have hm := AdicCompletion.isMaximal_map_of_le I I le_rfl fg
138 have hc := AdicCompletion.isAdicComplete_self I fg
139 have hl : IsLocalRing (AdicCompletion I R) :=
140 isLocalRing_of_isAdicComplete_maximal (I.map (algebraMap R (AdicCompletion I R)))
141 have : IsLocalRing (AlgebraicTarget I) := hl
142 exact (algebraicRingEquiv I fg).symm.isLocalRing
143
144 /-- The comparison carries the actual extended defining ideal to the algebraic one. -/
145 theorem algebraicRingEquiv_mapIdeal (fg : I.FG) :
146 (I.map (embed R I)).map (algebraicRingEquiv I fg).toRingHom =
147 (WithIdeal.i : Ideal (AlgebraicTarget I)) := by
148 rw [Ideal.map_map]
149 have he : (algebraicRingEquiv I fg).toRingHom.comp (embed R I) =
150 (rawEquiv _ _).symm.toRingHom.comp (algebraMap R (AdicCompletion I R)) := by
151 ext r
152 exact algebraicRingEquiv_embed I fg r
153 rw [he, ← Ideal.map_map]
154 change Ideal.map (RingHom.id _) (I.map (algebraMap R (AdicCompletion I R))) = _
155 rw [Ideal.map_id]
156 rfl
157
158 /-- Transport the actual ideal-adic topology through a bicontinuous ring equivalence. -/
159 theorem isAdic_of_equiv {S T : Type*} [CommRing S] [CommRing T]
160 [TopologicalSpace S] [TopologicalSpace T] [IsTopologicalRing S] [IsTopologicalRing T]
161 (L : Ideal S) (N : Ideal T) (e : S ≃+* T) (he : Continuous e) (hi : Continuous e.symm)
162 (hmap : L.map e.toRingHom = N) (hN : IsAdic N) : IsAdic L := by
163 have hpow (n : ℕ) : (N ^ n).comap e.toRingHom = L ^ n := by
164 rw [← hmap, ← Ideal.map_pow]
165 exact Ideal.comap_map_of_bijective e.toRingHom e.bijective
166 rw [isAdic_iff]
167 constructor
168 · intro n
169 have hEq : ((L ^ n : Ideal S) : Set S) = e ⁻¹' ((N ^ n : Ideal T) : Set T) := by
170 change ((L ^ n : Ideal S) : Set S) = ((N ^ n).comap e.toRingHom : Set S)
171 rw [hpow]
172 rw [hEq]
173 exact ((isAdic_iff.mp hN).1 n).preimage he
174 · intro U hU
175 have hpre : e.symm ⁻¹' U ∈ 𝓝 (0 : T) := by
176 have ht : Filter.Tendsto e.symm (𝓝 (0 : T)) (𝓝 (0 : S)) := by
177 simpa only [ContinuousAt, map_zero] using hi.continuousAt (x := (0 : T))
178 exact ht hU
179 obtain ⟨n, _, hn⟩ := hN.hasBasis_nhds_zero.mem_iff.mp hpre
180 refine ⟨n, ?_⟩
181 intro x hx
182 have hex : e x ∈ N ^ n := by
183 change x ∈ (N ^ n).comap e.toRingHom
184 rw [hpow]
185 exact hx
186 simpa only [Set.mem_preimage, RingEquiv.symm_apply_apply] using hn hex
187
188 /-- The uniform completion has the adic topology of the actual extended ideal. -/
189 theorem completed_isAdic (fg : I.FG) : IsAdic (I.map (embed R I)) :=
190 isAdic_of_equiv _ _ (algebraicRingEquiv I fg) (algebraicRingEquiv_continuous I fg)
191 (algebraicRingEquiv_symm_continuous I fg) (algebraicRingEquiv_mapIdeal I fg)
192 (carrier_isAdic _ _)
193
194 /-- The extended maximal ideal is the actual maximal ideal of the constructed completion. -/
195 theorem completed_maximalIdeal [I.IsMaximal] (fg : I.FG) :
196 haveI := completed_isLocalRing I fg
197 IsLocalRing.maximalIdeal (Completed R I) = I.map (embed R I) := by
198 have := completed_isLocalRing I fg
199 have ht : (WithIdeal.i : Ideal (AlgebraicTarget I)).IsMaximal :=
200 AdicCompletion.isMaximal_map_of_le I I le_rfl fg
201 have hm : (I.map (embed R I)).IsMaximal := by
202 have hh : (WithIdeal.i : Ideal (AlgebraicTarget I)).comap (algebraicRingEquiv I fg).toRingHom =
203 I.map (embed R I) := by
204 rw [← algebraicRingEquiv_mapIdeal I fg]
205 exact Ideal.comap_map_of_bijective (algebraicRingEquiv I fg).toRingHom (algebraicRingEquiv I fg).bijective
206 rw [← hh]
207 exact Ideal.comap_isMaximal_of_surjective _ (algebraicRingEquiv I fg).surjective
208 exact (IsLocalRing.eq_maximalIdeal hm).symm
209
210 end PaperXII.AdicModel
Original file and source record
This copy matches the recorded source file. Its publication here does not change the work’s review status.
SHA-256: 2dd1070d880040a9990f96b362047dade0e899d4b8152af6390c9c9fa72016e6
Back to Paper XII: Patching Support, Hecke Packets, and Conditional Automorphic Completion