@@ -242,31 +242,73 @@ section Pi
242
242
243
243
variable {R : Type *} [τR : TopologicalSpace R] [Semiring R] [TopologicalSemiring R]
244
244
245
+ -- not sure I'm going to do it this way -- see `pi` below.
245
246
instance piNat (n : ℕ) {A : Fin n → Type *} [∀ i, AddCommGroup (A i)]
246
247
[∀ i, Module R (A i)] [∀ i, TopologicalSpace (A i)]
247
248
[∀ i, IsActionTopology R (A i)]: IsActionTopology R (Π i, A i) := by
248
249
induction n
249
250
· infer_instance
250
- ·
251
+ · case succ n IH _ _ _ _ =>
252
+ specialize IH (A := fun i => A (Fin.castSucc i))
251
253
sorry
252
254
253
255
variable {ι : Type *} [Finite ι] {A : ι → Type *} [∀ i, AddCommGroup (A i)]
254
256
[∀ i, Module R (A i)] [∀ i, TopologicalSpace (A i)]
255
257
[∀ i, IsActionTopology R (A i)]
256
258
259
+ variable (R) in
260
+ def LinearEquiv.sumPiEquivProdPi (S T : Type *) (A : S ⊕ T → Type *)
261
+ [∀ st, AddCommGroup (A st)] [∀ st, Module R (A st)] :
262
+ (∀ (st : S ⊕ T), A st) ≃ₗ[R] (∀ (s : S), A (.inl s)) × (∀ (t : T), A (.inr t)) where
263
+ toFun f := (fun s ↦ f (.inl s), fun t ↦ f (.inr t))
264
+ map_add' f g := by aesop
265
+ map_smul' := by aesop
266
+ invFun fg st := Sum.rec (fun s => fg.1 s) (fun t => fg.2 t) st
267
+ left_inv := by intro x; aesop
268
+ right_inv := by intro x; aesop
269
+
270
+ def Homeomorph.sumPiEquivProdPi (S T : Type *) (A : S ⊕ T → Type *)
271
+ [∀ st, TopologicalSpace (A st)] :
272
+ (∀ (st : S ⊕ T), A st) ≃ₜ (∀ (s : S), A (.inl s)) × (∀ (t : T), A (.inr t)) where
273
+ toFun f := (fun s ↦ f (.inl s), fun t ↦ f (.inr t))
274
+ invFun fg st := Sum.rec (fun s => fg.1 s) (fun t => fg.2 t) st
275
+ left_inv := by intro x; aesop
276
+ right_inv := by intro x; aesop
277
+ continuous_toFun := Continuous.prod_mk (by fun_prop) (by fun_prop)
278
+ continuous_invFun := continuous_pi <| fun st ↦ by
279
+ rcases st with s | t
280
+ · simp
281
+ fun_prop
282
+ · simp
283
+ fun_prop
284
+
285
+ --example (f : PUnit → Type*) [∀ x, TopologicalSpace (f x)]: ((t : PUnit) → (f t)) ≃ₜ f () := by exact?
286
+ --example (f : PUnit → Type*) [∀ x, AddCommGroup (f x)] [∀ x, Module R (f x)] : ((t : PUnit) → (f t)) ≃ₗ[ R ] f () := by exact?
287
+
257
288
instance pi : IsActionTopology R (∀ i, A i) := by
258
289
induction ι using Finite.induction_empty_option
259
290
· case of_equiv X Y e hind _ _ _ _ =>
260
291
specialize hind (A := fun x ↦ A (e x))
261
- apply iso (R := R) (A := ∀ i , A (e i )) (B := ∀ i, A i)
292
+ apply iso (R := R) (A := ∀ j , A (e j )) (B := ∀ i, A i)
262
293
(Homeomorph.piCongrLeft e) (by exact LinearEquiv.piCongrLeft R A e)
263
294
aesop
264
295
· apply subsingleton
265
296
· case h_option X _ hind _ _ _ _ =>
266
297
specialize hind (A := fun x ↦ A (some x))
267
- -- Option X ≃ X ⊕ Unit
268
- -- look at what Yakov told me
269
- sorry
298
+ let e : Option X ≃ X ⊕ Unit := Equiv.optionEquivSumPUnit X
299
+ apply @iso (R := R) (A := ∀ y, A (e.symm y)) (B := ∀ x, A x)
300
+ (ehomeo := Homeomorph.piCongrLeft e.symm)
301
+ (elinear := LinearEquiv.piCongrLeft R A e.symm) _ (_) (_)
302
+ · intros
303
+ rfl
304
+ · apply @iso (ehomeo := (Homeomorph.sumPiEquivProdPi X Unit _).symm)
305
+ (elinear := (LinearEquiv.sumPiEquivProdPi R X Unit _).symm) (_) (_) (_)
306
+ · intros
307
+ rfl
308
+ · apply @prod _ _ _ _ _ _ (_) (_) _ _ _ (_) (_)
309
+ · exact hind
310
+ · --apply @iso (ehomeo := (_ : A (e.symm (Sum.inr ())) ≃ₜ _))
311
+ sorry
270
312
271
313
end Pi
272
314
0 commit comments