77
88public import Mathlib.Data.NNReal.Defs
99public import Mathlib.Order.ConditionallyCompleteLattice.Group
10+ public import Mathlib.Data.FunLike.Module
1011
1112/-!
1213# Group seminorms
@@ -224,13 +225,17 @@ instance instZeroGroupSeminorm : Zero (GroupSeminorm E) :=
224225 mul_le' := fun _ _ => (zero_add _).ge
225226 inv' := fun _ => rfl }⟩
226227
227- @ [to_additive (attr := simp, norm_cast) ]
228- theorem coe_zero : ⇑( 0 : GroupSeminorm E) = 0 :=
229- rfl
228+ @[to_additive]
229+ instance : IsZeroApply ( GroupSeminorm E) E ℝ where
230+ zero_apply _ := rfl
230231
231- @ [to_additive (attr := simp)]
232- theorem zero_apply (x : E) : (0 : GroupSeminorm E) x = 0 :=
233- rfl
232+ @ [deprecated (since := "2026-07-10" )] alias _root_.GroupSeminorm.coe_zero := FunLike.coe_zero
233+ @ [deprecated (since := "2026-07-10" )] alias _root_.AddGroupSeminorm.coe_zero := FunLike.coe_zero
234+
235+ @ [deprecated (since := "2026-07-10" )] protected alias _root_.GroupSeminorm.zero_apply :=
236+ zero_apply
237+ @ [deprecated (since := "2026-07-10" )] protected alias _root_.AddGroupSeminorm.zero_apply :=
238+ zero_apply
234239
235240@[to_additive]
236241instance : Inhabited (GroupSeminorm E) :=
@@ -246,13 +251,17 @@ instance : Add (GroupSeminorm E) :=
246251 add_add_add_comm _ _ _ _
247252 inv' := fun x => by simp_rw [map_inv_eq_map p, map_inv_eq_map q] }⟩
248253
249- @ [to_additive (attr := simp) ]
250- theorem coe_add : ⇑(p + q) = p + q :=
251- rfl
254+ @[to_additive]
255+ instance : IsAddApply (GroupSeminorm E) E ℝ where
256+ add_apply _ _ _ := rfl
252257
253- @ [to_additive (attr := simp)]
254- theorem add_apply (x : E) : (p + q) x = p x + q x :=
255- rfl
258+ @ [deprecated (since := "2026-07-10" )] alias _root_.GroupSeminorm.coe_add := FunLike.coe_add
259+ @ [deprecated (since := "2026-07-10" )] alias _root_.AddGroupSeminorm.coe_add := FunLike.coe_add
260+
261+ @ [deprecated (since := "2026-07-10" )] protected alias _root_.GroupSeminorm.add_apply :=
262+ add_apply
263+ @ [deprecated (since := "2026-07-10" )] protected alias _root_.AddGroupSeminorm.add_apply :=
264+ add_apply
256265
257266open scoped Classical in
258267@[to_additive]
@@ -450,17 +459,18 @@ instance toSMul : SMul R (AddGroupSeminorm E) :=
450459 apply map_add_le_add
451460 neg' := fun x => by simp_rw [map_neg_eq_map] }⟩
452461
453- @ [simp, norm_cast]
454- theorem coe_smul (r : R) (p : AddGroupSeminorm E) : ⇑(r • p) = r • ⇑p :=
455- rfl
462+ instance : IsSMulApply R (AddGroupSeminorm E) E ℝ where
463+ smul_apply _ _ _ := rfl
456464
457- @[simp]
458- theorem smul_apply (r : R) (p : AddGroupSeminorm E) (x : E) : (r • p) x = r • p x :=
459- rfl
465+ @ [deprecated (since := "2026-07-10" )] alias coe_smul := FunLike.coe_smul
466+
467+ @ [ deprecated (since := "2026-07-10" )] protected alias smul_apply := smul_apply
460468
461469instance isScalarTower [SMul R' ℝ] [SMul R' ℝ≥0 ] [IsScalarTower R' ℝ≥0 ℝ] [SMul R R']
462470 [IsScalarTower R R' ℝ] : IsScalarTower R R' (AddGroupSeminorm E) :=
463- ⟨fun r a p => ext fun x => smul_assoc r a (p x)⟩
471+ FunLike.isScalarTower
472+
473+ instance : AddCommMonoid (AddGroupSeminorm E) := fast_instance% FunLike.addCommMonoid
464474
465475theorem smul_sup (r : R) (p q : AddGroupSeminorm E) : r • (p ⊔ q) = r • p ⊔ r • q :=
466476 have Real.smul_max : ∀ x y : ℝ, r • max x y = max (r • x) (r • y) := fun x y => by
@@ -519,13 +529,12 @@ instance : Zero (NonarchAddGroupSeminorm E) :=
519529 add_le_max' := fun r s => by simp only [Pi.zero_apply]; rw [max_eq_right]; rfl
520530 neg' := fun _ => rfl }⟩
521531
522- @ [simp, norm_cast]
523- theorem coe_zero : ⇑(0 : NonarchAddGroupSeminorm E) = 0 :=
524- rfl
532+ instance : IsZeroApply (NonarchAddGroupSeminorm E) E ℝ where
533+ zero_apply _ := rfl
525534
526- @[simp]
527- theorem zero_apply (x : E) : ( 0 : NonarchAddGroupSeminorm E) x = 0 :=
528- rfl
535+ @ [deprecated (since := "2026-07-10" )] alias coe_zero := FunLike.coe_zero
536+
537+ @ [ deprecated (since := "2026-07-10" )] protected alias zero_apply := zero_apply
529538
530539instance : Inhabited (NonarchAddGroupSeminorm E) :=
531540 ⟨0 ⟩
@@ -637,17 +646,18 @@ instance : SMul R (GroupSeminorm E) :=
637646 apply map_mul_le_add
638647 inv' := fun x => by simp_rw [map_inv_eq_map p] }⟩
639648
649+ instance : IsSMulApply R (GroupSeminorm E) E ℝ where
650+ smul_apply _ _ _ := rfl
651+
652+ @ [deprecated (since := "2026-07-10" )] alias coe_smul := FunLike.coe_smul
653+
654+ @ [deprecated (since := "2026-07-10" )] protected alias smul_apply := smul_apply
655+
640656instance [SMul R' ℝ] [SMul R' ℝ≥0 ] [IsScalarTower R' ℝ≥0 ℝ] [SMul R R'] [IsScalarTower R R' ℝ] :
641657 IsScalarTower R R' (GroupSeminorm E) :=
642- ⟨ fun r a p => ext fun x => smul_assoc r a <| p x⟩
658+ FunLike.isScalarTower
643659
644- @ [simp, norm_cast]
645- theorem coe_smul (r : R) (p : GroupSeminorm E) : ⇑(r • p) = r • ⇑p :=
646- rfl
647-
648- @[simp]
649- theorem smul_apply (r : R) (p : GroupSeminorm E) (x : E) : (r • p) x = r • p x :=
650- rfl
660+ instance : AddCommMonoid (GroupSeminorm E) := fast_instance% FunLike.addCommMonoid
651661
652662theorem smul_sup (r : R) (p q : GroupSeminorm E) : r • (p ⊔ q) = r • p ⊔ r • q :=
653663 have Real.smul_max : ∀ x y : ℝ, r • max x y = max (r • x) (r • y) := fun x y => by
@@ -691,17 +701,15 @@ instance : SMul R (NonarchAddGroupSeminorm E) :=
691701 apply map_add_le_max
692702 neg' := fun x => by simp_rw [map_neg_eq_map p] }⟩
693703
694- instance [SMul R' ℝ] [SMul R' ℝ≥0 ] [IsScalarTower R' ℝ≥0 ℝ] [SMul R R'] [IsScalarTower R R' ℝ] :
695- IsScalarTower R R' (NonarchAddGroupSeminorm E) :=
696- ⟨fun r a p => ext fun x => smul_assoc r a <| p x⟩
704+ instance : IsSMulApply R (NonarchAddGroupSeminorm E) E ℝ where
705+ smul_apply _ _ _ := rfl
697706
698- @ [simp, norm_cast]
699- theorem coe_smul (r : R) (p : NonarchAddGroupSeminorm E) : ⇑(r • p) = r • ⇑p :=
700- rfl
707+ @ [deprecated (since := "2026-07-10" )] alias coe_smul := FunLike.coe_smul
701708
702- @[simp]
703- theorem smul_apply (r : R) (p : NonarchAddGroupSeminorm E) (x : E) : (r • p) x = r • p x :=
704- rfl
709+ @ [deprecated (since := "2026-07-10" )] protected alias smul_apply := smul_apply
710+
711+ instance [SMul R' ℝ] [SMul R' ℝ≥0 ] [IsScalarTower R' ℝ≥0 ℝ] [SMul R R'] [IsScalarTower R R' ℝ] :
712+ IsScalarTower R R' (NonarchAddGroupSeminorm E) := FunLike.isScalarTower
705713
706714theorem smul_sup (r : R) (p q : NonarchAddGroupSeminorm E) : r • (p ⊔ q) = r • p ⊔ r • q :=
707715 have Real.smul_max : ∀ x y : ℝ, r • max x y = max (r • x) (r • y) := fun x y => by
@@ -769,13 +777,15 @@ instance : Add (GroupNorm E) :=
769777 eq_one_of_map_eq_zero' := fun _x hx =>
770778 of_not_not fun h => hx.not_gt <| add_pos (map_pos_of_ne_one p h) (map_pos_of_ne_one q h) }⟩
771779
772- @ [to_additive (attr := simp) ]
773- theorem coe_add : ⇑(p + q) = p + q :=
774- rfl
780+ @[to_additive]
781+ instance : IsAddApply (GroupNorm E) E ℝ where
782+ add_apply _ _ _ := rfl
775783
776- @ [to_additive (attr := simp)]
777- theorem add_apply (x : E) : (p + q) x = p x + q x :=
778- rfl
784+ @ [deprecated (since := "2026-07-10" )] alias _root_.GroupNorm.coe_add := FunLike.coe_add
785+ @ [deprecated (since := "2026-07-10" )] alias _root_.AddGroupNorm.coe_add := FunLike.coe_add
786+
787+ @ [deprecated (since := "2026-07-10" )] protected alias _root_.GroupNorm.add_apply := add_apply
788+ @ [deprecated (since := "2026-07-10" )] protected alias _root_.AddGroupNorm.add_apply := add_apply
779789
780790-- Note: To define an instance SupSet (GroupNorm E) requires a canonical "bottom" norm for sSup ∅.
781791-- The zero function fails definiteness; the discrete norm needs complex proofs.
0 commit comments