|
| 1 | +/- |
| 2 | +Copyright (c) 2021 Ashwin Iyengar. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Author: Kevin Buzzard, Johan Commelin, Ashwin Iyengar, Patrick Massot. |
| 5 | +-/ |
| 6 | +import topology.algebra.ring |
| 7 | +import topology.algebra.open_subgroup |
| 8 | +import data.set.basic |
| 9 | +import group_theory.subgroup |
| 10 | + |
| 11 | +/-! |
| 12 | +# Nonarchimedean Topology |
| 13 | +
|
| 14 | +In this file we set up the theory of nonarchimedean topological groups and rings. |
| 15 | +
|
| 16 | +A nonarchimedean group is a topological group whose topology admits a basis of |
| 17 | +open neighborhoods of the identity element in the group consisting of open subgroups. |
| 18 | +A nonarchimedean ring is a topological ring whose underlying topological (additive) |
| 19 | +group is nonarchimedean. |
| 20 | +
|
| 21 | +## Definitions |
| 22 | +
|
| 23 | +- `nonarchimedean_add_group`: nonarchimedean additive group. |
| 24 | +- `nonarchimedean_group`: nonarchimedean multiplicative group. |
| 25 | +- `nonarchimedean_ring`: nonarchimedean ring. |
| 26 | +
|
| 27 | +-/ |
| 28 | + |
| 29 | +/-- An topological additive group is nonarchimedean if every neighborhood of 0 |
| 30 | + contains an open subgroup. -/ |
| 31 | +class nonarchimedean_add_group (G : Type*) |
| 32 | + [add_group G] [topological_space G] extends topological_add_group G : Prop := |
| 33 | +(is_nonarchimedean : ∀ U ∈ nhds (0 : G), ∃ V : open_add_subgroup G, (V : set G) ⊆ U) |
| 34 | + |
| 35 | +/-- A topological group is nonarchimedean if every neighborhood of 1 contains an open subgroup. -/ |
| 36 | +@[to_additive] |
| 37 | +class nonarchimedean_group (G : Type*) |
| 38 | + [group G] [topological_space G] extends topological_group G : Prop := |
| 39 | +(is_nonarchimedean : ∀ U ∈ nhds (1 : G), ∃ V : open_subgroup G, (V : set G) ⊆ U) |
| 40 | + |
| 41 | +/-- An topological ring is nonarchimedean if its underlying topological additive |
| 42 | + group is nonarchimedean. -/ |
| 43 | +class nonarchimedean_ring (R : Type*) |
| 44 | + [ring R] [topological_space R] extends topological_ring R : Prop := |
| 45 | +(is_nonarchimedean : ∀ U ∈ nhds (0 : R), ∃ V : open_add_subgroup R, (V : set R) ⊆ U) |
| 46 | + |
| 47 | +/-- Every nonarchimedean ring is naturally a nonarchimedean additive group. -/ |
| 48 | +@[priority 100] -- see Note [lower instance priority] |
| 49 | +instance nonarchimedean_ring.to_nonarchimedean_add_group |
| 50 | + (R : Type*) [ring R] [topological_space R] [t: nonarchimedean_ring R] : |
| 51 | +nonarchimedean_add_group R := {..t} |
| 52 | + |
| 53 | +namespace nonarchimedean_group |
| 54 | + |
| 55 | +variables {G : Type*} [group G] [topological_space G] [nonarchimedean_group G] |
| 56 | +variables {H : Type*} [group H] [topological_space H] [topological_group H] |
| 57 | +variables {K : Type*} [group K] [topological_space K] [nonarchimedean_group K] |
| 58 | + |
| 59 | +/-- If a topological group embeds into a nonarchimedean group, then it |
| 60 | + is nonarchimedean. -/ |
| 61 | +@[to_additive nonarchimedean_add_group.nonarchimedean_of_emb] |
| 62 | +lemma nonarchimedean_of_emb (f : G →* H) (emb : open_embedding f) : nonarchimedean_group H := |
| 63 | +{ is_nonarchimedean := λ U hU, have h₁ : (f ⁻¹' U) ∈ nhds (1 : G), from |
| 64 | + by {apply emb.continuous.tendsto, rwa is_group_hom.map_one f}, |
| 65 | + let ⟨V, hV⟩ := is_nonarchimedean (f ⁻¹' U) h₁ in |
| 66 | + ⟨{is_open' := emb.is_open_map _ V.is_open, ..subgroup.map f V}, |
| 67 | + set.image_subset_iff.2 hV⟩ } |
| 68 | + |
| 69 | +/-- An open neighborhood of the identity in the cartesian product of two nonarchimedean groups |
| 70 | + contains the cartesian product of an open neighborhood in each group. -/ |
| 71 | +@[to_additive nonarchimedean_add_group.prod_subset] |
| 72 | +lemma prod_subset {U} (hU : U ∈ nhds (1 : G × K)) : |
| 73 | + ∃ (V : open_subgroup G) (W : open_subgroup K), (V : set G).prod (W : set K) ⊆ U := |
| 74 | +begin |
| 75 | + erw [nhds_prod_eq, filter.mem_prod_iff] at hU, |
| 76 | + rcases hU with ⟨U₁, hU₁, U₂, hU₂, h⟩, |
| 77 | + cases is_nonarchimedean _ hU₁ with V hV, |
| 78 | + cases is_nonarchimedean _ hU₂ with W hW, |
| 79 | + use V, use W, |
| 80 | + rw set.prod_subset_iff, |
| 81 | + intros x hX y hY, |
| 82 | + exact set.subset.trans (set.prod_mono hV hW) h (set.mem_sep hX hY), |
| 83 | +end |
| 84 | + |
| 85 | +/-- An open neighborhood of the identity in the cartesian square of a nonarchimedean group |
| 86 | + contains the cartesian square of an open neighborhood in the group. -/ |
| 87 | +@[to_additive nonarchimedean_add_group.prod_self_subset] |
| 88 | +lemma prod_self_subset {U} (hU : U ∈ nhds (1 : G × G)) : |
| 89 | + ∃ (V : open_subgroup G), (V : set G).prod (V : set G) ⊆ U := |
| 90 | +let ⟨V, W, h⟩ := prod_subset hU in |
| 91 | + ⟨V ⊓ W, by {refine set.subset.trans (set.prod_mono _ _) ‹_›; simp}⟩ |
| 92 | + |
| 93 | +/-- The cartesian product of two nonarchimedean groups is nonarchimedean. -/ |
| 94 | +@[to_additive] |
| 95 | +instance : nonarchimedean_group (G × K) := |
| 96 | +{ is_nonarchimedean := λ U hU, let ⟨V, W, h⟩ := prod_subset hU in ⟨V.prod W, ‹_›⟩ } |
| 97 | + |
| 98 | +end nonarchimedean_group |
| 99 | + |
| 100 | +namespace nonarchimedean_ring |
| 101 | + |
| 102 | +open nonarchimedean_ring |
| 103 | +open nonarchimedean_add_group |
| 104 | + |
| 105 | +variables {R S : Type*} |
| 106 | +variables [ring R] [topological_space R] [nonarchimedean_ring R] |
| 107 | +variables [ring S] [topological_space S] [nonarchimedean_ring S] |
| 108 | + |
| 109 | +/-- The cartesian product of two nonarchimedean rings is nonarchimedean. -/ |
| 110 | +instance : nonarchimedean_ring (R × S) := |
| 111 | +{ is_nonarchimedean := nonarchimedean_add_group.is_nonarchimedean } |
| 112 | + |
| 113 | +/-- Given an open subgroup `U` and an element `r` of a nonarchimedean ring, there is an open |
| 114 | + subgroup `V` such that `r • V` is contained in `U`. -/ |
| 115 | +lemma left_mul_subset (U : open_add_subgroup R) (r : R) : |
| 116 | + ∃ V : open_add_subgroup R, r • (V : set R) ⊆ U := |
| 117 | +⟨U.comap (add_monoid_hom.mul_left r) (continuous_mul_left r), |
| 118 | + (U : set R).image_preimage_subset _⟩ |
| 119 | + |
| 120 | +/-- An open subgroup of a nonarchimedean ring contains the square of another one. -/ |
| 121 | +lemma mul_subset (U : open_add_subgroup R) : |
| 122 | + ∃ V : open_add_subgroup R, (V : set R) * V ⊆ U := |
| 123 | +let ⟨V, H⟩ := prod_self_subset (mem_nhds_sets (is_open.preimage continuous_mul U.is_open) |
| 124 | + begin |
| 125 | + simpa only [set.mem_preimage, open_add_subgroup.mem_coe, prod.snd_zero, mul_zero] |
| 126 | + using U.zero_mem, |
| 127 | + end) in |
| 128 | +begin |
| 129 | + use V, |
| 130 | + rintros v ⟨a, b, ha, hb, hv⟩, |
| 131 | + have hy := H (set.mk_mem_prod ha hb), |
| 132 | + simp only [set.mem_preimage, open_add_subgroup.mem_coe] at hy, |
| 133 | + rwa hv at hy |
| 134 | +end |
| 135 | + |
| 136 | +end nonarchimedean_ring |
0 commit comments