Skip to content

Commit 0335ae2

Browse files
committed
linear => continuous done, still stuck on prod
1 parent baad533 commit 0335ae2

File tree

1 file changed

+216
-39
lines changed

1 file changed

+216
-39
lines changed

FLT/HIMExperiments/ContinuousSMul_topology.lean

+216-39
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,22 @@ lemma isActionTopology (R A : Type*) [SMul R A]
6161
IsActionTopology.isActionTopology' (R := R) (A := A)
6262

6363
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) :=
6565
continuousSMul_sInf <| by aesop
6666

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+
6777
variable (R A : Type*) [SMul R A] [TopologicalSpace R]
6878
[TopologicalSpace A] [IsActionTopology R A] in
69-
example : ContinuousSMul R A := by
79+
lemma continuousSMul_of_isActionTopology : ContinuousSMul R A := by
7080
rw [isActionTopology R A]
7181
exact continuousSMul_sInf <| by aesop
7282

@@ -75,10 +85,10 @@ end basics
7585
namespace ActionTopology
7686
section scratch
7787

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
8292

8393
end scratch
8494

@@ -113,57 +123,222 @@ lemma id' (R : Type*) [Monoid R] [τ : TopologicalSpace R] [ContinuousMul R] :
113123
cases foo with
114124
| mk continuous_mul => exact continuous_mul
115125

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+
116134
end one
135+
117136
section prod
118137

119-
variable {R : Type} [TopologicalSpace R]
138+
variable {R : Type} [τR : TopologicalSpace R]
120139

121140
-- 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
132150
constructor
133-
unfold instTopologicalSpaceProd actionTopology
151+
--unfold instTopologicalSpaceProd actionTopology
134152
apply le_antisymm
135-
· apply le_sInf
136-
intro σMN hσ
137-
sorry
138153
·
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
139195
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
140293

141294
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]
143301

144302
/-- Every `A`-linear map between two `A`-modules with the canonical topology is continuous. -/
145303
lemma continuous_of_mulActionHom (φ : M →[R] N) : Continuous φ := by
146304
-- Let's turn this question into an inequality question about coinduced topologies
147305
-- Now let's use the fact that τM and τN are action topologies (hence also coinduced)
148306
rw [isActionTopology R M, isActionTopology R N]
149307
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)
167342

168343
-- -- original proof, now broken
169344
-- rw [coinduced_le_iff_le_induced]
@@ -181,6 +356,8 @@ lemma continuous_of_mulActionHom (φ : M →[R] N) : Continuous φ := by
181356
-- -- over a big set
182357
-- apply iSup_comp_le (_ : N → TopologicalSpace N)
183358

359+
end function
360+
184361
#exit
185362

186363
section

0 commit comments

Comments
 (0)