Skip to content

Commit a2ba0d0

Browse files
committed
more topology experiments
1 parent a760eb2 commit a2ba0d0

File tree

2 files changed

+165
-16
lines changed

2 files changed

+165
-16
lines changed

FLT/HIMExperiments/ContinuousSMul_topology.lean

+121-6
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import Mathlib.Topology.Order
66
import Mathlib.Algebra.Group.Action.Defs
77

88
/-
9-
9+
-- todo : A -> R, M -> A
1010
# An "action topology" for monoid actions.
1111
1212
Let `A` denote a topological monoid, and say `A` acts on the type `M`.
@@ -29,6 +29,7 @@ may or may not have the following cool properties:
2929
the product topology.
3030
5) The `A`-module topology on a power `M^n`, that is, `n → M` with `n : Type`, is the
3131
(now possibly infinite) product topology.
32+
5.5) sigma types
3233
3334
6) Now say `A` is commutative. Then the tensor product of two `A`-modules is an `A`-module,
3435
and so we can ask if the canonical bilinear map from `M × N` (with the module or product topology?
@@ -43,7 +44,7 @@ functions from `M` (now considered only as an index set, so with no topology) to
4344
-/
4445
section basics
4546

46-
abbrev ActionTopology (R A : Type*) [SMul R A] [TopologicalSpace R] :
47+
abbrev actionTopology (R A : Type*) [SMul R A] [TopologicalSpace R] :
4748
TopologicalSpace A :=
4849
sInf {t | @ContinuousSMul R A _ _ t}
4950

@@ -52,22 +53,136 @@ abbrev ActionTopology (R A : Type*) [SMul R A] [TopologicalSpace R] :
5253
-- called A M as well. Here we completely avoid the M ambiguity.
5354
class IsActionTopology (R A : Type*) [SMul R A]
5455
[TopologicalSpace R] [τA : TopologicalSpace A] : Prop where
55-
isActionTopology : τA = ActionTopology R A
56+
isActionTopology' : τA = actionTopology R A
5657

57-
--variable (M : Type*) [Monoid M] (X : Type*) [TopologicalSpace M] [SMul M X]
58+
lemma isActionTopology (R A : Type*) [SMul R A]
59+
[TopologicalSpace R] [τA : TopologicalSpace A] [IsActionTopology R A] :
60+
τA = actionTopology R A :=
61+
IsActionTopology.isActionTopology' (R := R) (A := A)
5862

5963
variable (R A : Type*) [SMul R A] [TopologicalSpace R] in
60-
example : @ContinuousSMul R A _ _ (ActionTopology R A) :=
64+
example : @ContinuousSMul R A _ _ (actionTopology R A) :=
6165
continuousSMul_sInf <| by aesop
6266

6367
variable (R A : Type*) [SMul R A] [TopologicalSpace R]
6468
[TopologicalSpace A] [IsActionTopology R A] in
6569
example : ContinuousSMul R A := by
66-
rw [IsActionTopology.isActionTopology (R := R) (A := A)]
70+
rw [isActionTopology R A]
6771
exact continuousSMul_sInf <| by aesop
6872

6973
end basics
7074

75+
namespace ActionTopology
76+
section scratch
77+
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
82+
83+
end scratch
84+
85+
section one
86+
87+
lemma id' (R : Type*) [Monoid R] [τ : TopologicalSpace R] [ContinuousMul R] :
88+
IsActionTopology R R := by
89+
constructor
90+
unfold actionTopology
91+
symm
92+
rw [← isGLB_iff_sInf_eq]
93+
constructor
94+
· intro σ hσ
95+
cases' hσ with
96+
rw [← continuous_id_iff_le]
97+
have foo : (id : R → R) = (fun ab ↦ ab.1 * ab.2 : R × R → R) ∘ (fun r ↦ (r, 1)) := by
98+
funext
99+
simp
100+
rw [foo]
101+
apply @Continuous.comp R (R × R) R τ (@instTopologicalSpaceProd R R τ σ)
102+
· apply hσ
103+
· refine @Continuous.prod_mk R R R ?_ ?_ ?_ ?_ ?_ ?_ ?_
104+
· refine @continuous_id R ?_
105+
· refine @continuous_const R R ?_ ?_ 1
106+
· intro σ hσ
107+
rw [mem_lowerBounds] at hσ
108+
apply hσ
109+
clear σ hσ
110+
simp
111+
constructor
112+
rename_i foo
113+
cases foo with
114+
| mk continuous_mul => exact continuous_mul
115+
116+
end one
117+
section prod
118+
119+
variable {R : Type} [TopologicalSpace R]
120+
121+
-- 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
132+
constructor
133+
unfold instTopologicalSpaceProd actionTopology
134+
apply le_antisymm
135+
· apply le_sInf
136+
intro σMN hσ
137+
sorry
138+
·
139+
sorry
140+
141+
end prod
142+
#exit
143+
144+
/-- Every `A`-linear map between two `A`-modules with the canonical topology is continuous. -/
145+
lemma continuous_of_mulActionHom (φ : M →[R] N) : Continuous φ := by
146+
-- Let's turn this question into an inequality question about coinduced topologies
147+
-- Now let's use the fact that τM and τN are action topologies (hence also coinduced)
148+
rw [isActionTopology R M, isActionTopology R N]
149+
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
167+
168+
-- -- original proof, now broken
169+
-- rw [coinduced_le_iff_le_induced]
170+
-- -- There's an already-proven lemma in mathlib that says that coinducing an `iSup` is the
171+
-- -- same thing as taking the `iSup`s of the coinduced topologies
172+
-- -- composite of the coinduced topologies is just topology coinduced by the composite
173+
-- rw [coinduced_iSup]
174+
-- simp_rw [coinduced_compose]
175+
-- -- restate the current state of the question with better variables
176+
-- change ⨆ m, TopologicalSpace.coinduced (fun r ↦ e (r • m)) τR ≤
177+
-- ⨆ n, TopologicalSpace.coinduced (fun x ↦ x • n) τR
178+
-- -- use the fact that `e (r • m) = r • (e m)`
179+
-- simp_rw [map_smul]
180+
-- -- and now the goal follows from the fact that the sup over a small set is ≤ the sup
181+
-- -- over a big set
182+
-- apply iSup_comp_le (_ : N → TopologicalSpace N)
183+
184+
#exit
185+
71186
section
72187
-- Let R be a monoid, with a compatible topology.
73188
variable (R : Type*) [Monoid R] [TopologicalSpace R] [ContinuousMul R]

FLT/HIMExperiments/right_module_topology.lean

+44-10
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ functions from `M` (now considered only as an index set, so with no topology) to
3535
3636
-/
3737

38-
section noncommutative
38+
section defs
3939

4040
class IsActionTopology (R M : Type*) [SMul R M]
4141
[τR : TopologicalSpace R] [τM : TopologicalSpace M] : Prop where
@@ -46,13 +46,46 @@ def isActionTopology (R M : Type*) [SMul R M]
4646
[TopologicalSpace R] [TopologicalSpace M] [IsActionTopology R M ]:=
4747
IsActionTopology.isActionTopology' (R := R) (M := M)
4848

49-
def ActionTopology (R M : Type*) [SMul R M] [TopologicalSpace R] :
49+
def actionTopology (R M : Type*) [SMul R M] [TopologicalSpace R] :
5050
TopologicalSpace M := ⨆ m, .coinduced (· • m) (inferInstance : TopologicalSpace R)
5151

52+
end defs
5253
namespace ActionTopology
53-
namespace type_stuff
5454

55-
variable {R : Type} [τR : TopologicalSpace R]
55+
56+
section one
57+
58+
variable {R : Type*} [τR : TopologicalSpace R]
59+
60+
-- this proof shoudl be much easier
61+
example [Monoid R] [ContinuousMul R] :
62+
IsActionTopology R R where
63+
isActionTopology' := by
64+
rw [iSup.eq_1]
65+
symm
66+
rw [← isLUB_iff_sSup_eq]
67+
constructor
68+
· rintro - ⟨r, rfl⟩
69+
simp
70+
rw [← continuous_iff_coinduced_le]
71+
fun_prop
72+
· intro σR hσ
73+
rw [mem_upperBounds] at hσ
74+
specialize hσ ?_ ⟨?_, ?_⟩
75+
swap
76+
use 1
77+
exact (fun m ↦ TopologicalSpace.coinduced (fun x ↦ x • m) τR) 1
78+
rfl
79+
convert hσ
80+
simp only [smul_eq_mul, mul_one]
81+
rfl
82+
-- this proof shoudl be much easier
83+
end one
84+
85+
section type_stuff
86+
87+
variable {R : Type*} [τR : TopologicalSpace R]
88+
5689

5790
-- let `M` and `N` have an action of `R`
5891
variable {M : Type*} [SMul R M] [τM : TopologicalSpace M] [IsActionTopology R M]
@@ -97,23 +130,23 @@ def homeomorph_of_mulActionEquiv (φ : M →[R] N) (ψ : N →[R] M) (h1 : ∀ m
97130
}
98131

99132
-- this is definitely true
100-
lemma unit : (inferInstance : TopologicalSpace Unit) = ActionTopology R Unit := by
133+
lemma unit : (inferInstance : TopologicalSpace Unit) = actionTopology R Unit := by
101134
sorry
102135

103136
-- is this true?
104-
lemma prod : (inferInstance : TopologicalSpace (M × N)) = ActionTopology R (M × N) := by
137+
lemma prod : (inferInstance : TopologicalSpace (M × N)) = actionTopology R (M × N) := by
105138
sorry
106139

107140
-- is this true? If not, is it true if ι is finite?
108141
lemma pi {ι : Type*} {M : ι → Type*} [∀ i, SMul R (M i)] [τM : ∀ i, TopologicalSpace (M i)]
109142
[∀ i, IsActionTopology R (M i)] :
110-
(inferInstance : TopologicalSpace (∀ i, M i)) = ActionTopology R (∀ i, M i) := by
143+
(inferInstance : TopologicalSpace (∀ i, M i)) = actionTopology R (∀ i, M i) := by
111144
sorry
112145

113146
-- is this true? If not, is it true if ι is finite?
114147
lemma sigma {ι : Type*} {M : ι → Type*} [∀ i, SMul R (M i)] [τM : ∀ i, TopologicalSpace (M i)]
115148
[∀ i, IsActionTopology R (M i)] :
116-
(inferInstance : TopologicalSpace (Σ i, M i)) = ActionTopology R (Σ i, M i) := by
149+
(inferInstance : TopologicalSpace (Σ i, M i)) = actionTopology R (Σ i, M i) := by
117150
sorry
118151

119152
end type_stuff
@@ -123,7 +156,7 @@ section R_is_M_stuff
123156
variable {R : Type} [τR : TopologicalSpace R] [Monoid R]
124157

125158
-- is this true? Do we need that R is commutative? Does it work if R is a only semigroup?
126-
example : (inferInstance : TopologicalSpace R) = ActionTopology R R := by
159+
example : (inferInstance : TopologicalSpace R) = actionTopology R R := by
127160
sorry
128161

129162
end R_is_M_stuff
@@ -140,7 +173,7 @@ variable {N : Type*} [AddCommGroup N] [Module A N] [TopologicalSpace N] [Topolog
140173
-- What generality is this true in? I only need it when M and N are finite and free
141174
open scoped TensorProduct
142175
lemma continuous_of_bilinear :
143-
letI : TopologicalSpace (M ⊗[A] N) := ActionTopology A (M ⊗[A] N)
176+
letI : TopologicalSpace (M ⊗[A] N) := actionTopology A (M ⊗[A] N)
144177
Continuous (fun (mn : M × N) ↦ mn.1 ⊗ₜ mn.2 : M × N → M ⊗[A] N) := by sorry
145178

146179
-- Now say we have a (not necessarily commutative) `A`-algebra `D` which is free of finite type.
@@ -156,3 +189,4 @@ end what_i_want
156189

157190
-- possible hints at https://github.com/ImperialCollegeLondon/FLT/blob/main/FLT/HIMExperiments/module_topology.lean
158191
-- except there the topology is *different* so the work does not apply
192+
end ActionTopology

0 commit comments

Comments
 (0)