@@ -74,8 +74,6 @@ the corresponding statements in this file
74
74
75
75
-/
76
76
77
- set_option lang.lemmaCmd true
78
-
79
77
section basics
80
78
81
79
/-
@@ -190,15 +188,15 @@ end one
190
188
191
189
section iso
192
190
193
- variable {R : Type *} [τR : TopologicalSpace R] [Semiring R] [TopologicalSemiring R]
191
+ variable {R : Type *} [τR : TopologicalSpace R] [Semiring R] -- [TopologicalSemiring R]
194
192
variable {A : Type *} [AddCommMonoid A] [Module R A] [τA : TopologicalSpace A] [IsActionTopology R A]
195
193
variable {B : Type *} [AddCommMonoid B] [Module R B] [τB : TopologicalSpace B]
196
194
197
195
-- this is horrible. Why isn't it easy?
198
196
-- One reason: we are rolling our own continuous linear equivs!
199
197
-- **TODO** Ask about making continuous linear equivs properly
200
- lemma iso (ehomeo : A ≃ₜ B) (elinear : A ≃ₗ[R] B) (he : ∀ a, ehomeo a = elinear a)
201
- [IsActionTopology R A] : IsActionTopology R B where
198
+ lemma iso (ehomeo : A ≃ₜ B) (elinear : A ≃ₗ[R] B) (he : ∀ a, ehomeo a = elinear a) :
199
+ IsActionTopology R B where
202
200
isActionTopology' := by
203
201
simp_rw [ehomeo.symm.inducing.1 , isActionTopology R A, actionTopology, induced_sInf]
204
202
congr 1
@@ -233,7 +231,7 @@ end iso
233
231
234
232
section function
235
233
236
- variable {R : Type *} [τR : TopologicalSpace R] [Semiring R] [TopologicalSemiring R]
234
+ variable {R : Type *} [τR : TopologicalSpace R] [Semiring R]
237
235
variable {A : Type *} [AddCommMonoid A] [Module R A] [aA : TopologicalSpace A] [IsActionTopology R A]
238
236
variable {B : Type *} [AddCommMonoid B] [Module R B] [aB : TopologicalSpace B] [IsActionTopology R B]
239
237
@@ -347,13 +345,11 @@ instance prod : IsActionTopology R (M × N) := by
347
345
refine @Continuous.comp _ ((M × N) × (M × N)) _ (_) (_) (_) _ _ this ?_
348
346
refine (@continuous_prod_mk _ _ _ (_) (_) (_) _ _).2 ⟨?_, ?_⟩
349
347
· refine @Continuous.comp _ _ _ (_) (_) (_) _ ((LinearMap.inl R M N)) ?_ continuous_fst
350
- sorry
351
- -- apply @continuous_of_linearMap _ _ _ _ _ _ _ _ _ _ _ (actionTopology _ _) (?_ )
352
- -- exact @IsActionTopology.mk _ _ _ _ _ (_) rfl
348
+ apply @continuous_of_linearMap _ _ _ _ _ _ _ _ _ _ _ (actionTopology _ _) (?_)
349
+ exact @IsActionTopology.mk _ _ _ _ _ (_) rfl
353
350
· refine @Continuous.comp _ _ _ (_) (_) (_) _ ((LinearMap.inr R M N)) ?_ continuous_snd
354
- sorry
355
- -- apply @continuous_of_linearMap _ _ _ _ _ _ _ _ _ _ _ (actionTopology _ _) (?_ )
356
- -- exact @IsActionTopology.mk _ _ _ _ _ (_) rfl
351
+ apply @continuous_of_linearMap _ _ _ _ _ _ _ _ _ _ _ (actionTopology _ _) (?_)
352
+ exact @IsActionTopology.mk _ _ _ _ _ (_) rfl
357
353
358
354
end prod
359
355
@@ -365,22 +361,30 @@ variable {ι : Type*} [Finite ι] {A : ι → Type*} [∀ i, AddCommGroup (A i)]
365
361
[∀ i, Module R (A i)] [∀ i, TopologicalSpace (A i)]
366
362
[∀ i, IsActionTopology R (A i)]
367
363
364
+ /-
365
+ -- ActionTopology.iso.{u_1, u_2, u_3} {R : Type u_1} [τR : TopologicalSpace R] [Semiring R] [TopologicalSemiring R]
366
+ -- {A : Type u_2} [AddCommMonoid A] [Module R A] [τA : TopologicalSpace A] [IsActionTopology R A] {B : Type u_3}
367
+ -- [AddCommMonoid B] [Module R B] [τB : TopologicalSpace B] (ehomeo : A ≃ₜ B) (elinear : A ≃ₗ[ R ] B)
368
+ -- (he : ∀ (a : A), ehomeo a = elinear a) [IsActionTopology R A] : IsActionTopology R B
369
+
370
+ -/
368
371
instance pi : IsActionTopology R (∀ i, A i) := by
369
372
induction ι using Finite.induction_empty_option
370
373
· case of_equiv X Y e _ _ _ _ _ =>
371
374
exact iso (Homeomorph.piCongrLeft e) (LinearEquiv.piCongrLeft R A e) (fun _ ↦ rfl)
372
375
· apply subsingleton
373
376
· case h_option X _ hind _ _ _ _ =>
374
377
let e : Option X ≃ X ⊕ Unit := Equiv.optionEquivSumPUnit X
375
- sorry
376
- -- refine @iso (ehomeo := Homeomorph.piCongrLeft e.symm)
377
- -- (elinear := LinearEquiv.piCongrLeft R A e.symm) _ (fun f ↦ rfl) ?_
378
- -- apply @iso (ehomeo := (Homeomorph.sumPiEquivProdPi X Unit _).symm)
379
- -- (elinear := (LinearEquiv.sumPiEquivProdPi R X Unit _).symm) _ (fun f ↦ rfl) ?_
380
- -- refine @prod _ _ _ _ _ _ (_) (hind) _ _ _ (_ ) (?_)
381
- -- let φ : Unit → Option X := fun t ↦ e.symm (Sum.inr t)
382
- -- exact iso (Homeomorph.pUnitPiEquiv (fun t ↦ A (φ t))).symm
383
- -- (LinearEquiv.pUnitPiEquiv R (fun t ↦ A (φ t))).symm (fun a ↦ rfl)
378
+ refine @iso (ehomeo := Homeomorph.piCongrLeft e.symm)
379
+ (elinear := LinearEquiv.piCongrLeft R A e.symm)
380
+ (he := fun f ↦ rfl) _ _ _ _ _ ?_
381
+ apply @iso (ehomeo := (Homeomorph.sumPiEquivProdPi X Unit _).symm)
382
+ (elinear := (LinearEquiv.sumPiEquivProdPi R X Unit _).symm)
383
+ (he := fun f ↦ rfl) _ _ _ _ _ ?_
384
+ refine @prod _ _ _ _ _ _ (_) (hind) _ _ _ (_) (?_)
385
+ let φ : Unit → Option X := fun t ↦ e.symm (Sum.inr t)
386
+ exact iso (Homeomorph.pUnitPiEquiv (fun t ↦ A (φ t))).symm
387
+ (LinearEquiv.pUnitPiEquiv R (fun t ↦ A (φ t))).symm (fun a ↦ rfl)
384
388
385
389
end Pi
386
390
@@ -390,7 +394,7 @@ section semiring_bilinear
390
394
-- a ring instead of a semiring. This should be fixed.
391
395
-- I also need commutativity because we don't have bilinear maps for non-commutative rings.
392
396
-- **TODO** ask on the Zulip whether this is an issue.
393
- variable {R : Type *} [τR : TopologicalSpace R] [CommRing R] [TopologicalSemiring R]
397
+ variable {R : Type *} [τR : TopologicalSpace R] [CommRing R]
394
398
395
399
-- similarly these don't need to be groups
396
400
variable {A : Type *} [AddCommGroup A] [Module R A] [aA : TopologicalSpace A] [IsActionTopology R A]
@@ -427,7 +431,7 @@ lemma Module.continuous_bilinear_of_pi_finite (ι : Type*) [Finite ι]
427
431
simp [Set.toFinite _]
428
432
429
433
-- Probably this can be beefed up to semirings.
430
- lemma Module.continuous_bilinear_of_finite_free [Module.Finite R A] [Module.Free R A]
434
+ lemma Module.continuous_bilinear_of_finite_free [TopologicalSemiring R] [ Module.Finite R A] [Module.Free R A]
431
435
(bil : A →ₗ[R] B →ₗ[R] C) : Continuous (fun ab ↦ bil ab.1 ab.2 : (A × B → C)) := by
432
436
let ι := Module.Free.ChooseBasisIndex R A
433
437
let hι : Fintype ι := Module.Free.ChooseBasisIndex.fintype R A
0 commit comments