@@ -61,12 +61,22 @@ lemma isActionTopology (R A : Type*) [SMul R A]
61
61
IsActionTopology.isActionTopology' (R := R) (A := A)
62
62
63
63
variable (R A : Type *) [SMul R A] [TopologicalSpace R] in
64
- example : @ContinuousSMul R A _ _ (actionTopology R A) :=
64
+ lemma ActionTopology.continuousSMul : @ContinuousSMul R A _ _ (actionTopology R A) :=
65
65
continuousSMul_sInf <| by aesop
66
66
67
+ lemma isActionTopology_continuousSMul (R A : Type *) [SMul R A]
68
+ [TopologicalSpace R] [τA : TopologicalSpace A] [h : IsActionTopology R A] :
69
+ ContinuousSMul R A where
70
+ continuous_smul := by
71
+ obtain ⟨h⟩ := h
72
+ let _τA2 := τA
73
+ subst h
74
+ exact (ActionTopology.continuousSMul R A).1
75
+
76
+
67
77
variable (R A : Type *) [SMul R A] [TopologicalSpace R]
68
78
[TopologicalSpace A] [IsActionTopology R A] in
69
- example : ContinuousSMul R A := by
79
+ lemma continuousSMul_of_isActionTopology : ContinuousSMul R A := by
70
80
rw [isActionTopology R A]
71
81
exact continuousSMul_sInf <| by aesop
72
82
@@ -75,10 +85,10 @@ end basics
75
85
namespace ActionTopology
76
86
section scratch
77
87
78
- example (L : Type *) [CompleteLattice L] (ι : Type *) (f : ι → L) (t : L) :
79
- t = ⨆ i, f i ↔ (∀ i, t ≤ f i) ∧ (∀ j, (∀ i, j ≤ f i) → j ≤ t) := by
80
- --rw [ iSup_eq ]
81
- sorry
88
+ -- example (L : Type*) [CompleteLattice L] (ι : Type*) (f : ι → L) (t : L) :
89
+ -- t = ⨆ i, f i ↔ (∀ i, t ≤ f i) ∧ (∀ j, (∀ i, j ≤ f i) → j ≤ t) := by
90
+ -- --rw [ iSup_eq ]
91
+ -- sorry
82
92
83
93
end scratch
84
94
@@ -113,57 +123,222 @@ lemma id' (R : Type*) [Monoid R] [τ : TopologicalSpace R] [ContinuousMul R] :
113
123
cases foo with
114
124
| mk continuous_mul => exact continuous_mul
115
125
126
+ lemma TopologicalSpace.induced_id (X : Type *) : TopologicalSpace.induced (id : X → X) = id := by
127
+ ext τ S
128
+ constructor
129
+ · rintro ⟨T,hT,rfl⟩
130
+ exact hT
131
+ · rintro hS
132
+ exact ⟨S, hS, rfl⟩
133
+
116
134
end one
135
+
117
136
section prod
118
137
119
- variable {R : Type } [TopologicalSpace R]
138
+ variable {R : Type } [τR : TopologicalSpace R]
120
139
121
140
-- let `M` and `N` have an action of `R`
122
- variable {M : Type *} [SMul R M] [aM : TopologicalSpace M] [IsActionTopology R M]
123
- variable {N : Type *} [SMul R N] [aN : TopologicalSpace N] [IsActionTopology R N]
124
-
125
- --example (L) [CompleteLattice L] (f : M → N) (g : N → L) : ⨆ m, g (f m) ≤ ⨆ n, g n := by
126
- -- exact iSup_comp_le g f
127
-
128
- --theorem map_smul_pointfree (f : M →[ R ] N) (r : R) : (fun m ↦ f (r • m)) = fun m ↦ r • f m :=
129
- -- by ext; apply map_smul
130
-
131
- lemma prod : IsActionTopology R (M × N) := by
141
+ -- We do not need Mul on R, but there seems to be no class saying just 1 • m = m
142
+ -- so we have to use MulAction
143
+ --variable [Monoid R] -- no ContinuousMul becasuse we never need
144
+ -- we do not need MulAction because we do not need mul_smul.
145
+ -- We only need one_smul
146
+ variable {M : Type } [Zero M] [SMul R M] [aM : TopologicalSpace M] [IsActionTopology R M]
147
+ variable {N : Type } [Zero N] [SMul R N] [aN : TopologicalSpace N] [IsActionTopology R N]
148
+
149
+ lemma prod [MulOneClass.{0 } R] : IsActionTopology.{0 } R (M × N) := by
132
150
constructor
133
- unfold instTopologicalSpaceProd actionTopology
151
+ -- unfold instTopologicalSpaceProd actionTopology
134
152
apply le_antisymm
135
- · apply le_sInf
136
- intro σMN hσ
137
- sorry
138
153
·
154
+ -- NOTE
155
+ -- this is the one that isn't done
156
+ rw [← continuous_id_iff_le]
157
+
158
+
159
+ -- idea: map R x M -> M is R x M -> R x M x N, τR x σ
160
+ -- R x M has topology τR x (m ↦ Prod.mk m (0 : N))^*σ
161
+ -- M x N -> M is pr₁⋆σ
162
+ -- is pr1_*sigma=Prod.mk' 0^* sigma
163
+ --rw [← continuous_id_iff_le]
164
+ have := isActionTopology R M
165
+ let τ1 : TopologicalSpace M := (actionTopology R (M × N)).coinduced (Prod.fst)
166
+ have foo : aM ≤ τ1 := by
167
+ rw [this]
168
+ apply sInf_le
169
+ unfold_let
170
+ constructor
171
+ rw [continuous_iff_coinduced_le]
172
+ --rw [ continuous_iff_le_induced ]
173
+ --rw [ instTopologicalSpaceProd ]
174
+ have := ActionTopology.continuousSMul R (M × N)
175
+ obtain ⟨h⟩ := this
176
+ rw [continuous_iff_coinduced_le] at h
177
+ have h2 := coinduced_mono (f := (Prod.fst : M × N → M)) h
178
+ refine le_trans ?_ h2
179
+ rw [@coinduced_compose]
180
+ --rw [ coinduced_le_iff_le_induced ]
181
+ rw [show ((Prod.fst : M × N → M) ∘ (fun p ↦ p.1 • p.2 : R × M × N → M × N)) =
182
+ (fun rm ↦ rm.1 • rm.2 ) ∘ (fun rmn ↦ (rmn.1 , rmn.2 .1 )) by
183
+ ext ⟨r, m, n⟩
184
+ rfl]
185
+ rw [← @coinduced_compose]
186
+ apply coinduced_mono
187
+ rw [← continuous_id_iff_le]
188
+ have this2 := @Continuous.prod_map R M R M τR ((TopologicalSpace.coinduced Prod.fst (actionTopology R (M × N)))) τR aM id id ?_ ?_
189
+ swap; fun_prop
190
+ swap; sorry -- action top ≤ coinduced Prod.fst (action)
191
+ convert this2
192
+ sorry -- action top on M now equals coinduced Prod.fst
193
+ sorry -- same
194
+ -- so we're going around in circles
139
195
sorry
196
+ -- let τ2 : TopologicalSpace M := (actionTopology R (M × N)).induced (fun m ↦ (m, 0))
197
+ -- have moo : τ1 = τ2 := by
198
+ -- unfold_let
199
+ -- apply le_antisymm
200
+ -- · rw [ coinduced_le_iff_le_induced ]
201
+ -- apply le_of_eq
202
+ -- -- rw [ induced_compose ]
203
+
204
+
205
+
206
+ -- sorry
207
+ -- ·
208
+ -- sorry
209
+ -- sorry
210
+ · sorry
211
+ -- --have foo : @Continuous (M × N) (M × N) _ _ _ := @Continuous.prod_map M N M N (σMN.coinduced Prod.fst) (σMN.coinduced Prod.snd) aM aN id id ?_ ?_-- Z * W -> X * Y
212
+ -- -- conjecture: pushforward of σMN is continuous
213
+ -- -- ⊢ instTopologicalSpaceProd ≤ σMN
214
+ -- --rw [ continuous_iff_coinduced_le ] at hσ
215
+ -- #exit
216
+ -- refine le_trans ?_ (continuous_iff_coinduced_le.1 hσ)
217
+ -- rw [← continuous_id_iff_le]
218
+ -- have foo : (id : M × N → M × N) = fun mn ↦ Prod.mk mn.1 mn.2 := by
219
+ -- ext <;> rfl
220
+ -- rw [ foo ]
221
+ -- --have h1 := @Continuous.prod_mk M N (M × N) _ _ (instTopologicalSpaceProd) Prod.fst Prod.snd (by continuity) (by continuity)
222
+ -- --have h2 := @Continuous.prod_mk M N (M × N) _ _ ((TopologicalSpace.coinduced (fun p ↦ p.1 • p.2) (instTopologicalSpaceProd : TopologicalSpace (R × M × N))) Prod.fst Prod.snd ?_ ?_
223
+ -- rw [ continuous_iff_le_induced ] at *
224
+ -- simp
225
+ -- have foo : TopologicalSpace.induced (fun (mn : M × N) ↦ mn) = id := by
226
+ -- have := TopologicalSpace.induced_id (M × N)
227
+ -- exact TopologicalSpace.induced_id (M × N)
228
+ -- --refine le_trans h1 ?_
229
+ -- rw [ foo ]
230
+ -- simp
231
+ -- rw [← continuous_id_iff_le]
232
+ -- --have bar : (id : M × N → M × N) = fun mn ↦ ((1, mn).snd) := by rfl
233
+ -- --rw [ bar ]
234
+ -- have mar : (id : M × N → M × N) = (fun rmn ↦ rmn.1 • rmn.2 : R × M × N → M × N) ∘
235
+ -- (fun mn ↦ (1, mn)) := by
236
+ -- ext mn
237
+ -- cases mn
238
+ -- simp only [id_eq, Function.comp_apply, one_smul]
239
+ -- cases mn
240
+ -- simp only [id_eq, Function.comp_apply, one_smul]
241
+ -- --have car : (id : M × N → M × N) = fun mn ↦ (((1, mn) : R × M × N).snd) := sorry
242
+ -- --(Prod.snd : R × M × N → M × N) ∘ (fun mn ↦ ((1, mn) : R × M × N)) := by
243
+
244
+ -- rw [ mar ]
245
+ -- rw [← continuous_iff_le_induced] at hσ
246
+ -- letI τfoo : TopologicalSpace (R × M × N) := instTopologicalSpaceProd (t₁ := (inferInstance : TopologicalSpace R)) (t₂ := σMN)
247
+ -- refine @Continuous.comp (M × N) (R × M × N) (M × N) instTopologicalSpaceProd τfoo (TopologicalSpace.coinduced (fun (rmn : R × M × N) ↦ rmn.1 • rmn.2) ?_) ?_ ?_ ?_ ?_
248
+ -- · --exact hσ
249
+ -- rw [ continuous_iff_coinduced_le ]
250
+ -- · simp only [ τfoo ]
251
+ -- -- rw [ continuous_iff_coinduced_le ]
252
+
253
+ -- --rw [ continuous_iff_le_induced ]
254
+ -- clear foo
255
+ -- clear foo
256
+ -- refine @Continuous.prod_mk R (M × N) (M × N) ?_ ?_ ?_ (fun _ ↦ 1) id ?_ ?_
257
+ -- --refine le_trans h1 ?_
258
+ -- refine @continuous_const (M × N) R ?_ ?_ 1
259
+ -- rw [ continuous_iff_coinduced_le ]
260
+
261
+
262
+ -- sorry
263
+ -- -- refine moo ?_ ?_
264
+ -- -- · skip
265
+ -- -- have := Continuous.snd
266
+ -- -- sorry
267
+ -- -- done
268
+ -- -- · -- looks hard to solve for τsoln
269
+ -- -- rw [ continuous_iff_coinduced_le ]
270
+ -- -- -- wtf where is τsoln?
271
+ -- -- sorry
272
+ -- -- done
273
+ -- · apply sInf_le
274
+ -- simp only [ Set.mem_setOf_eq ]
275
+ -- constructor
276
+ -- apply Continuous.prod_mk
277
+ -- · have := continuousSMul_of_isActionTopology R M
278
+ -- obtain ⟨this⟩ := this
279
+ -- convert Continuous.comp this ?_
280
+ -- rename_i rmn
281
+ -- swap
282
+ -- exact fun rmn ↦ (rmn.1, rmn.2.1)
283
+ -- rfl
284
+ -- fun_prop
285
+ -- · have := continuousSMul_of_isActionTopology R N
286
+ -- obtain ⟨this⟩ := this
287
+ -- convert Continuous.comp this ?_
288
+ -- rename_i rmn
289
+ -- swap
290
+ -- exact fun rmn ↦ (rmn.1, rmn.2.2)
291
+ -- rfl
292
+ -- fun_prop
140
293
141
294
end prod
142
- #exit
295
+
296
+ section function
297
+
298
+ variable {R : Type } [τR : TopologicalSpace R]
299
+ variable {M : Type } [SMul R M] [aM : TopologicalSpace M] [iM : IsActionTopology R M]
300
+ variable {N : Type } [SMul R N] [aN : TopologicalSpace N] [iN : IsActionTopology R N]
143
301
144
302
/-- Every `A`-linear map between two `A`-modules with the canonical topology is continuous. -/
145
303
lemma continuous_of_mulActionHom (φ : M →[R] N) : Continuous φ := by
146
304
-- Let's turn this question into an inequality question about coinduced topologies
147
305
-- Now let's use the fact that τM and τN are action topologies (hence also coinduced)
148
306
rw [isActionTopology R M, isActionTopology R N]
149
307
unfold actionTopology
150
- -- rw [ continuous_iff_le_induced ]
151
- -- sorry
152
-
153
- -- coinduced attempt, got tangled, pre paper approach
154
- rw [continuous_iff_coinduced_le]
155
- rw [le_sInf_iff]
156
- intro τN hτN
157
- rw [coinduced_le_iff_le_induced]
158
-
159
-
160
- rw [sInf_le_iff]
161
- intro τM hτM
162
- change ∀ _, _ at hτM
163
- apply hτM
164
- simp
165
- rw [@DFunLike.coe_eq_coe_fn]
166
- simp
308
+ rw [continuous_iff_le_induced]
309
+ nth_rw 2 [sInf_eq_iInf]
310
+ rw [induced_iInf] --induced_sInf missing?
311
+ apply le_iInf
312
+ simp only [Set.mem_setOf_eq, induced_iInf, le_iInf_iff]
313
+ intro σN hσ
314
+ apply sInf_le
315
+ refine @ContinuousSMul.mk R M _ τR (TopologicalSpace.induced (⇑φ) σN) ?_
316
+ rw [continuous_iff_le_induced]
317
+ rw [induced_compose]
318
+ rw [← continuous_iff_le_induced]
319
+ rw [show φ ∘ (fun (p : R × M) ↦ p.1 • p.2 ) = fun rm ↦ rm.1 • φ (rm.2 ) by
320
+ ext rm
321
+ cases rm
322
+ simp]
323
+ obtain ⟨hσ'⟩ := hσ
324
+ rw [continuous_iff_le_induced] at *
325
+ have := induced_mono (g := fun (rm : R × M) ↦ (rm.1 , φ (rm.2 ))) hσ'
326
+ rw [induced_compose] at this
327
+ refine le_trans ?_ this
328
+ rw [← continuous_iff_le_induced]
329
+ refine @Continuous.prod_map R N R M τR σN τR (TopologicalSpace.induced (φ : M → N) σN) id φ ?_ ?_
330
+ · fun_prop
331
+ · fun_prop
332
+
333
+ #check coinduced_iSup
334
+ #check induced_iInf
335
+ #exit
336
+ /-
337
+ coinduced_iSup.{w, u_1, u_2} {α : Type u_1} {β : Type u_2} {f : α → β} {ι : Sort w} {t : ι → TopologicalSpace α} :
338
+ TopologicalSpace.coinduced f (⨆ i, t i) = ⨆ i, TopologicalSpace.coinduced f (t i)
339
+ -/
340
+ lemma induced_. {w, u_1, u_2} {α : Type u_1} {β : Type u_2} {f : α → β} {ι : Sort w} {t : ι → TopologicalSpace α} :
341
+ TopologicalSpace.coinduced f (⨆ i, t i) = ⨆ i, TopologicalSpace.coinduced f (t i)
167
342
168
343
-- -- original proof, now broken
169
344
-- rw [ coinduced_le_iff_le_induced ]
@@ -181,6 +356,8 @@ lemma continuous_of_mulActionHom (φ : M →[R] N) : Continuous φ := by
181
356
-- -- over a big set
182
357
-- apply iSup_comp_le (_ : N → TopologicalSpace N)
183
358
359
+ end function
360
+
184
361
#exit
185
362
186
363
section
0 commit comments