@@ -590,12 +590,20 @@ lemma antilipschitz_with.add_sub_lipschitz_with {α : Type*} [pseudo_metric_spac
590
590
(hK : Kg < Kf⁻¹) : antilipschitz_with (Kf⁻¹ - Kg)⁻¹ g :=
591
591
by simpa only [pi.sub_apply, add_sub_cancel'_right] using hf.add_lipschitz_with hg hK
592
592
593
+ /-- A group homomorphism from an `add_comm_group` to a `semi_normed_group` induces a
594
+ `semi_normed_group` structure on the domain.
595
+
596
+ See note [reducible non-instances] -/
597
+ @[reducible]
598
+ def semi_normed_group.induced [add_comm_group γ] (f : γ →+ α) : semi_normed_group γ :=
599
+ { norm := λ x, ∥f x∥,
600
+ dist_eq := λ x y, by simpa only [add_monoid_hom.map_sub, ← dist_eq_norm],
601
+ .. pseudo_metric_space.induced f semi_normed_group.to_pseudo_metric_space, }
602
+
593
603
/-- A subgroup of a seminormed group is also a seminormed group,
594
604
with the restriction of the norm. -/
595
- instance add_subgroup.semi_normed_group {E : Type *} [semi_normed_group E] (s : add_subgroup E) :
596
- semi_normed_group s :=
597
- { norm := λx, norm (x : E),
598
- dist_eq := λx y, dist_eq_norm (x : E) (y : E) }
605
+ instance add_subgroup.semi_normed_group (s : add_subgroup α) : semi_normed_group s :=
606
+ semi_normed_group.induced s.subtype
599
607
600
608
/-- If `x` is an element of a subgroup `s` of a seminormed group `E`, its norm in `s` is equal to
601
609
its norm in `E`. -/
@@ -905,10 +913,19 @@ end
905
913
@[simp] lemma nnnorm_eq_zero {a : α} : ∥a∥₊ = 0 ↔ a = 0 :=
906
914
by simp only [nnreal.eq_iff.symm, nnreal.coe_zero, coe_nnnorm, norm_eq_zero]
907
915
916
+ /-- An injective group homomorphism from an `add_comm_group` to a `normed_group` induces a
917
+ `normed_group` structure on the domain.
918
+
919
+ See note [reducible non-instances]. -/
920
+ @[reducible]
921
+ def normed_group.induced [add_comm_group γ]
922
+ (f : γ →+ α) (h : function.injective f) : normed_group γ :=
923
+ { .. semi_normed_group.induced f,
924
+ .. metric_space.induced f h normed_group.to_metric_space, }
925
+
908
926
/-- A subgroup of a normed group is also a normed group, with the restriction of the norm. -/
909
- instance add_subgroup.normed_group {E : Type *} [normed_group E] (s : add_subgroup E) :
910
- normed_group s :=
911
- { ..add_subgroup.semi_normed_group s }
927
+ instance add_subgroup.normed_group (s : add_subgroup α) : normed_group s :=
928
+ normed_group.induced s.subtype subtype.coe_injective
912
929
913
930
/-- A submodule of a normed group is also a normed group, with the restriction of the norm.
914
931
0 commit comments