|
| 1 | +/- |
| 2 | +Copyright (c) 2024 Yoh Tanimoto. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Yoh Tanimoto |
| 5 | +-/ |
| 6 | +import Mathlib.Analysis.Normed.Group.Hom |
| 7 | +import Mathlib.Topology.Algebra.SeparationQuotient.Hom |
| 8 | + |
| 9 | +/-! |
| 10 | +# Lifts of maps to separation quotients of seminormed groups |
| 11 | +
|
| 12 | +For any `SeminormedAddCommGroup M`, a `NormedAddCommGroup` instance has been defined in |
| 13 | +`Mathlib.Analysis.Normed.Group.Uniform`. |
| 14 | +
|
| 15 | +## Main definitions |
| 16 | +
|
| 17 | +We use `M` and `N` to denote seminormed groups. |
| 18 | +All the following definitions are in the `SeparationQuotient` namespace. Hence we can access |
| 19 | +`SeparationQuotient.normedMk` as `normedMk`. |
| 20 | +
|
| 21 | +* `normedMk` : the normed group hom from `M` to `SeparationQuotient M`. |
| 22 | +
|
| 23 | +* `liftNormedAddGroupHom` : |
| 24 | +Any bounded group hom `f : M → N` such that `∀ x, ‖x‖ = 0 → f x = 0` descends to a bounded group hom |
| 25 | +`SeparationQuotient M → N`. Here, `(f : NormedAddGroupHom M N)`, `(hf : ∀ x : M, ‖x‖ = 0 → f x = 0)` |
| 26 | +and `liftNormedAddGroupHom f hf : NormedAddGroupHom (SeparationQuotient M) N` such that |
| 27 | +`liftNormedAddGroupHom f hf (mk x) = f x`. |
| 28 | +
|
| 29 | +## Main results |
| 30 | +
|
| 31 | +* `norm_normedMk_eq_one : the operator norm of the projection is `1` if the subspace is not `⊤`. |
| 32 | +
|
| 33 | +* `norm_liftNormedAddGroupHom_le` : `‖liftNormedAddGroupHom f hf‖ ≤ ‖f‖`. |
| 34 | +-/ |
| 35 | + |
| 36 | +section |
| 37 | + |
| 38 | +open SeparationQuotient NNReal |
| 39 | + |
| 40 | +variable {M N : Type*} [SeminormedAddCommGroup M] [SeminormedAddCommGroup N] |
| 41 | + |
| 42 | +namespace SeparationQuotient |
| 43 | + |
| 44 | +open NormedAddGroupHom |
| 45 | + |
| 46 | +/-- The morphism from a seminormed group to the quotient by the inseparable setoid. -/ |
| 47 | +@[simps] |
| 48 | +noncomputable def normedMk : NormedAddGroupHom M (SeparationQuotient M) where |
| 49 | + __ := mkAddMonoidHom |
| 50 | + bound' := ⟨1, by simp⟩ |
| 51 | + |
| 52 | +/-- The operator norm of the projection is at most `1`. -/ |
| 53 | +theorem norm_normedMk_le : ‖normedMk (M := M)‖ ≤ 1 := |
| 54 | + NormedAddGroupHom.opNorm_le_bound _ zero_le_one fun m => by simp |
| 55 | + |
| 56 | +lemma apply_eq_apply_of_inseparable {F : Type*} [FunLike F M N] [AddMonoidHomClass F M N] (f : F) |
| 57 | + (hf : ∀ x, ‖x‖ = 0 → f x = 0) : ∀ x y, Inseparable x y → f x = f y := |
| 58 | + fun x y h ↦ eq_of_sub_eq_zero <| by |
| 59 | + rw [← map_sub] |
| 60 | + rw [Metric.inseparable_iff, dist_eq_norm] at h |
| 61 | + exact hf (x - y) h |
| 62 | + |
| 63 | +/-- The lift of a group hom to the separation quotient as a group hom. -/ |
| 64 | +@[simps] |
| 65 | +noncomputable def liftNormedAddGroupHom (f : NormedAddGroupHom M N) |
| 66 | + (hf : ∀ x, ‖x‖ = 0 → f x = 0) : NormedAddGroupHom (SeparationQuotient M) N where |
| 67 | + toFun := SeparationQuotient.liftContinuousAddMonoidHom f <| apply_eq_apply_of_inseparable f hf |
| 68 | + map_add' v₁ v₂ := map_add .. |
| 69 | + bound' := by |
| 70 | + refine ⟨‖f‖, fun v ↦ ?_⟩ |
| 71 | + obtain ⟨v, rfl⟩ := surjective_mk v |
| 72 | + exact le_opNorm f v |
| 73 | + |
| 74 | +theorem norm_liftNormedAddGroupHom_apply_le (f : NormedAddGroupHom M N) |
| 75 | + (hf : ∀ x, ‖x‖ = 0 → f x = 0) (x : SeparationQuotient M) : |
| 76 | + ‖liftNormedAddGroupHom f hf x‖ ≤ ‖f‖ * ‖x‖ := by |
| 77 | + obtain ⟨x, rfl⟩ := surjective_mk x |
| 78 | + exact le_opNorm f x |
| 79 | + |
| 80 | +/-- The equivalence between `NormedAddGroupHom M N` vanishing on the inseparable setoid and |
| 81 | +`NormedAddGroupHom (SeparationQuotient M) N`. -/ |
| 82 | +@[simps] |
| 83 | +noncomputable def liftNormedAddGroupHomEquiv {N : Type*} [SeminormedAddCommGroup N] : |
| 84 | + {f : NormedAddGroupHom M N // ∀ x, ‖x‖ = 0 → f x = 0} ≃ |
| 85 | + NormedAddGroupHom (SeparationQuotient M) N where |
| 86 | + toFun f := liftNormedAddGroupHom f f.prop |
| 87 | + invFun g := ⟨g.comp normedMk, by |
| 88 | + intro x hx |
| 89 | + rw [← norm_mk, norm_eq_zero] at hx |
| 90 | + simp [hx]⟩ |
| 91 | + left_inv _ := rfl |
| 92 | + right_inv _ := by |
| 93 | + ext x |
| 94 | + obtain ⟨x, rfl⟩ := surjective_mk x |
| 95 | + rfl |
| 96 | + |
| 97 | +/-- For a norm-continuous group homomorphism `f`, its lift to the separation quotient |
| 98 | +is bounded by the norm of `f`-/ |
| 99 | +theorem norm_liftNormedAddGroupHom_le {N : Type*} [SeminormedAddCommGroup N] |
| 100 | + (f : NormedAddGroupHom M N) (hf : ∀ s, ‖s‖ = 0 → f s = 0) : |
| 101 | + ‖liftNormedAddGroupHom f hf‖ ≤ ‖f‖ := |
| 102 | + NormedAddGroupHom.opNorm_le_bound _ (norm_nonneg f) (norm_liftNormedAddGroupHom_apply_le f hf) |
| 103 | + |
| 104 | +theorem liftNormedAddGroupHom_norm_le {N : Type*} [SeminormedAddCommGroup N] |
| 105 | + (f : NormedAddGroupHom M N) (hf : ∀ s, ‖s‖ = 0 → f s = 0) {c : ℝ≥0} (fb : ‖f‖ ≤ c) : |
| 106 | + ‖liftNormedAddGroupHom f hf‖ ≤ c := |
| 107 | + (norm_liftNormedAddGroupHom_le f hf).trans fb |
| 108 | + |
| 109 | +theorem liftNormedAddGroupHom_normNoninc {N : Type*} [SeminormedAddCommGroup N] |
| 110 | + (f : NormedAddGroupHom M N) (hf : ∀ s, ‖s‖ = 0 → f s = 0) (fb : f.NormNoninc) : |
| 111 | + (liftNormedAddGroupHom f hf).NormNoninc := fun x => by |
| 112 | + have fb' : ‖f‖ ≤ 1 := NormedAddGroupHom.NormNoninc.normNoninc_iff_norm_le_one.mp fb |
| 113 | + exact le_trans (norm_liftNormedAddGroupHom_apply_le f hf x) |
| 114 | + (mul_le_of_le_one_left (norm_nonneg x) fb') |
| 115 | + |
| 116 | +/-- The operator norm of the projection is `1` if there is an element whose norm is different from |
| 117 | +`0`. -/ |
| 118 | +theorem norm_normedMk_eq_one (h : ∃ x : M, ‖x‖ ≠ 0) : |
| 119 | + ‖normedMk (M := M)‖ = 1 := by |
| 120 | + apply NormedAddGroupHom.opNorm_eq_of_bounds _ zero_le_one |
| 121 | + · simpa only [normedMk_apply, one_mul] using fun _ ↦ le_rfl |
| 122 | + · intro N _ hle |
| 123 | + obtain ⟨x, _⟩ := h |
| 124 | + exact one_le_of_le_mul_right₀ (by positivity) (hle x) |
| 125 | + |
| 126 | +/-- The projection is `0` if and only if all the elements have norm `0`. -/ |
| 127 | +theorem normedMk_eq_zero_iff : normedMk (M := M) = 0 ↔ ∀ (x : M), ‖x‖ = 0 := by |
| 128 | + constructor |
| 129 | + · intro h x |
| 130 | + rw [SeparationQuotient.mk_eq_zero_iff.mp] |
| 131 | + have : normedMk x = 0 := by |
| 132 | + rw [h] |
| 133 | + simp only [zero_apply] |
| 134 | + rw [← this] |
| 135 | + simp |
| 136 | + · intro h |
| 137 | + ext x |
| 138 | + simpa [← norm_eq_zero] using h x |
| 139 | + |
| 140 | +end SeparationQuotient |
| 141 | + |
| 142 | +end |
0 commit comments