@@ -14,54 +14,96 @@ This file defines the space of continuous homomorphisms between two topological
14
14
## Main definitions
15
15
16
16
* `continuous_monoid_hom A B`: The continuous homomorphisms `A →* B`.
17
-
17
+ * `continuous_add_monoid_hom α β`: The continuous additive homomorphisms `α →+ β`.
18
18
-/
19
19
20
- variables (A B C D E : Type *)
20
+ open function
21
+
22
+ variables {F α β : Type *} (A B C D E : Type *)
21
23
[monoid A] [monoid B] [monoid C] [monoid D] [comm_group E]
22
24
[topological_space A] [topological_space B] [topological_space C] [topological_space D]
23
25
[topological_space E] [topological_group E]
24
26
25
- set_option old_structure_cmd true
27
+ /-- The type of continuous additive monoid homomorphisms from `α` to `β`.
26
28
27
- /-- Continuous homomorphisms between two topological groups. -/
28
- structure continuous_monoid_hom extends A →* B, continuous_map A B
29
+ When possible, instead of parametrizing results over `(f : continuous_add_monoid_hom α β)`,
30
+ you should parametrize over `(F : Type*) [continuous_add_monoid_hom_class F α β] (f : F)`.
29
31
30
- /-- Continuous homomorphisms between two topological groups . -/
32
+ When you extend this structure, make sure to extend `continuous_add_monoid_hom_class` . -/
31
33
structure continuous_add_monoid_hom (A B : Type *) [add_monoid A] [add_monoid B]
32
- [topological_space A] [topological_space B] extends A →+ B, continuous_map A B
34
+ [topological_space A] [topological_space B] extends A →+ B :=
35
+ (continuous_to_fun : continuous to_fun)
36
+
37
+ /-- The type of continuous monoid homomorphisms from `α` to `β`.
38
+
39
+ When possible, instead of parametrizing results over `(f : continuous_monoid_hom α β)`,
40
+ you should parametrize over `(F : Type*) [continuous_monoid_hom_class F α β] (f : F)`.
33
41
34
- attribute [to_additive] continuous_monoid_hom
35
- attribute [to_additive] continuous_monoid_hom.to_monoid_hom
42
+ When you extend this structure, make sure to extend `continuous_add_monoid_hom_class`. -/
43
+ @[to_additive]
44
+ structure continuous_monoid_hom extends A →* B :=
45
+ (continuous_to_fun : continuous to_fun)
36
46
37
- initialize_simps_projections continuous_monoid_hom (to_fun → apply)
47
+ /-- `continuous_add_monoid_hom_class F α β` states that `F` is a type of continuous additive monoid
48
+ homomorphisms.
49
+
50
+ You should also extend this typeclass when you extend `continuous_add_monoid_hom`. -/
51
+ class continuous_add_monoid_hom_class (F α β : Type *) [add_monoid α] [add_monoid β]
52
+ [topological_space α] [topological_space β] extends add_monoid_hom_class F α β :=
53
+ (map_continuous (f : F) : continuous f)
54
+
55
+ /-- `continuous_monoid_hom_class F α β` states that `F` is a type of continuous additive monoid
56
+ homomorphisms.
57
+
58
+ You should also extend this typeclass when you extend `continuous_monoid_hom`. -/
59
+ @[to_additive]
60
+ class continuous_monoid_hom_class (F α β : Type *) [monoid α] [monoid β]
61
+ [topological_space α] [topological_space β] extends monoid_hom_class F α β :=
62
+ (map_continuous (f : F) : continuous f)
38
63
39
64
/-- Reinterpret a `continuous_monoid_hom` as a `monoid_hom`. -/
40
65
add_decl_doc continuous_monoid_hom.to_monoid_hom
41
66
42
- /-- Reinterpret a `continuous_monoid_hom` as a `continuous_map`. -/
43
- add_decl_doc continuous_monoid_hom.to_continuous_map
44
-
45
67
/-- Reinterpret a `continuous_add_monoid_hom` as an `add_monoid_hom`. -/
46
68
add_decl_doc continuous_add_monoid_hom.to_add_monoid_hom
47
69
48
- /-- Reinterpret a `continuous_add_monoid_hom` as a `continuous_map`. -/
49
- add_decl_doc continuous_add_monoid_hom.to_continuous_map
70
+ @[priority 100 , to_additive] -- See note [lower instance priority]
71
+ instance continuous_monoid_hom_class.to_continuous_map_class [monoid α] [monoid β]
72
+ [topological_space α] [topological_space β] [continuous_monoid_hom_class F α β] :
73
+ continuous_map_class F α β :=
74
+ { .. ‹continuous_monoid_hom_class F α β› }
50
75
51
76
namespace continuous_monoid_hom
52
-
53
- variables {A B C D E}
54
-
77
+ variables {A B C D E} [monoid α] [monoid β] [topological_space α] [topological_space β]
78
+
79
+ @[to_additive]
80
+ instance : continuous_monoid_hom_class (continuous_monoid_hom α β) α β :=
81
+ { coe := λ f, f.to_fun,
82
+ coe_injective' := λ f g h, by { obtain ⟨⟨_, _⟩, _⟩ := f, obtain ⟨⟨_, _⟩, _⟩ := g, congr' },
83
+ map_mul := λ f, f.map_mul',
84
+ map_one := λ f, f.map_one',
85
+ map_continuous := λ f, f.continuous_to_fun }
86
+
87
+ /-- Helper instance for when there's too many metavariables to apply `fun_like.has_coe_to_fun`
88
+ directly. -/
55
89
@[to_additive] instance : has_coe_to_fun (continuous_monoid_hom A B) (λ _, A → B) :=
56
- ⟨continuous_monoid_hom.to_fun⟩
90
+ fun_like.has_coe_to_fun
57
91
58
92
@[to_additive] lemma ext {f g : continuous_monoid_hom A B} (h : ∀ x, f x = g x) : f = g :=
59
- by cases f; cases g; congr; exact funext h
93
+ fun_like.ext _ _ h
94
+
95
+ /-- Reinterpret a `continuous_monoid_hom` as a `continuous_map`. -/
96
+ @[to_additive " Reinterpret a `continuous_add_monoid_hom` as a `continuous_map`." ]
97
+ def to_continuous_map (f : continuous_monoid_hom α β) : C(α, β) := { .. f}
98
+
99
+ @[to_additive] lemma to_continuous_map_injective : injective (to_continuous_map : _ → C(α, β)) :=
100
+ λ f g h, ext $ by convert fun_like.ext_iff.1 h
60
101
61
102
/-- Construct a `continuous_monoid_hom` from a `continuous` `monoid_hom`. -/
62
103
@[to_additive " Construct a `continuous_add_monoid_hom` from a `continuous` `add_monoid_hom`." ,
63
104
simps]
64
- def mk' (f : A →* B) (hf : continuous f) : continuous_monoid_hom A B := { .. f }
105
+ def mk' (f : A →* B) (hf : continuous f) : continuous_monoid_hom A B :=
106
+ { continuous_to_fun := hf, .. f }
65
107
66
108
/-- Composition of two continuous homomorphisms. -/
67
109
@[to_additive " Composition of two continuous homomorphisms." , simps]
@@ -153,7 +195,7 @@ variables (A B C D E)
153
195
lemma is_inducing : inducing (to_continuous_map : continuous_monoid_hom A B → C(A, B)) := ⟨rfl⟩
154
196
155
197
lemma is_embedding : embedding (to_continuous_map : continuous_monoid_hom A B → C(A, B)) :=
156
- ⟨is_inducing A B, λ _ _, ext ∘ continuous_map.ext_iff.mp ⟩
198
+ ⟨is_inducing A B, to_continuous_map_injective ⟩
157
199
158
200
variables {A B C D E}
159
201
0 commit comments