@@ -128,45 +128,6 @@ lemma discrete_topology_iff_open_singleton_one : discrete_topology G ↔ is_open
128
128
129
129
end continuous_mul_group
130
130
131
- /-!
132
- ### Topological operations on pointwise sums and products
133
-
134
- A few results about interior and closure of the pointwise addition/multiplication of sets in groups
135
- with continuous addition/multiplication. See also `submonoid.top_closure_mul_self_eq` in
136
- `topology.algebra.monoid`.
137
- -/
138
-
139
- section pointwise
140
- variables [topological_space α] [group α] [has_continuous_mul α] {s t : set α}
141
-
142
- @[to_additive]
143
- lemma is_open.mul_left (ht : is_open t) : is_open (s * t) :=
144
- begin
145
- rw ←Union_mul_left_image,
146
- exact is_open_Union (λ a, is_open_Union $ λ ha, is_open_map_mul_left a t ht),
147
- end
148
-
149
- @[to_additive]
150
- lemma is_open.mul_right (hs : is_open s) : is_open (s * t) :=
151
- begin
152
- rw ←Union_mul_right_image,
153
- exact is_open_Union (λ a, is_open_Union $ λ ha, is_open_map_mul_right a s hs),
154
- end
155
-
156
- @[to_additive]
157
- lemma subset_interior_mul_left : interior s * t ⊆ interior (s * t) :=
158
- interior_maximal (set.mul_subset_mul_right interior_subset) is_open_interior.mul_right
159
-
160
- @[to_additive]
161
- lemma subset_interior_mul_right : s * interior t ⊆ interior (s * t) :=
162
- interior_maximal (set.mul_subset_mul_left interior_subset) is_open_interior.mul_left
163
-
164
- @[to_additive]
165
- lemma subset_interior_mul : interior s * interior t ⊆ interior (s * t) :=
166
- (set.mul_subset_mul_left interior_subset).trans subset_interior_mul_left
167
-
168
- end pointwise
169
-
170
131
/-!
171
132
### `has_continuous_inv` and `has_continuous_neg`
172
133
-/
@@ -280,11 +241,37 @@ instance multiplicative.has_continuous_inv [h : topological_space H] [has_neg H]
280
241
281
242
end continuous_inv
282
243
283
- @[to_additive]
284
- lemma is_compact.inv [topological_space G] [has_involutive_inv G] [has_continuous_inv G]
285
- {s : set G} (hs : is_compact s) : is_compact (s⁻¹) :=
244
+ section continuous_involutive_inv
245
+ variables [topological_space G] [has_involutive_inv G] [has_continuous_inv G] {s : set G}
246
+
247
+ @[to_additive] lemma is_compact.inv (hs : is_compact s) : is_compact s⁻¹ :=
286
248
by { rw [← image_inv], exact hs.image continuous_inv }
287
249
250
+ variables (G)
251
+
252
+ /-- Inversion in a topological group as a homeomorphism. -/
253
+ @[to_additive " Negation in a topological group as a homeomorphism." ]
254
+ protected def homeomorph.inv (G : Type *) [topological_space G] [has_involutive_inv G]
255
+ [has_continuous_inv G] : G ≃ₜ G :=
256
+ { continuous_to_fun := continuous_inv,
257
+ continuous_inv_fun := continuous_inv,
258
+ .. equiv.inv G }
259
+
260
+ @[to_additive] lemma is_open_map_inv : is_open_map (has_inv.inv : G → G) :=
261
+ (homeomorph.inv _).is_open_map
262
+
263
+ @[to_additive] lemma is_closed_map_inv : is_closed_map (has_inv.inv : G → G) :=
264
+ (homeomorph.inv _).is_closed_map
265
+
266
+ variables {G}
267
+
268
+ @[to_additive] lemma is_open.inv (hs : is_open s) : is_open s⁻¹ := hs.preimage continuous_inv
269
+ @[to_additive] lemma is_closed.inv (hs : is_closed s) : is_closed s⁻¹ := hs.preimage continuous_inv
270
+ @[to_additive] lemma inv_closure : ∀ s : set G, (closure s)⁻¹ = closure s⁻¹ :=
271
+ (homeomorph.inv G).preimage_closure
272
+
273
+ end continuous_involutive_inv
274
+
288
275
section lattice_ops
289
276
290
277
variables {ι' : Sort *} [has_inv G] [has_inv H] {ts : set (topological_space G)}
@@ -487,13 +474,6 @@ instance [group α] [topological_group α] :
487
474
488
475
variable (G)
489
476
490
- /-- Inversion in a topological group as a homeomorphism. -/
491
- @[to_additive " Negation in a topological group as a homeomorphism." ]
492
- protected def homeomorph.inv : G ≃ₜ G :=
493
- { continuous_to_fun := continuous_inv,
494
- continuous_inv_fun := continuous_inv,
495
- .. equiv.inv G }
496
-
497
477
@[to_additive]
498
478
lemma nhds_one_symm : comap has_inv.inv (𝓝 (1 : G)) = 𝓝 (1 : G) :=
499
479
((homeomorph.inv G).comap_nhds_eq _).trans (congr_arg nhds one_inv)
518
498
519
499
variables {G}
520
500
521
- @[to_additive]
522
- lemma is_open.inv {s : set G} (hs : is_open s) : is_open s⁻¹ := hs.preimage continuous_inv
523
-
524
- @[to_additive]
525
- lemma is_closed.inv {s : set G} (hs : is_closed s) : is_closed s⁻¹ := hs.preimage continuous_inv
526
-
527
- @[to_additive]
528
- lemma inv_closure (s : set G) : (closure s)⁻¹ = closure s⁻¹ :=
529
- (homeomorph.inv G).preimage_closure s
530
-
531
- @[to_additive] lemma is_open.mul_closure {U : set G} (hU : is_open U) (s : set G) :
532
- U * closure s = U * s :=
533
- begin
534
- refine subset.antisymm _ (mul_subset_mul subset.rfl subset_closure),
535
- rintro _ ⟨a, b, ha, hb, rfl⟩,
536
- rw mem_closure_iff at hb,
537
- have hbU : b ∈ U⁻¹ * {a * b},
538
- from ⟨a⁻¹, a * b, set.inv_mem_inv.2 ha, rfl, inv_mul_cancel_left _ _⟩,
539
- rcases hb _ hU.inv.mul_right hbU with ⟨_, ⟨c, d, hc, (rfl : d = _), rfl⟩, hcs⟩,
540
- exact ⟨c⁻¹, _, hc, hcs, inv_mul_cancel_left _ _⟩
541
- end
542
-
543
- @[to_additive] lemma is_open.closure_mul {U : set G} (hU : is_open U) (s : set G) :
544
- closure s * U = s * U :=
545
- by rw [← inv_inv (closure s * U), set.mul_inv_rev, inv_closure, hU.inv.mul_closure,
546
- set.mul_inv_rev, inv_inv, inv_inv]
547
-
548
501
namespace subgroup
549
502
550
503
@[to_additive] instance (S : subgroup G) :
@@ -878,6 +831,12 @@ def homeomorph.div_left (x : G) : G ≃ₜ G :=
878
831
continuous_inv_fun := continuous_inv.mul continuous_const,
879
832
.. equiv.div_left x }
880
833
834
+ @[to_additive] lemma is_open_map_div_left (a : G) : is_open_map ((/) a) :=
835
+ (homeomorph.div_left _).is_open_map
836
+
837
+ @[to_additive] lemma is_closed_map_div_left (a : G) : is_closed_map ((/) a) :=
838
+ (homeomorph.div_left _).is_closed_map
839
+
881
840
/-- A version of `homeomorph.mul_right a⁻¹ b` that is defeq to `b / a`. -/
882
841
@[to_additive /-" A version of `homeomorph.add_right (-a) b` that is defeq to `b - a`. "-/ ,
883
842
simps {simp_rhs := tt}]
@@ -903,12 +862,77 @@ begin
903
862
exact ⟨λ h, by simpa using h.mul A, λ h, by simpa using h.div' A⟩
904
863
end
905
864
865
+ @[to_additive] lemma nhds_translation_div (x : G) : comap (/ x) (𝓝 1 ) = 𝓝 x :=
866
+ by simpa only [div_eq_mul_inv] using nhds_translation_mul_inv x
867
+
906
868
end div_in_topological_group
907
869
908
- @[to_additive]
909
- lemma nhds_translation_div [topological_space G] [group G] [topological_group G] (x : G) :
910
- comap (λy:G, y / x) (𝓝 1 ) = 𝓝 x :=
911
- by simpa only [div_eq_mul_inv] using nhds_translation_mul_inv x
870
+ /-!
871
+ ### Topological operations on pointwise sums and products
872
+
873
+ A few results about interior and closure of the pointwise addition/multiplication of sets in groups
874
+ with continuous addition/multiplication. See also `submonoid.top_closure_mul_self_eq` in
875
+ `topology.algebra.monoid`.
876
+ -/
877
+
878
+ section has_continuous_mul
879
+ variables [topological_space α] [group α] [has_continuous_mul α] {s t : set α}
880
+
881
+ @[to_additive] lemma is_open.mul_left (ht : is_open t) : is_open (s * t) :=
882
+ by { rw ←Union_mul_left_image, exact is_open_bUnion (λ a ha, is_open_map_mul_left a t ht) }
883
+
884
+ @[to_additive] lemma is_open.mul_right (hs : is_open s) : is_open (s * t) :=
885
+ by { rw ←Union_mul_right_image, exact is_open_bUnion (λ a ha, is_open_map_mul_right a s hs) }
886
+
887
+ @[to_additive] lemma subset_interior_mul_left : interior s * t ⊆ interior (s * t) :=
888
+ interior_maximal (set.mul_subset_mul_right interior_subset) is_open_interior.mul_right
889
+
890
+ @[to_additive] lemma subset_interior_mul_right : s * interior t ⊆ interior (s * t) :=
891
+ interior_maximal (set.mul_subset_mul_left interior_subset) is_open_interior.mul_left
892
+
893
+ @[to_additive] lemma subset_interior_mul : interior s * interior t ⊆ interior (s * t) :=
894
+ (set.mul_subset_mul_left interior_subset).trans subset_interior_mul_left
895
+
896
+ end has_continuous_mul
897
+
898
+ section topological_group
899
+ variables [topological_space α] [group α] [topological_group α] {s t : set α}
900
+
901
+ @[to_additive] lemma is_open.div_left (ht : is_open t) : is_open (s / t) :=
902
+ by { rw ←Union_div_left_image, exact is_open_bUnion (λ a ha, is_open_map_div_left a t ht) }
903
+
904
+ @[to_additive] lemma is_open.div_right (hs : is_open s) : is_open (s / t) :=
905
+ by { rw ←Union_div_right_image, exact is_open_bUnion (λ a ha, is_open_map_div_right a s hs) }
906
+
907
+ @[to_additive] lemma subset_interior_div_left : interior s / t ⊆ interior (s / t) :=
908
+ interior_maximal (div_subset_div_right interior_subset) is_open_interior.div_right
909
+
910
+ @[to_additive] lemma subset_interior_div_right : s / interior t ⊆ interior (s / t) :=
911
+ interior_maximal (div_subset_div_left interior_subset) is_open_interior.div_left
912
+
913
+ @[to_additive] lemma subset_interior_div : interior s / interior t ⊆ interior (s / t) :=
914
+ (div_subset_div_left interior_subset).trans subset_interior_div_left
915
+
916
+ @[to_additive] lemma is_open.mul_closure (hs : is_open s) (t : set α) : s * closure t = s * t :=
917
+ begin
918
+ refine (mul_subset_iff.2 $ λ a ha b hb, _).antisymm (mul_subset_mul_left subset_closure),
919
+ rw mem_closure_iff at hb,
920
+ have hbU : b ∈ s⁻¹ * {a * b} := ⟨a⁻¹, a * b, set.inv_mem_inv.2 ha, rfl, inv_mul_cancel_left _ _⟩,
921
+ obtain ⟨_, ⟨c, d, hc, (rfl : d = _), rfl⟩, hcs⟩ := hb _ hs.inv.mul_right hbU,
922
+ exact ⟨c⁻¹, _, hc, hcs, inv_mul_cancel_left _ _⟩,
923
+ end
924
+
925
+ @[to_additive] lemma is_open.closure_mul (ht : is_open t) (s : set α) : closure s * t = s * t :=
926
+ by rw [←inv_inv (closure s * t), set.mul_inv_rev, inv_closure, ht.inv.mul_closure, set.mul_inv_rev,
927
+ inv_inv, inv_inv]
928
+
929
+ @[to_additive] lemma is_open.div_closure (hs : is_open s) (t : set α) : s / closure t = s / t :=
930
+ by simp_rw [div_eq_mul_inv, inv_closure, hs.mul_closure]
931
+
932
+ @[to_additive] lemma is_open.closure_div (ht : is_open t) (s : set α) : closure s / t = s / t :=
933
+ by simp_rw [div_eq_mul_inv, ht.inv.closure_mul]
934
+
935
+ end topological_group
912
936
913
937
/-- additive group with a neighbourhood around 0.
914
938
Only used to construct a topology and uniform space.
0 commit comments