Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit e6bfe18

Browse files
feat(topology/algebra/module): pi and proj for CLM (#3430)
Co-authored-by: Bryan Gin-ge Chen <bryangingechen@gmail.com>
1 parent f83cf57 commit e6bfe18

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

src/topology/algebra/module.lean

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,60 @@ by { ext, simp [mul_smul] }
483483

484484
end semiring
485485

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+
486540
section ring
487541

488542
variables

0 commit comments

Comments
 (0)