From ede707f91f2c8671fbd21faff3c08a158161d039 Mon Sep 17 00:00:00 2001 From: Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com> Date: Wed, 2 Feb 2022 04:01:23 -0500 Subject: [PATCH] test compile --- src/topology/algebra/group.lean | 36 +++++++++++++++++++++ src/topology/algebra/group_completion.lean | 2 +- src/topology/compact_open.lean | 37 ++++++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) diff --git a/src/topology/algebra/group.lean b/src/topology/algebra/group.lean index 820396aaac8de..650b6c4358fc5 100644 --- a/src/topology/algebra/group.lean +++ b/src/topology/algebra/group.lean @@ -8,6 +8,8 @@ import order.filter.pointwise import topology.algebra.monoid import topology.homeomorph import topology.compacts +import topology.algebra.mul_action +import topology.compact_open /-! # Theory of topological groups @@ -769,6 +771,40 @@ instance multiplicative.topological_group {G} [h : topological_space G] [add_group G] [topological_add_group G] : @topological_group (multiplicative G) h _ := { continuous_inv := @continuous_neg G _ _ _ } +section quotient +variables [group G] [topological_space G] [topological_group G] {Γ : subgroup G} + +@[to_additive] +instance quotient_group.has_continuous_smul₂ : has_continuous_smul₂ G (G ⧸ Γ) := +{ continuous_smul₂ := λ g₀, begin + apply continuous_coinduced_dom, + change continuous (λ g : G, quotient_group.mk (g₀ * g)), + exact continuous_coinduced_rng.comp (continuous_mul_left g₀), + end } + +@[to_additive] +lemma quotient_group.continuous_smul₁ (x : G ⧸ Γ) : continuous (λ g : G, g • x) := +begin + obtain ⟨g₀, rfl⟩ : ∃ g₀, quotient_group.mk g₀ = x, + { exact @quotient.exists_rep _ (quotient_group.left_rel Γ) x }, + change continuous (λ g, quotient_group.mk (g * g₀)), + exact continuous_coinduced_rng.comp (continuous_mul_right g₀) +end + +@[to_additive] +instance quotient_group.has_continuous_smul [locally_compact_space G] : + has_continuous_smul G (G ⧸ Γ) := +{ continuous_smul := begin + let F : G × G ⧸ Γ → G ⧸ Γ := λ p, p.1 • p.2, + change continuous F, + have H : continuous (F ∘ (λ p : G × G, (p.1, quotient_group.mk p.2))), + { change continuous (λ p : G × G, quotient_group.mk (p.1 * p.2)), + refine continuous_coinduced_rng.comp continuous_mul }, + exact quotient_map.continuous_lift_prod_right quotient_map_quotient_mk H, + end } + +end quotient + namespace units variables [monoid α] [topological_space α] [has_continuous_mul α] [monoid β] [topological_space β] diff --git a/src/topology/algebra/group_completion.lean b/src/topology/algebra/group_completion.lean index 541fa3c33a086..cccfe7a9ab6d8 100644 --- a/src/topology/algebra/group_completion.lean +++ b/src/topology/algebra/group_completion.lean @@ -85,7 +85,7 @@ instance : add_monoid (completion α) := instance : sub_neg_monoid (completion α) := { sub_eq_add_neg := λ a b, completion.induction_on₂ a b (is_closed_eq (continuous_map₂ continuous_fst continuous_snd) - (continuous_map₂ continuous_fst (continuous_map.comp continuous_snd))) + (continuous_map₂ continuous_fst (completion.continuous_map.comp continuous_snd))) (λ a b, by exact_mod_cast congr_arg coe (sub_eq_add_neg a b)), .. completion.add_monoid, .. completion.has_neg, .. completion.has_sub } diff --git a/src/topology/compact_open.lean b/src/topology/compact_open.lean index f5289af0547cd..134079539294a 100644 --- a/src/topology/compact_open.lean +++ b/src/topology/compact_open.lean @@ -7,6 +7,7 @@ import tactic.tidy import topology.continuous_function.basic import topology.homeomorph import topology.subset_properties +import topology.maps /-! # The compact-open topology @@ -336,3 +337,39 @@ rfl rfl end homeomorph + +section quotient_map + +variables {X₀ X Y Z : Type*} [topological_space X₀] [topological_space X] + [topological_space Y] [topological_space Z] [locally_compact_space Y] {f : X₀ → X} + +lemma quotient_map.continuous_lift_prod_left (hf : quotient_map f) {g : X × Y → Z} + (hg : continuous (λ p : X₀ × Y, g (f p.1, p.2))) : continuous g := +begin + let Gf : C(X₀, C(Y, Z)) := continuous_map.curry ⟨_, hg⟩, + have h : ∀ x : X, continuous (λ y, g (x, y)), + { intros x, + obtain ⟨x₀, rfl⟩ := hf.surjective x, + exact (Gf x₀).continuous }, + let G : X → C(Y, Z) := λ x, ⟨_, h x⟩, + have : continuous G, + { rw hf.continuous_iff, + exact Gf.continuous }, + convert continuous_map.continuous_uncurry_of_continuous ⟨G, this⟩, + ext x, + cases x, + refl, +end + +lemma quotient_map.continuous_lift_prod_right (hf : quotient_map f) {g : Y × X → Z} + (hg : continuous (λ p : Y × X₀, g (p.1, f p.2))) : continuous g := +begin + have : continuous (λ p : X₀ × Y, g ((prod.swap p).1, f (prod.swap p).2)), + { exact hg.comp continuous_swap }, + have : continuous (λ p : X₀ × Y, (g ∘ prod.swap) (f p.1, p.2)) := this, + convert (hf.continuous_lift_prod_left this).comp continuous_swap, + ext x, + simp, +end + +end quotient_map