@@ -483,6 +483,60 @@ by { ext, simp [mul_smul] }
483
483
484
484
end semiring
485
485
486
+ section pi
487
+ variables
488
+ {R : Type *} [semiring R]
489
+ {M : Type *} [topological_space M] [add_comm_monoid M] [semimodule R M]
490
+ {M₂ : Type *} [topological_space M₂] [add_comm_monoid M₂] [semimodule R M₂]
491
+ {ι : Type *} {φ : ι → Type *} [∀i, topological_space (φ i)] [∀i, add_comm_monoid (φ i)] [∀i, semimodule R (φ i)]
492
+
493
+ /-- `pi` construction for continuous linear functions. From a family of continuous linear functions
494
+ it produces a continuous linear function into a family of topological modules. -/
495
+ def pi (f : Πi, M →L[R] φ i) : M →L[R] (Πi, φ i) :=
496
+ ⟨linear_map.pi (λ i, (f i : M →ₗ[R] φ i)),
497
+ continuous_pi (λ i, (f i).continuous)⟩
498
+
499
+ @[simp] lemma pi_apply (f : Πi, M →L[R] φ i) (c : M) (i : ι) :
500
+ pi f c i = f i c := rfl
501
+
502
+ lemma pi_eq_zero (f : Πi, M →L[R] φ i) : pi f = 0 ↔ (∀i, f i = 0 ) :=
503
+ by simp only [ext_iff, pi_apply, function.funext_iff]; exact ⟨λh a b, h b a, λh a b, h b a⟩
504
+
505
+ lemma pi_zero : pi (λi, 0 : Πi, M →L[R] φ i) = 0 := by ext; refl
506
+
507
+ lemma pi_comp (f : Πi, M →L[R] φ i) (g : M₂ →L[R] M) : (pi f).comp g = pi (λi, (f i).comp g) := rfl
508
+
509
+ /-- The projections from a family of topological modules are continuous linear maps. -/
510
+ def proj (i : ι) : (Πi, φ i) →L[R] φ i :=
511
+ ⟨linear_map.proj i, continuous_apply _⟩
512
+
513
+ @[simp] lemma proj_apply (i : ι) (b : Πi, φ i) : (proj i : (Πi, φ i) →L[R] φ i) b = b i := rfl
514
+
515
+ lemma proj_pi (f : Πi, M₂ →L[R] φ i) (i : ι) : (proj i).comp (pi f) = f i :=
516
+ ext $ assume c, rfl
517
+
518
+ lemma infi_ker_proj : (⨅i, ker (proj i) : submodule R (Πi, φ i)) = ⊥ :=
519
+ linear_map.infi_ker_proj
520
+
521
+ variables (R φ)
522
+
523
+ /-- If `I` and `J` are complementary index sets, the product of the kernels of the `J`th projections of
524
+ `φ` is linearly equivalent to the product over `I`. -/
525
+ def infi_ker_proj_equiv {I J : set ι} [decidable_pred (λi, i ∈ I)]
526
+ (hd : disjoint I J) (hu : set.univ ⊆ I ∪ J) :
527
+ (⨅i ∈ J, ker (proj i) : submodule R (Πi, φ i)) ≃L[R] (Πi:I, φ i) :=
528
+ ⟨ linear_map.infi_ker_proj_equiv R φ hd hu,
529
+ continuous_pi (λ i, begin
530
+ have := @continuous_subtype_coe _ _ (λ x, x ∈ (⨅i ∈ J, ker (proj i) : submodule R (Πi, φ i))),
531
+ have := continuous.comp (by exact continuous_apply i) this ,
532
+ exact this
533
+ end ),
534
+ continuous_subtype_mk _ (continuous_pi (λ i, begin
535
+ dsimp, split_ifs; [apply continuous_apply, exact continuous_const]
536
+ end )) ⟩
537
+
538
+ end pi
539
+
486
540
section ring
487
541
488
542
variables
0 commit comments