@@ -10,6 +10,25 @@ import ring_theory.ideal.basic
10
10
import ring_theory.subring
11
11
import algebra.ring.prod
12
12
13
+ /-!
14
+
15
+ # Topological (semi)rings
16
+
17
+ A topological (semi)ring is a (semi)ring equipped with a topology such that all operations are
18
+ continuous. Besides this definition, this file proves that the topological closure of a subring
19
+ (resp. an ideal) is a subring (resp. an ideal) and defines products and quotients
20
+ of topological (semi)rings.
21
+
22
+ ## Main Results
23
+
24
+ - `subring.topological_closure`/`subsemiring.topological_closure`: the topological closure of a
25
+ `subring`/`subsemiring` is itself a `sub(semi)ring`.
26
+ - `prod_ring`/`prod_semiring`: The product of two topological (semi)rings.
27
+ - `ideal.closure`: The closure of an ideal is an ideal.
28
+ - `topological_ring_quotient`: The quotient of a topological ring by an ideal is a topological ring.
29
+
30
+ -/
31
+
13
32
open classical set filter topological_space
14
33
open_locale classical
15
34
@@ -52,14 +71,6 @@ lemma subsemiring.topological_closure_minimal
52
71
s.topological_closure ≤ t :=
53
72
closure_minimal h ht
54
73
55
- instance (S : submonoid α) : has_continuous_mul (S.topological_closure) :=
56
- { continuous_mul :=
57
- begin
58
- apply continuous_induced_rng,
59
- change continuous (λ p : S.topological_closure × S.topological_closure, (p.1 : α) * (p.2 : α)),
60
- continuity,
61
- end }
62
-
63
74
/-- The product topology on the cartesian product of two topological semirings
64
75
makes the product into a topological semiring. -/
65
76
instance prod_semiring {β : Type *}
@@ -113,17 +124,14 @@ instance subring.topological_closure_topological_ring (s : subring α) :
113
124
..s.to_submonoid.topological_closure_has_continuous_mul }
114
125
115
126
lemma subring.subring_topological_closure (s : subring α) :
116
- s ≤ s.topological_closure :=
117
- subset_closure
127
+ s ≤ s.topological_closure := subset_closure
118
128
119
129
lemma subring.is_closed_topological_closure (s : subring α) :
120
- is_closed (s.topological_closure : set α) :=
121
- by convert is_closed_closure
130
+ is_closed (s.topological_closure : set α) := by convert is_closed_closure
122
131
123
132
lemma subring.topological_closure_minimal
124
133
(s : subring α) {t : subring α} (h : s ≤ t) (ht : is_closed (t : set α)) :
125
- s.topological_closure ≤ t :=
126
- closure_minimal h ht
134
+ s.topological_closure ≤ t := closure_minimal h ht
127
135
128
136
end topological_ring
129
137
@@ -132,14 +140,11 @@ variables {α : Type*} [topological_space α] [comm_ring α] [topological_ring
132
140
133
141
/-- The closure of an ideal in a topological ring as an ideal. -/
134
142
def ideal.closure (S : ideal α) : ideal α :=
135
- { carrier := closure S,
136
- smul_mem' := assume c x hx,
137
- have continuous (λx:α, c * x) := continuous_const.mul continuous_id,
138
- map_mem_closure this hx $ assume a, S.mul_mem_left _,
143
+ { carrier := closure S,
144
+ smul_mem' := λ c x hx, map_mem_closure (mul_left_continuous _) hx $ λ a, S.mul_mem_left c,
139
145
..(add_submonoid.topological_closure S.to_add_submonoid) }
140
146
141
- @[simp] lemma ideal.coe_closure (S : ideal α) :
142
- (S.closure : set α) = closure S := rfl
147
+ @[simp] lemma ideal.coe_closure (S : ideal α) : (S.closure : set α) = closure S := rfl
143
148
144
149
end topological_comm_ring
145
150
@@ -150,51 +155,34 @@ open ideal.quotient
150
155
instance topological_ring_quotient_topology : topological_space N.quotient :=
151
156
by dunfold ideal.quotient submodule.quotient; apply_instance
152
157
153
- lemma quotient_ring_saturate {α : Type *} [comm_ring α] (N : ideal α) (s : set α) :
154
- mk N ⁻¹' (mk N '' s) = (⋃ x : N, (λ y, x.1 + y) '' s) :=
155
- begin
156
- ext x,
157
- simp only [mem_preimage, mem_image, mem_Union, ideal.quotient.eq],
158
- split,
159
- { exact assume ⟨a, a_in, h⟩, ⟨⟨_, N.neg_mem h⟩, a, a_in, by simp⟩ },
160
- { exact assume ⟨⟨i, hi⟩, a, ha, eq⟩, ⟨a, ha,
161
- by rw [← eq, sub_add_eq_sub_sub_swap, sub_self, zero_sub];
162
- exact N.neg_mem hi⟩ }
163
- end
158
+ -- note for the reader: in the following, `mk` is `ideal.quotient.mk`, the canonical map `R → R/I`.
164
159
165
160
variable [topological_ring α]
166
161
167
162
lemma quotient_ring.is_open_map_coe : is_open_map (mk N) :=
168
163
begin
169
- assume s s_op,
170
- show is_open (mk N ⁻¹' (mk N '' s)),
171
- rw quotient_ring_saturate N s ,
172
- exact is_open_Union (assume ⟨n, _⟩, is_open_map_add_left n s s_op)
164
+ intros s s_op,
165
+ change is_open (mk N ⁻¹' (mk N '' s)),
166
+ rw quotient_ring_saturate,
167
+ exact is_open_Union (λ ⟨n, _⟩, is_open_map_add_left n s s_op)
173
168
end
174
169
175
170
lemma quotient_ring.quotient_map_coe_coe : quotient_map (λ p : α × α, (mk N p.1 , mk N p.2 )) :=
176
- begin
177
- apply is_open_map.to_quotient_map,
178
- { exact (quotient_ring.is_open_map_coe N).prod (quotient_ring.is_open_map_coe N) },
179
- { exact (continuous_quot_mk.comp continuous_fst).prod_mk
180
- (continuous_quot_mk.comp continuous_snd) },
181
- { rintro ⟨⟨x⟩, ⟨y⟩⟩,
182
- exact ⟨(x, y), rfl⟩ }
183
- end
171
+ is_open_map.to_quotient_map
172
+ ((quotient_ring.is_open_map_coe N).prod (quotient_ring.is_open_map_coe N))
173
+ ((continuous_quot_mk.comp continuous_fst).prod_mk (continuous_quot_mk.comp continuous_snd))
174
+ (by rintro ⟨⟨x⟩, ⟨y⟩⟩; exact ⟨(x, y), rfl⟩)
184
175
185
176
instance topological_ring_quotient : topological_ring N.quotient :=
186
177
{ continuous_add :=
187
178
have cont : continuous (mk N ∘ (λ (p : α × α), p.fst + p.snd)) :=
188
179
continuous_quot_mk.comp continuous_add,
189
- (quotient_map.continuous_iff (quotient_ring.quotient_map_coe_coe N)).2 cont,
180
+ (quotient_map.continuous_iff (quotient_ring.quotient_map_coe_coe N)).mpr cont,
190
181
continuous_neg :=
191
- begin
192
- convert continuous_quotient_lift _ (continuous_quot_mk.comp continuous_neg),
193
- apply_instance,
194
- end ,
182
+ by convert continuous_quotient_lift _ (continuous_quot_mk.comp continuous_neg); apply_instance,
195
183
continuous_mul :=
196
184
have cont : continuous (mk N ∘ (λ (p : α × α), p.fst * p.snd)) :=
197
185
continuous_quot_mk.comp continuous_mul,
198
- (quotient_map.continuous_iff (quotient_ring.quotient_map_coe_coe N)).2 cont }
186
+ (quotient_map.continuous_iff (quotient_ring.quotient_map_coe_coe N)).mpr cont }
199
187
200
188
end topological_ring
0 commit comments