@@ -165,33 +165,29 @@ lemma subset_interior_mul : interior s * interior t ⊆ interior (s * t) :=
165165
166166end pointwise
167167
168- section topological_group
169-
170168/-!
171- ### Topological groups
172-
173- A topological group is a group in which the multiplication and inversion operations are
174- continuous. Topological additive groups are defined in the same way. Equivalently, we can require
175- that the division operation `λ x y, x * y⁻¹` (resp., subtraction) is continuous.
169+ ### `has_continuous_inv` and `has_continuous_neg`
176170-/
177171
178- /-- A topological (additive) group is a group in which the addition and negation operations are
179- continuous. -/
180- class topological_add_group (G : Type u) [topological_space G] [add_group G]
181- extends has_continuous_add G : Prop :=
182- (continuous_neg : continuous (λa: G, -a))
172+ /-- Basic hypothesis to talk about a topological additive group. A topological additive group
173+ over `M`, for example, is obtained by requiring the instances `add_group M` and
174+ `has_continuous_add M` and `has_continuous_neg M`. -/
175+ class has_continuous_neg (G : Type u) [topological_space G] [has_neg G] : Prop :=
176+ (continuous_neg : continuous (λ a : G, -a))
183177
184- /-- A topological group is a group in which the multiplication and inversion operations are
185- continuous. -/
178+ /-- Basic hypothesis to talk about a topological group. A topological group over `M`, for example,
179+ is obtained by requiring the instances `group M` and `has_continuous_mul M` and
180+ `has_continuous_inv M`. -/
186181@[to_additive]
187- class topological_group (G : Type *) [topological_space G] [group G]
188- extends has_continuous_mul G : Prop :=
189- (continuous_inv : continuous (has_inv.inv : G → G))
182+ class has_continuous_inv (G : Type u) [topological_space G] [has_inv G] : Prop :=
183+ (continuous_inv : continuous (λ a : G, a⁻¹))
190184
191- variables [topological_space G] [group G] [topological_group G]
185+ export has_continuous_inv (continuous_inv)
186+ export has_continuous_neg (continuous_neg)
192187
193- export topological_group (continuous_inv)
194- export topological_add_group (continuous_neg)
188+ section continuous_inv
189+
190+ variables [topological_space G] [has_inv G] [has_continuous_inv G]
195191
196192@[to_additive]
197193lemma continuous_on_inv {s : set G} : continuous_on has_inv.inv s :=
@@ -209,11 +205,6 @@ continuous_inv.continuous_at
209205lemma tendsto_inv (a : G) : tendsto has_inv.inv (𝓝 a) (𝓝 (a⁻¹)) :=
210206continuous_at_inv
211207
212- /-- Conjugation in a topological group is continuous.-/
213- @[to_additive " Conjugation in a topological additive group is continuous." ]
214- lemma topological_group.continuous_conj (g : G) : continuous (λ (h : G), g * h * g⁻¹) :=
215- (continuous_mul_right g⁻¹).comp (continuous_mul_left g)
216-
217208/-- If a function converges to a value in a multiplicative topological group, then its inverse
218209converges to the inverse of this value. For the version in normed fields assuming additionally
219210that the limit is nonzero, use `tendsto.inv'`. -/
@@ -242,9 +233,140 @@ lemma continuous_within_at.inv (hf : continuous_within_at f s x) :
242233hf.inv
243234
244235@[to_additive]
245- lemma is_compact.inv {s : set G} (hs : is_compact s) : is_compact (s⁻¹) :=
236+ instance [topological_space H] [has_inv H] [has_continuous_inv H] : has_continuous_inv (G × H) :=
237+ ⟨(continuous_inv.comp continuous_fst).prod_mk (continuous_inv.comp continuous_snd)⟩
238+
239+ variable {ι : Type *}
240+
241+ @[to_additive]
242+ instance pi.has_continuous_inv {C : ι → Type *} [∀ i, topological_space (C i)]
243+ [∀ i, has_inv (C i)] [∀ i, has_continuous_inv (C i)] : has_continuous_inv (Π i, C i) :=
244+ { continuous_inv := continuous_pi (λ i, continuous.inv (continuous_apply i)) }
245+
246+ /-- A version of `pi.has_continuous_inv` for non-dependent functions. It is needed because sometimes
247+ Lean fails to use `pi.has_continuous_inv` for non-dependent functions. -/
248+ @[to_additive " A version of `pi.has_continuous_neg` for non-dependent functions. It is needed
249+ because sometimes Lean fails to use `pi.has_continuous_neg` for non-dependent functions." ]
250+ instance pi.has_continuous_inv' : has_continuous_inv (ι → G) :=
251+ pi.has_continuous_inv
252+
253+ @[priority 100 , to_additive]
254+ instance has_continuous_inv_of_discrete_topology [topological_space H]
255+ [has_inv H] [discrete_topology H] : has_continuous_inv H :=
256+ ⟨continuous_of_discrete_topology⟩
257+
258+ section pointwise_limits
259+
260+ variables (G₁ G₂ : Type *) [topological_space G₂] [t2_space G₂]
261+
262+ @[to_additive] lemma is_closed_set_of_map_inv [has_inv G₁] [has_inv G₂] [has_continuous_inv G₂] :
263+ is_closed {f : G₁ → G₂ | ∀ x, f x⁻¹ = (f x)⁻¹ } :=
264+ begin
265+ simp only [set_of_forall],
266+ refine is_closed_Inter (λ i, is_closed_eq (continuous_apply _) (continuous_apply _).inv),
267+ end
268+
269+ end pointwise_limits
270+
271+ instance additive.has_continuous_neg [h : topological_space H] [has_inv H]
272+ [has_continuous_inv H] : @has_continuous_neg (additive H) h _ :=
273+ { continuous_neg := @continuous_inv H _ _ _ }
274+
275+ instance multiplicative.has_continuous_inv [h : topological_space H] [has_neg H]
276+ [has_continuous_neg H] : @has_continuous_inv (multiplicative H) h _ :=
277+ { continuous_inv := @continuous_neg H _ _ _ }
278+
279+ end continuous_inv
280+
281+ @[to_additive]
282+ lemma is_compact.inv [topological_space G] [has_involutive_inv G] [has_continuous_inv G]
283+ {s : set G} (hs : is_compact s) : is_compact (s⁻¹) :=
246284by { rw [← image_inv], exact hs.image continuous_inv }
247285
286+ section lattice_ops
287+
288+ variables {ι' : Sort *} [has_inv G] [has_inv H] {ts : set (topological_space G)}
289+ (h : Π t ∈ ts, @has_continuous_inv G t _) {ts' : ι' → topological_space G}
290+ (h' : Π i, @has_continuous_inv G (ts' i) _) {t₁ t₂ : topological_space G}
291+ (h₁ : @has_continuous_inv G t₁ _) (h₂ : @has_continuous_inv G t₂ _)
292+ {t : topological_space H} [has_continuous_inv H]
293+
294+
295+ @[to_additive] lemma has_continuous_inv_Inf :
296+ @has_continuous_inv G (Inf ts) _ :=
297+ { continuous_inv := continuous_Inf_rng (λ t ht, continuous_Inf_dom ht
298+ (@has_continuous_inv.continuous_inv G t _ (h t ht))) }
299+
300+ include h'
301+
302+ @[to_additive] lemma has_continuous_inv_infi :
303+ @has_continuous_inv G (⨅ i, ts' i) _ :=
304+ by {rw ← Inf_range, exact has_continuous_inv_Inf (set.forall_range_iff.mpr h')}
305+
306+ omit h'
307+
308+ include h₁ h₂
309+
310+ @[to_additive] lemma has_continuous_inv_inf :
311+ @has_continuous_inv G (t₁ ⊓ t₂) _ :=
312+ by {rw inf_eq_infi, refine has_continuous_inv_infi (λ b, _), cases b; assumption}
313+
314+ end lattice_ops
315+
316+ section topological_group
317+
318+ /-!
319+ ### Topological groups
320+
321+ A topological group is a group in which the multiplication and inversion operations are
322+ continuous. Topological additive groups are defined in the same way. Equivalently, we can require
323+ that the division operation `λ x y, x * y⁻¹` (resp., subtraction) is continuous.
324+ -/
325+
326+ /-- A topological (additive) group is a group in which the addition and negation operations are
327+ continuous. -/
328+ class topological_add_group (G : Type u) [topological_space G] [add_group G]
329+ extends has_continuous_add G, has_continuous_neg G : Prop
330+
331+ /-- A topological group is a group in which the multiplication and inversion operations are
332+ continuous. -/
333+ @[to_additive]
334+ class topological_group (G : Type *) [topological_space G] [group G]
335+ extends has_continuous_mul G, has_continuous_inv G : Prop
336+
337+ section conj
338+
339+ /-- we slightly weaken the type class assumptions here so that it will also apply to `ennreal`, but
340+ we nevertheless leave it in the `topological_group` namespace. -/
341+
342+ variables [topological_space G] [has_inv G] [has_mul G]
343+ [has_continuous_mul G]
344+
345+ /-- Conjugation is jointly continuous on `G × G` when both `mul` and `inv` are continuous. -/
346+ @[to_additive " Conjugation is jointly continuous on `G × G` when both `mul` and `inv` are
347+ continuous." ]
348+ lemma topological_group.continuous_conj_prod [has_continuous_inv G] :
349+ continuous (λ g : G × G, g.fst * g.snd * g.fst⁻¹) :=
350+ continuous_mul.mul (continuous_inv.comp continuous_fst)
351+
352+ /-- Conjugation by a fixed element is continuous when `mul` is continuous. -/
353+ @[to_additive " Conjugation by a fixed element is continuous when `add` is continuous." ]
354+ lemma topological_group.continuous_conj (g : G) : continuous (λ (h : G), g * h * g⁻¹) :=
355+ (continuous_mul_right g⁻¹).comp (continuous_mul_left g)
356+
357+ /-- Conjugation acting on fixed element of the group is continuous when both `mul` and
358+ `inv` are continuous. -/
359+ @[to_additive " Conjugation acting on fixed element of the additive group is continuous when both
360+ `add` and `neg` are continuous." ]
361+ lemma topological_group.continuous_conj' [has_continuous_inv G]
362+ (h : G) : continuous (λ (g : G), g * h * g⁻¹) :=
363+ (continuous_mul_right h).mul continuous_inv
364+
365+ end conj
366+
367+ variables [topological_space G] [group G] [topological_group G]
368+ [topological_space α] {f : α → G} {s : set α} {x : α}
369+
248370section zpow
249371
250372@[continuity, to_additive]
@@ -997,8 +1119,9 @@ variables {ι : Sort*} [group G] [group H] {ts : set (topological_space G)}
9971119
9981120@[to_additive] lemma topological_group_Inf :
9991121 @topological_group G (Inf ts) _ :=
1000- { continuous_inv := continuous_Inf_rng (λ t ht, continuous_Inf_dom ht
1001- (@topological_group.continuous_inv G t _ (h t ht))),
1122+ { continuous_inv := @has_continuous_inv.continuous_inv G (Inf ts) _
1123+ (@has_continuous_inv_Inf _ _ _
1124+ (λ t ht, @topological_group.to_has_continuous_inv G t _ (h t ht))),
10021125 continuous_mul := @has_continuous_mul.continuous_mul G (Inf ts) _
10031126 (@has_continuous_mul_Inf _ _ _
10041127 (λ t ht, @topological_group.to_has_continuous_mul G t _ (h t ht))) }
0 commit comments