Paper XII · Lean source

CompletedGlobalQuotient.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/CompletedGlobalQuotient.lean173 lines

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

Skip source text

1 import PaperXII.CompletedBaseChangeTransport
2 import Mathlib.RingTheory.LocalRing.RingHom.Basic
3 
4 /-! For an actually complete global ring the completed base change is its
5 closed ideal quotient. This additionally proves surjectivity and preservation
6 of locality for the point factorizations. -/
7 noncomputable section
8 open Filter Topology UniformSpace
9 open scoped Uniformity
10 set_option autoImplicit false
11 namespace PaperXII.CompletedBaseChange
12 
13 variable {A B : Type*} [CommRing A] [CommRing B] [Algebra A B]
14 variable [UniformSpace B] [IsUniformAddGroup B] [IsTopologicalRing B]
15   [CompleteSpace B]
16 variable (mA : Ideal A) (mB : Ideal B) (J : Ideal A) (hB : IsAdic mB)
17   (h : mA.map (algebraMap A B) ≤ mB)
18 
19 abbrev globalClosedIdeal := (J.map (algebraMap A B)).closure
20 
21 instance globalClosedIdeal_closed : IsClosed (globalClosedIdeal (B := B) J : Set B) := isClosed_closure
22 attribute [local instance] CompletionQuotient.quotientUniformSpace
23 
24 include hB in
25 theorem globalQuotient_complete : CompleteSpace (B ⧸ globalClosedIdeal (B := B) J) := by
26   have : Filter.IsCountablyGenerated (𝓤 B) :=
27     hB.hasBasis_nhds_zero.uniformity_of_nhds_zero.isCountablyGenerated
28   exact QuotientAddGroup.completeSpace_right B (globalClosedIdeal (B := B) J).toAddSubgroup
29 
30 omit [CompleteSpace B] [IsUniformAddGroup B] in
31 include hB in
32 theorem globalMap_continuous_actual : Continuous (globalMap mA mB J) := by
33   have ht : Continuous ((AdicModel.rawEquiv B mB).symm : B → AdicModel.Carrier B mB) := by
34     apply AdicModel.continuous_of_map_le hB (AdicModel.carrier_isAdic B mB)
35       (AdicModel.rawEquiv B mB).symm.toRingHom
36     change mB.map (RingHom.id B) ≤ mB
37     simp
38   exact (globalMap_continuous mA mB J).comp ht
39 
40 omit [CompleteSpace B] [IsUniformAddGroup B] in
41 include hB in
42 theorem globalClosedIdeal_le_ker : globalClosedIdeal (B := B) J ≤ RingHom.ker (globalMap mA mB J) := by
43   exact (LocalQuotients.closure_le_kernel_iff _ _ (globalMap_continuous_actual mA mB J hB)).mpr
44     (globalMap_kills mA mB J)
45 
46 /-- Map from the actual closed global quotient into the completed tensor. -/
47 def fromGlobalQuotient : (B ⧸ globalClosedIdeal (B := B) J) →+* Completed mA mB J :=
48   Ideal.Quotient.lift _ (globalMap mA mB J) (globalClosedIdeal_le_ker mA mB J hB)
49 
50 omit [CompleteSpace B] [IsUniformAddGroup B] in
51 theorem fromGlobalQuotient_continuous : Continuous (fromGlobalQuotient mA mB J hB) :=
52   LocalQuotients.continuous_lift _ _ (globalMap_continuous_actual mA mB J hB) _
53 
54 omit [CompleteSpace B] [IsUniformAddGroup B] in
55 @[simp] theorem fromGlobalQuotient_mk (b : B) :
56     fromGlobalQuotient mA mB J hB (Ideal.Quotient.mk _ b) = globalMap mA mB J b := rfl
57 
58 omit [CompleteSpace B] [IsUniformAddGroup B] in
59 include hB in
60 theorem globalQuotient_point_continuous :
61     Continuous ((Ideal.Quotient.mk (globalClosedIdeal (B := B) J)).comp
62       (AdicModel.rawEquiv B mB).toRingHom) := by
63   have hr : Continuous ((AdicModel.rawEquiv B mB).toRingHom :
64       AdicModel.Carrier B mB →+* B) := by
65     apply AdicModel.continuous_of_map_le (AdicModel.carrier_isAdic B mB) hB
66       (AdicModel.rawEquiv B mB).toRingHom
67     change mB.map (RingHom.id B) ≤ mB
68     simp
69   have hq : Continuous (Ideal.Quotient.mk (globalClosedIdeal (B := B) J) :
70       B → B ⧸ globalClosedIdeal (B := B) J) :=
71     (QuotientRing.isOpenQuotientMap_mk (globalClosedIdeal (B := B) J)).continuous
72   exact hq.comp hr
73 
74 omit [CompleteSpace B] [IsUniformAddGroup B] in
75 theorem globalQuotient_point_kills : J.map (algebraMap A B) ≤
76     RingHom.ker (Ideal.Quotient.mk (globalClosedIdeal (B := B) J)) :=
77   fun _ hb ↦ Ideal.Quotient.eq_zero_iff_mem.mpr (subset_closure hb)
78 
79 /-- Construct the reverse map using actual completeness of the closed quotient. -/
80 def toGlobalQuotient : Completed mA mB J →+* (B ⧸ globalClosedIdeal (B := B) J) := by
81   letI := globalQuotient_complete mB J hB
82   exact factor mA mB J h (Ideal.Quotient.mk (globalClosedIdeal (B := B) J))
83     (globalQuotient_point_continuous mB J hB) (globalQuotient_point_kills J)
84 
85 theorem toGlobalQuotient_continuous : Continuous (toGlobalQuotient mA mB J hB h) := by
86   have := globalQuotient_complete mB J hB
87   exact factor_continuous mA mB J h (Ideal.Quotient.mk (globalClosedIdeal (B := B) J))
88     (globalQuotient_point_continuous mB J hB) (globalQuotient_point_kills J)
89 
90 @[simp] theorem toGlobalQuotient_globalMap (b : B) :
91     toGlobalQuotient mA mB J hB h (globalMap mA mB J b) = Ideal.Quotient.mk _ b := by
92   have := globalQuotient_complete mB J hB
93   exact factor_globalMap mA mB J h (Ideal.Quotient.mk (globalClosedIdeal (B := B) J))
94     (globalQuotient_point_continuous mB J hB) (globalQuotient_point_kills J) b
95 
96 theorem toGlobalQuotient_from (x : B ⧸ globalClosedIdeal (B := B) J) :
97     toGlobalQuotient mA mB J hB h (fromGlobalQuotient mA mB J hB x) = x := by
98   obtain ⟨b, rfl⟩ := Ideal.Quotient.mk_surjective x
99   rw [fromGlobalQuotient_mk, toGlobalQuotient_globalMap]
100 
101 theorem fromGlobalQuotient_to (x : Completed mA mB J) :
102     fromGlobalQuotient mA mB J hB (toGlobalQuotient mA mB J hB h x) = x := by
103   have he : (fromGlobalQuotient mA mB J hB).comp (toGlobalQuotient mA mB J hB h) =
104       RingHom.id _ := by
105     apply factor_unique mA mB J _ _
106       ((fromGlobalQuotient_continuous mA mB J hB).comp (toGlobalQuotient_continuous mA mB J hB h))
107       continuous_id
108     ext b
109     change fromGlobalQuotient mA mB J hB
110       (toGlobalQuotient mA mB J hB h (globalMap mA mB J b)) = globalMap mA mB J b
111     rw [toGlobalQuotient_globalMap, fromGlobalQuotient_mk]
112   exact DFunLike.congr_fun he x
113 
114 /-- Actual topological global quotient description; no completed object is postulated. -/
115 def globalQuotientEquiv : Completed mA mB J ≃+* (B ⧸ globalClosedIdeal (B := B) J) :=
116   RingEquiv.ofRingHom (toGlobalQuotient mA mB J hB h) (fromGlobalQuotient mA mB J hB)
117     (RingHom.ext (toGlobalQuotient_from mA mB J hB h))
118     (RingHom.ext (fromGlobalQuotient_to mA mB J hB h))
119 
120 theorem globalQuotientEquiv_continuous :
121     Continuous (globalQuotientEquiv mA mB J hB h) ∧
122       Continuous (globalQuotientEquiv mA mB J hB h).symm :=
123   ⟨toGlobalQuotient_continuous mA mB J hB h, fromGlobalQuotient_continuous mA mB J hB⟩
124 
125 include hB h in
126 /-- Actual completeness of the global ring makes its canonical base-change map surjective. -/
127 theorem globalMap_surjective : Function.Surjective (globalMap mA mB J) := by
128   intro x
129   obtain ⟨b, hb⟩ := Ideal.Quotient.mk_surjective (globalQuotientEquiv mA mB J hB h x)
130   refine ⟨b, (globalQuotientEquiv mA mB J hB h).injective ?_⟩
131   exact (toGlobalQuotient_globalMap mA mB J hB h b).trans hb
132 
133 include hB h in
134 /-- Nonzero actual global base changes retain locality. -/
135 theorem completed_global_isLocalRing [IsLocalRing B] [Nontrivial (Completed mA mB J)] :
136     IsLocalRing (Completed mA mB J) :=
137   IsLocalRing.of_surjective' (globalMap mA mB J) (globalMap_surjective mA mB J hB h)
138 
139 include hB h in
140 /-- A local global point has a local factor through its actual completed base change. -/
141 theorem completed_factor_isLocal {P : Type*} [CommRing P] (p : B →+* P) [IsLocalHom p]
142     (g : Completed mA mB J →+* P) (hg : g.comp (globalMap mA mB J) = p) : IsLocalHom g := by
143   constructor
144   intro x hx
145   obtain ⟨b, rfl⟩ := globalMap_surjective mA mB J hB h x
146   have hp : IsUnit (p b) := by
147     rw [← hg]
148     exact hx
149   exact (isUnit_of_map_unit p b hp).map (globalMap mA mB J)
150 
151 variable {C : Type*} [CommRing C] [Algebra A C] (e : (A ⧸ J) ≃ₐ[A] C)
152 
153 include hB h in
154 /-- The separately constructed condition ring gives the same surjective global map. -/
155 theorem transportedGlobalMap_surjective :
156     Function.Surjective (transportedGlobalMap mA mB J e) := by
157   intro x
158   obtain ⟨y, rfl⟩ := (completedTransport mA mB J e).surjective x
159   obtain ⟨b, rfl⟩ := globalMap_surjective mA mB J hB h y
160   exact ⟨b, (completedTransport_globalMap mA mB J e b).symm⟩
161 
162 include hB h in
163 /-- Every factor of a local point through the actual transported base change is local. -/
164 theorem transported_factor_isLocal {P : Type*} [CommRing P] (p : B →+* P) [IsLocalHom p]
165     (g : Transported mA mB J e →+* P)
166     (hg : g.comp (transportedGlobalMap mA mB J e) = p) : IsLocalHom g := by
167   constructor
168   intro x hx
169   obtain ⟨b, rfl⟩ := transportedGlobalMap_surjective mA mB J hB h e x
170   have hp : IsUnit (p b) := by rw [← hg]; exact hx
171   exact (isUnit_of_map_unit p b hp).map (transportedGlobalMap mA mB J e)
172 
173 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: 71eede618e5c6aa481d5ec6b6779f6a06be6592c68e9fc01dad48183a007774f

Original source on GitHub

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