@@ -81,28 +81,18 @@ def seminormed_add_comm_group.of_add_dist' [has_norm E] [add_comm_group E] [pseu
81
81
{ rw [sub_eq_add_neg, ← add_right_neg y], apply H2 }
82
82
end }
83
83
84
- /-- A seminormed group can be built from a seminorm that satisfies algebraic properties. This is
85
- formalised in this structure. -/
86
- structure seminormed_add_comm_group.core (E : Type *) [add_comm_group E] [has_norm E] : Prop :=
87
- (norm_zero : ∥(0 : E)∥ = 0 )
88
- (triangle : ∀ x y : E, ∥x + y∥ ≤ ∥x∥ + ∥y∥)
89
- (norm_neg : ∀ x : E, ∥-x∥ = ∥x∥)
90
-
91
- /-- Constructing a seminormed group from core properties of a seminorm, i.e., registering the
92
- pseudodistance and the pseudometric space structure from the seminorm properties. Note that in most
93
- cases this instance creates bad definitional equalities (e.g., it does not take into account
94
- a possibly existing `uniform_space` instance on `E`). -/
95
- def seminormed_add_comm_group.of_core (E : Type *) [add_comm_group E] [has_norm E]
96
- (C : seminormed_add_comm_group.core E) : seminormed_add_comm_group E :=
97
- { dist := λ x y, ∥x - y∥,
98
- dist_eq := assume x y, by refl,
99
- dist_self := assume x, by simp [C.norm_zero],
100
- dist_triangle := assume x y z,
101
- calc ∥x - z∥ = ∥x - y + (y - z)∥ : by rw sub_add_sub_cancel
102
- ... ≤ ∥x - y∥ + ∥y - z∥ : C.triangle _ _,
103
- dist_comm := assume x y,
104
- calc ∥x - y∥ = ∥ -(y - x)∥ : by simp
105
- ... = ∥y - x∥ : by { rw [C.norm_neg] } }
84
+ /-- Construct a seminormed group from a seminorm, i.e., registering the pseudodistance and the
85
+ pseudometric space structure from the seminorm properties. Note that in most cases this instance
86
+ creates bad definitional equalities (e.g., it does not take into account a possibly existing
87
+ `uniform_space` instance on `E`). -/
88
+ def add_group_seminorm.to_seminormed_add_comm_group [add_comm_group E] (f : add_group_seminorm E) :
89
+ seminormed_add_comm_group E :=
90
+ { dist := λ x y, f (x - y),
91
+ norm := f,
92
+ dist_eq := λ x y, rfl,
93
+ dist_self := λ x, by simp only [sub_self, map_zero],
94
+ dist_triangle := le_map_sub_add_map_sub f,
95
+ dist_comm := map_sub_rev f }
106
96
107
97
instance : normed_add_comm_group punit :=
108
98
{ norm := function.const _ 0 ,
@@ -1147,32 +1137,14 @@ def normed_add_comm_group.of_add_dist [has_norm E] [add_comm_group E] [metric_sp
1147
1137
{ have := H2 (x-y) 0 y, rwa [sub_add_cancel, zero_add] at this }
1148
1138
end }
1149
1139
1150
- /-- A normed group can be built from a norm that satisfies algebraic properties. This is
1151
- formalised in this structure. -/
1152
- structure normed_add_comm_group.core (E : Type *) [add_comm_group E] [has_norm E] : Prop :=
1153
- (norm_eq_zero_iff : ∀ x : E, ∥x∥ = 0 ↔ x = 0 )
1154
- (triangle : ∀ x y : E, ∥x + y∥ ≤ ∥x∥ + ∥y∥)
1155
- (norm_neg : ∀ x : E, ∥-x∥ = ∥x∥)
1156
-
1157
- /-- The `seminormed_add_comm_group.core` induced by a `normed_add_comm_group.core`. -/
1158
- lemma normed_add_comm_group.core.to_seminormed_add_comm_group.core {E : Type *} [add_comm_group E]
1159
- [has_norm E]
1160
- (C : normed_add_comm_group.core E) : seminormed_add_comm_group.core E :=
1161
- { norm_zero := (C.norm_eq_zero_iff 0 ).2 rfl,
1162
- triangle := C.triangle,
1163
- norm_neg := C.norm_neg }
1164
-
1165
- /-- Constructing a normed group from core properties of a norm, i.e., registering the distance and
1166
- the metric space structure from the norm properties. -/
1167
- def normed_add_comm_group.of_core (E : Type *) [add_comm_group E] [has_norm E]
1168
- (C : normed_add_comm_group.core E) : normed_add_comm_group E :=
1169
- { eq_of_dist_eq_zero := λ x y h,
1170
- begin
1171
- rw [dist_eq_norm] at h,
1172
- exact sub_eq_zero.mp ((C.norm_eq_zero_iff _).1 h)
1173
- end
1174
- ..seminormed_add_comm_group.of_core E
1175
- (normed_add_comm_group.core.to_seminormed_add_comm_group.core C) }
1140
+ /-- Construct a normed group from a norm, i.e., registering the distance and the metric space
1141
+ structure from the norm properties. Note that in most cases this instance creates bad definitional
1142
+ equalities (e.g., it does not take into account a possibly existing `uniform_space` instance on
1143
+ `E`). -/
1144
+ def add_group_norm.to_normed_add_comm_group [add_comm_group E] (f : add_group_norm E) :
1145
+ normed_add_comm_group E :=
1146
+ { eq_of_dist_eq_zero := λ x y h, sub_eq_zero.1 $ eq_zero_of_map_eq_zero f h,
1147
+ ..f.to_add_group_seminorm.to_seminormed_add_comm_group }
1176
1148
1177
1149
variables [normed_add_comm_group E] [normed_add_comm_group F] {x y : E}
1178
1150
0 commit comments