Paper XII · Lean source

CompletedGlobalBaseChange.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 (2)

PaperXII/CompletedGlobalBaseChange.lean263 lines

Original source pathcore/publication/source/lean_guide/formal_release/lean/PaperXII/CompletedGlobalBaseChange.lean
Skip declarations and read code

Skip source text

1 import PaperXII.AdicQuotientTopology
2 import PaperXII.LocalQuotients
3 import Mathlib.RingTheory.TensorProduct.Quotient
4 
5 /-!
6 # Actual completed base change along a quotient
7 
8 The carrier is the completion of `B ⊗[A] (A/J)`, with the sum of the two mapped
9 adic ideals. It is not defined to be a quotient of `B`. The actual quotient
10 comparison determines its points and the universal factorization criterion.
11 -/
12 noncomputable section
13 open Filter Topology UniformSpace
14 open scoped TensorProduct Uniformity
15 set_option autoImplicit false
16 namespace PaperXII.CompletedBaseChange
17 
18 variable {A B : Type*} [CommRing A] [CommRing B] [Algebra A B]
19 variable (mA : Ideal A) (mB : Ideal B) (J : Ideal A)
20 
21 abbrev Raw := B ⊗[A] (A ⧸ J)
22 
23 /-- The literal sum defining the completed tensor topology. -/
24 def tensorIdeal : Ideal (Raw (B := B) J) :=
25   mB.map (algebraMap B (Raw (B := B) J)) ⊔
26     ((mA.map (Ideal.Quotient.mk J)).map
27       (Algebra.TensorProduct.includeRight (A := B) (R := A)).toRingHom)
28 
29 abbrev Completed := AdicModel.Completed (Raw (B := B) J) (tensorIdeal mA mB J)
30 
31 /-- The canonical global ring map into the actual completed base change. -/
32 def globalMap : B →+* Completed mA mB J :=
33   (AdicModel.embed _ (tensorIdeal mA mB J)).comp (algebraMap B (Raw (B := B) J))
34 
35 /-- The ordinary tensor quotient equivalence, only an intermediate step. -/
36 def rawEquiv : Raw (B := B) J ≃+* B ⧸ J.map (algebraMap A B) :=
37   (Algebra.TensorProduct.quotIdealMapEquivTensorQuot B J).symm.toRingEquiv
38 
39 @[simp] theorem rawEquiv_left (b : B) :
40     rawEquiv (B := B) J (algebraMap B (Raw (B := B) J) b) =
41       Ideal.Quotient.mk (J.map (algebraMap A B)) b := by
42   change (Algebra.TensorProduct.quotIdealMapEquivTensorQuot B J).symm (b ⊗ₜ[A] 1) = _
43   simpa using Algebra.TensorProduct.quotIdealMapEquivTensorQuot_symm_tmul B J b (1 : A)
44 
45 @[simp] theorem rawEquiv_right (a : A) :
46     rawEquiv (B := B) J (Algebra.TensorProduct.includeRight (A := B) (R := A)
47       (Ideal.Quotient.mk J a)) =
48       Ideal.Quotient.mk (J.map (algebraMap A B)) (algebraMap A B a) := by
49   change (Algebra.TensorProduct.quotIdealMapEquivTensorQuot B J).symm
50     (1 ⊗ₜ[A] (Ideal.Quotient.mk J a)) = _
51   simp [Algebra.smul_def]
52 
53 /-- The sum topology is proved to correspond to the quotient topology. -/
54 theorem rawEquiv_tensorIdeal (h : mA.map (algebraMap A B) ≤ mB) :
55     (tensorIdeal mA mB J).map (rawEquiv J).toRingHom =
56       mB.map (Ideal.Quotient.mk (J.map (algebraMap A B))) := by
57   have hl : (rawEquiv (B := B) J).toRingHom.comp (algebraMap B (Raw (B := B) J)) =
58       Ideal.Quotient.mk (J.map (algebraMap A B)) := by ext b; exact rawEquiv_left J b
59   have hr : ((rawEquiv (B := B) J).toRingHom.comp
60       (Algebra.TensorProduct.includeRight (A := B) (R := A)).toRingHom).comp
61       (Ideal.Quotient.mk J) =
62       (Ideal.Quotient.mk (J.map (algebraMap A B))).comp (algebraMap A B) := by
63     ext a; exact rawEquiv_right J a
64   simp only [tensorIdeal, Ideal.map_sup, Ideal.map_map]
65   rw [hl, ← RingHom.comp_assoc, hr, ← Ideal.map_map, sup_eq_left]
66   exact Ideal.map_mono h
67 
68 /-- The completed tensor ring compared with the actual completion of the quotient. -/
69 def completedEquiv (h : mA.map (algebraMap A B) ≤ mB) :
70     Completed mA mB J ≃+*
71       AdicModel.Completed (B ⧸ J.map (algebraMap A B))
72         (mB.map (Ideal.Quotient.mk (J.map (algebraMap A B)))) :=
73   AdicModel.completedEquiv _ _ (rawEquiv J) (rawEquiv_tensorIdeal mA mB J h)
74 
75 theorem completedEquiv_continuous (h : mA.map (algebraMap A B) ≤ mB) :
76     Continuous (completedEquiv mA mB J h) :=
77   AdicModel.completedEquiv_continuous _ _ _ (rawEquiv_tensorIdeal mA mB J h)
78 
79 theorem completedEquiv_symm_continuous (h : mA.map (algebraMap A B) ≤ mB) :
80     Continuous (completedEquiv mA mB J h).symm :=
81   AdicModel.completedEquiv_symm_continuous _ _ _ (rawEquiv_tensorIdeal mA mB J h)
82 
83 @[simp] theorem completedEquiv_globalMap (h : mA.map (algebraMap A B) ≤ mB) (b : B) :
84     completedEquiv mA mB J h (globalMap mA mB J b) =
85       AdicModel.embed _ (mB.map (Ideal.Quotient.mk (J.map (algebraMap A B))))
86         (Ideal.Quotient.mk (J.map (algebraMap A B)) b) := by
87   change AdicModel.completedEquiv _ _ _ (rawEquiv_tensorIdeal mA mB J h)
88     (AdicModel.embed _ _ _) = _
89   rw [AdicModel.completedEquiv_embed]
90   exact congrArg (AdicModel.embed _ _) (rawEquiv_left J b)
91 
92 /-- The canonical map from the global ring has dense image. -/
93 theorem globalMap_dense : DenseRange (globalMap mA mB J) := by
94   have hs : Function.Surjective (algebraMap B (Raw (B := B) J)) := by
95     intro t
96     obtain ⟨b, hb⟩ := Ideal.Quotient.mk_surjective (rawEquiv (B := B) J t)
97     refine ⟨b, (rawEquiv J).injective ?_⟩
98     exact (rawEquiv_left J b).trans hb
99   have hr : Set.range (globalMap mA mB J) =
100       Set.range ((↑) : AdicModel.Carrier (Raw (B := B) J) (tensorIdeal mA mB J) →
101         Completed mA mB J) := by
102     ext x
103     constructor
104     · rintro ⟨b, rfl⟩
105       exact ⟨(AdicModel.rawEquiv _ _).symm (algebraMap B (Raw (B := B) J) b), rfl⟩
106     · rintro ⟨t, rfl⟩
107       obtain ⟨b, hb⟩ := hs (AdicModel.rawEquiv _ _ t)
108       refine ⟨b, ?_⟩
109       change Completion.coeRingHom (α := AdicModel.Carrier (Raw (B := B) J) (tensorIdeal mA mB J))
110         ((AdicModel.rawEquiv _ _).symm (algebraMap B (Raw (B := B) J) b)) =
111           Completion.coeRingHom t
112       rw [hb, RingEquiv.symm_apply_apply]
113   change Dense (Set.range (globalMap mA mB J))
114   rw [hr]
115   exact Completion.denseRange_coe
116 
117 /-- The canonical completed global map kills the original extended ideal. -/
118 theorem globalMap_kills : J.map (algebraMap A B) ≤ RingHom.ker (globalMap mA mB J) := by
119   intro b hb
120   have hzero : algebraMap B (Raw (B := B) J) b = 0 := by
121     apply (rawEquiv J).injective
122     rw [rawEquiv_left, map_zero]
123     exact Ideal.Quotient.eq_zero_iff_mem.mpr hb
124   change AdicModel.embed _ _ (algebraMap B (Raw (B := B) J) b) = 0
125   rw [hzero, map_zero]
126 
127 /-- Continuity uses the literal adic tensor topology, not a discrete replacement. -/
128 theorem globalMap_continuous :
129     Continuous ((globalMap mA mB J).comp (AdicModel.rawEquiv B mB).toRingHom) := by
130   exact Completion.continuous_coeRingHom.comp (AdicModel.map_continuous mB
131     (tensorIdeal mA mB J) (algebraMap B (Raw (B := B) J)) le_sup_left)
132 
133 variable {P : Type*} [CommRing P] [UniformSpace P] [IsUniformAddGroup P]
134   [IsTopologicalRing P] [CompleteSpace P] [T2Space P]
135 
136 /-- Point on the quotient carrier obtained from a continuous global point. -/
137 def quotientPoint (p : B →+* P) (_hp : Continuous (p.comp (AdicModel.rawEquiv B mB).toRingHom))
138     (hJ : J.map (algebraMap A B) ≤ RingHom.ker p) :
139     AdicModel.Carrier (B ⧸ J.map (algebraMap A B))
140       (mB.map (Ideal.Quotient.mk (J.map (algebraMap A B)))) →+* P :=
141   (Ideal.Quotient.lift (AdicModel.carrierIdeal mB (J.map (algebraMap A B)))
142     (p.comp (AdicModel.rawEquiv B mB).toRingHom)
143     (by
144       intro b hb
145       change p (AdicModel.rawEquiv B mB b) = 0
146       exact hJ ((AdicModel.carrierIdeal_mem _ _ _).mp hb))).comp
147     (AdicModel.quotientCarrierEquiv mB (J.map (algebraMap A B))).symm.toRingHom
148 
149 omit [IsUniformAddGroup P] [IsTopologicalRing P] [CompleteSpace P] [T2Space P] in
150 theorem quotientPoint_continuous (p : B →+* P)
151     (hp : Continuous (p.comp (AdicModel.rawEquiv B mB).toRingHom))
152     (hJ : J.map (algebraMap A B) ≤ RingHom.ker p) : Continuous (quotientPoint mB J p hp hJ) := by
153   apply Continuous.comp _ (AdicModel.quotientCarrierEquiv_symm_continuous _ _)
154   apply (QuotientRing.isOpenQuotientMap_mk _).isQuotientMap.continuous_iff.mpr
155   exact hp
156 
157 omit [IsUniformAddGroup P] [IsTopologicalRing P] [CompleteSpace P] [T2Space P] in
158 @[simp] theorem quotientPoint_mk (p : B →+* P)
159     (hp : Continuous (p.comp (AdicModel.rawEquiv B mB).toRingHom))
160     (hJ : J.map (algebraMap A B) ≤ RingHom.ker p) (b : B) :
161     quotientPoint mB J p hp hJ ((AdicModel.rawEquiv _ _).symm
162       (Ideal.Quotient.mk (J.map (algebraMap A B)) b)) = p b := by
163   unfold quotientPoint
164   rw [RingHom.comp_apply]
165   have hb := AdicModel.quotientCarrierEquiv_mk mB (J.map (algebraMap A B)) b
166   rw [← hb]
167   simp only [RingEquiv.toRingHom_eq_coe, RingEquiv.coe_toRingHom, RingEquiv.symm_apply_apply]
168   rfl
169 
170 /-- Extend the quotient point and pull it back along the proved completed comparison. -/
171 def factor (h : mA.map (algebraMap A B) ≤ mB) (p : B →+* P)
172     (hp : Continuous (p.comp (AdicModel.rawEquiv B mB).toRingHom))
173     (hJ : J.map (algebraMap A B) ≤ RingHom.ker p) : Completed mA mB J →+* P :=
174   (Completion.extensionHom (quotientPoint mB J p hp hJ)
175     (quotientPoint_continuous mB J p hp hJ)).comp (completedEquiv mA mB J h).toRingHom
176 
177 theorem factor_continuous (h : mA.map (algebraMap A B) ≤ mB) (p : B →+* P)
178     (hp : Continuous (p.comp (AdicModel.rawEquiv B mB).toRingHom))
179     (hJ : J.map (algebraMap A B) ≤ RingHom.ker p) : Continuous (factor mA mB J h p hp hJ) :=
180   Completion.continuous_extension.comp (completedEquiv_continuous mA mB J h)
181 
182 @[simp] theorem factor_globalMap (h : mA.map (algebraMap A B) ≤ mB) (p : B →+* P)
183     (hp : Continuous (p.comp (AdicModel.rawEquiv B mB).toRingHom))
184     (hJ : J.map (algebraMap A B) ≤ RingHom.ker p) (b : B) :
185     factor mA mB J h p hp hJ (globalMap mA mB J b) = p b := by
186   change Completion.extensionHom (quotientPoint mB J p hp hJ)
187     (quotientPoint_continuous mB J p hp hJ)
188       (completedEquiv mA mB J h (globalMap mA mB J b)) = p b
189   rw [completedEquiv_globalMap]
190   exact (Completion.extensionHom_coe (quotientPoint mB J p hp hJ)
191     (quotientPoint_continuous mB J p hp hJ)
192       ((AdicModel.rawEquiv _ _).symm (Ideal.Quotient.mk (J.map (algebraMap A B)) b))).trans
193         (quotientPoint_mk mB J p hp hJ b)
194 
195 omit [IsUniformAddGroup P] [IsTopologicalRing P] [CompleteSpace P] in
196 /-- No two continuous extensions of the same global point can differ. -/
197 theorem factor_unique (g₁ g₂ : Completed mA mB J →+* P) (hg₁ : Continuous g₁) (hg₂ : Continuous g₂)
198     (heq : g₁.comp (globalMap mA mB J) = g₂.comp (globalMap mA mB J)) : g₁ = g₂ := by
199   apply DFunLike.coe_injective
200   exact (globalMap_dense mA mB J).equalizer hg₁ hg₂ (funext fun b ↦ DFunLike.congr_fun heq b)
201 
202 /-- The exact existence-and-uniqueness criterion for points of completed base change. -/
203 theorem exists_unique_factor_iff (h : mA.map (algebraMap A B) ≤ mB) (p : B →+* P)
204     (hp : Continuous (p.comp (AdicModel.rawEquiv B mB).toRingHom)) :
205     (∃! g : Completed mA mB J →+* P,
206       Continuous g ∧ g.comp (globalMap mA mB J) = p) ↔
207         J.map (algebraMap A B) ≤ RingHom.ker p := by
208   constructor
209   · rintro ⟨g, ⟨_, hg⟩, _⟩ b hb
210     change p b = 0
211     rw [← hg]
212     change g (globalMap mA mB J b) = 0
213     rw [show globalMap mA mB J b = 0 from globalMap_kills mA mB J hb, map_zero]
214   · intro hJ
215     refine ⟨factor mA mB J h p hp hJ, ⟨factor_continuous mA mB J h p hp hJ, ?_⟩, ?_⟩
216     · ext b; exact factor_globalMap mA mB J h p hp hJ b
217     · intro g hg
218       apply factor_unique mA mB J g _ hg.1 (factor_continuous mA mB J h p hp hJ)
219       ext b
220       exact (DFunLike.congr_fun hg.2 b).trans (factor_globalMap mA mB J h p hp hJ b).symm
221 
222 /-- The same criterion expressed at the original local algebra. -/
223 theorem exists_unique_factor_iff_restriction (h : mA.map (algebraMap A B) ≤ mB)
224     (p : B →+* P) (hp : Continuous (p.comp (AdicModel.rawEquiv B mB).toRingHom)) :
225     (∃! g : Completed mA mB J →+* P,
226       Continuous g ∧ g.comp (globalMap mA mB J) = p) ↔
227         J ≤ RingHom.ker (p.comp (algebraMap A B)) := by
228   rw [exists_unique_factor_iff mA mB J h p hp, Ideal.map_le_iff_le_comap]
229   rfl
230 
231 /-- Claim 3.3: all local conditions, for the actual completed global tensor. -/
232 theorem global_base_change {V : Type*} (S : V → Type*) [∀ v, CommRing (S v)]
233     [TopologicalSpace A] [IsTopologicalRing A] (hA : IsAdic mA)
234     (inc : ∀ v, S v →+* A) (I : ∀ v, Ideal (S v))
235     (h : mA.map (algebraMap A B) ≤ mB) (p : B →+* P)
236     (hp : Continuous (p.comp (AdicModel.rawEquiv B mB).toRingHom)) :
237     (∃! g : Completed mA mB (LocalQuotients.closedConditions S inc I) →+* P,
238       Continuous g ∧ g.comp (globalMap mA mB (LocalQuotients.closedConditions S inc I)) = p) ↔
239         ∀ v, I v ≤ RingHom.ker ((p.comp (algebraMap A B)).comp (inc v)) := by
240   rw [exists_unique_factor_iff_restriction mA mB _ h p hp]
241   apply LocalQuotients.closed_conditions_iff S inc I
242   have hc : Continuous (((AdicModel.rawEquiv B mB).symm.toRingHom).comp (algebraMap A B)) := by
243     apply AdicModel.continuous_of_map_le hA (AdicModel.carrier_isAdic B mB)
244     exact h
245   exact hp.comp hc
246 
247 /-- Natural behavior of the unique completed extension under continuous target maps. -/
248 theorem factor_natural {Q : Type*} [CommRing Q] [UniformSpace Q] [IsUniformAddGroup Q]
249     [IsTopologicalRing Q] [CompleteSpace Q] [T2Space Q]
250     (h : mA.map (algebraMap A B) ≤ mB) (p : B →+* P)
251     (hp : Continuous (p.comp (AdicModel.rawEquiv B mB).toRingHom))
252     (hJ : J.map (algebraMap A B) ≤ RingHom.ker p)
253     (u : P →+* Q) (hu : Continuous u) :
254     u.comp (factor mA mB J h p hp hJ) =
255       factor mA mB J h (u.comp p) (hu.comp hp)
256         (fun b hb ↦ by change u (p b) = 0; rw [hJ hb, map_zero]) := by
257   apply factor_unique mA mB J _ _ (hu.comp (factor_continuous mA mB J h p hp hJ))
258     (factor_continuous mA mB J h (u.comp p) (hu.comp hp) _)
259   ext b
260   change u (factor mA mB J h p hp hJ (globalMap mA mB J b)) = _
261   simp only [factor_globalMap, RingHom.comp_apply]
262 
263 end PaperXII.CompletedBaseChange

Back to source controls

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: 11fc86e509581906275b565e8b8c69810a875379ae6d51814c159224f098e031

Original source on GitHub

Back to Paper XII: Patching Support, Hecke Packets, and Conditional Automorphic Completion