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

Commit cc74bcb

Browse files
committed
feat(topology/algebra/module/basic): add continuous_linear_map.apply_module (#14223)
This matches `linear_map.apply_module`, but additionally provides `has_continuous_const_smul`. This also adds the missing `continuous_linear_map.semiring` and `continuous_linear_map.monoid_with_zero` instances.
1 parent 76f9f45 commit cc74bcb

File tree

1 file changed

+54
-5
lines changed

1 file changed

+54
-5
lines changed

src/topology/algebra/module/basic.lean

Lines changed: 54 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,59 @@ lemma mul_def (f g : M₁ →L[R₁] M₁) : f * g = f.comp g := rfl
620620

621621
lemma mul_apply (f g : M₁ →L[R₁] M₁) (x : M₁) : (f * g) x = f (g x) := rfl
622622

623+
instance : monoid_with_zero (M₁ →L[R₁] M₁) :=
624+
{ mul := (*),
625+
one := 1,
626+
zero := 0,
627+
mul_zero := λ f, ext $ λ _, map_zero f,
628+
zero_mul := λ _, ext $ λ _, rfl,
629+
mul_one := λ _, ext $ λ _, rfl,
630+
one_mul := λ _, ext $ λ _, rfl,
631+
mul_assoc := λ _ _ _, ext $ λ _, rfl, }
632+
633+
instance [has_continuous_add M₁] : semiring (M₁ →L[R₁] M₁) :=
634+
{ mul := (*),
635+
one := 1,
636+
left_distrib := λ f g h, ext $ λ x, map_add f (g x) (h x),
637+
right_distrib := λ _ _ _, ext $ λ _, linear_map.add_apply _ _ _,
638+
..continuous_linear_map.monoid_with_zero,
639+
..continuous_linear_map.add_comm_monoid }
640+
641+
/-- `continuous_linear_map.to_linear_map` as a `ring_hom`.-/
642+
@[simps]
643+
def to_linear_map_ring_hom [has_continuous_add M₁] : (M₁ →L[R₁] M₁) →+* (M₁ →ₗ[R₁] M₁) :=
644+
{ to_fun := to_linear_map,
645+
map_zero' := rfl,
646+
map_one' := rfl,
647+
map_add' := λ _ _, rfl,
648+
map_mul' := λ _ _, rfl }
649+
650+
section apply_action
651+
variables [has_continuous_add M₁]
652+
653+
/-- The tautological action by `M₁ →L[R₁] M₁` on `M`.
654+
655+
This generalizes `function.End.apply_mul_action`. -/
656+
instance apply_module : module (M₁ →L[R₁] M₁) M₁ :=
657+
module.comp_hom _ to_linear_map_ring_hom
658+
659+
@[simp] protected lemma smul_def (f : M₁ →L[R₁] M₁) (a : M₁) : f • a = f a := rfl
660+
661+
/-- `continuous_linear_map.apply_module` is faithful. -/
662+
instance apply_has_faithful_scalar : has_faithful_scalar (M₁ →L[R₁] M₁) M₁ :=
663+
⟨λ _ _, continuous_linear_map.ext⟩
664+
665+
instance apply_smul_comm_class : smul_comm_class R₁ (M₁ →L[R₁] M₁) M₁ :=
666+
{ smul_comm := λ r e m, (e.map_smul r m).symm }
667+
668+
instance apply_smul_comm_class' : smul_comm_class (M₁ →L[R₁] M₁) R₁ M₁ :=
669+
{ smul_comm := continuous_linear_map.map_smul }
670+
671+
instance : has_continuous_const_smul (M₁ →L[R₁] M₁) M₁ :=
672+
⟨continuous_linear_map.continuous⟩
673+
674+
end apply_action
675+
623676
/-- The cartesian product of two bounded linear maps, as a bounded linear map. -/
624677
protected def prod [module R₁ M₂] [module R₁ M₃] (f₁ : M₁ →L[R₁] M₂) (f₂ : M₁ →L[R₁] M₃) :
625678
M₁ →L[R₁] (M₂ × M₃) :=
@@ -984,11 +1037,7 @@ end
9841037
instance [topological_add_group M] : ring (M →L[R] M) :=
9851038
{ mul := (*),
9861039
one := 1,
987-
mul_one := λ _, ext $ λ _, rfl,
988-
one_mul := λ _, ext $ λ _, rfl,
989-
mul_assoc := λ _ _ _, ext $ λ _, rfl,
990-
left_distrib := λ f g h, ext $ λ x, map_add f (g x) (h x),
991-
right_distrib := λ _ _ _, ext $ λ _, linear_map.add_apply _ _ _,
1040+
..continuous_linear_map.semiring,
9921041
..continuous_linear_map.add_comm_group }
9931042

9941043
lemma smul_right_one_pow [topological_space R] [topological_ring R] (c : R) (n : ℕ) :

0 commit comments

Comments
 (0)