analysis.normed.group.hom
⟷
Mathlib.Analysis.Normed.Group.Hom
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -515,7 +515,7 @@ theorem norm_id_of_nontrivial_seminorm (h : ∃ x : V, ‖x‖ ≠ 0) : ‖id V
le_antisymm (norm_id_le V) <| by
let ⟨x, hx⟩ := h
have := (id V).ratio_le_opNorm x
- rwa [id_apply, div_self hx] at this
+ rwa [id_apply, div_self hx] at this
#align normed_add_group_hom.norm_id_of_nontrivial_seminorm NormedAddGroupHom.norm_id_of_nontrivial_seminorm
-/
@@ -609,7 +609,7 @@ instance : SMul R (NormedAddGroupHom V₁ V₂)
let ⟨b, hb⟩ := f.bound'
⟨dist r 0 * b, fun x => by
have := dist_smul_pair r (f x) (f 0)
- rw [map_zero, smul_zero, dist_zero_right, dist_zero_right] at this
+ rw [map_zero, smul_zero, dist_zero_right, dist_zero_right] at this
rw [mul_assoc]
refine' this.trans _
refine' mul_le_mul_of_nonneg_left _ dist_nonneg
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2021 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin
-/
-import Mathbin.Analysis.Normed.Group.Basic
+import Analysis.Normed.Group.Basic
#align_import analysis.normed.group.hom from "leanprover-community/mathlib"@"69c6a5a12d8a2b159f20933e60115a4f2de62b58"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -386,10 +386,10 @@ theorem mkNormedAddGroupHom_norm_le' (f : V₁ →+ V₂) {C : ℝ} (h : ∀ x,
#align normed_add_group_hom.mk_normed_add_group_hom_norm_le' NormedAddGroupHom.mkNormedAddGroupHom_norm_le'
-/
-alias mk_normed_add_group_hom_norm_le ← _root_.add_monoid_hom.mk_normed_add_group_hom_norm_le
+alias _root_.add_monoid_hom.mk_normed_add_group_hom_norm_le := mk_normed_add_group_hom_norm_le
#align add_monoid_hom.mk_normed_add_group_hom_norm_le AddMonoidHom.mkNormedAddGroupHom_norm_le
-alias mk_normed_add_group_hom_norm_le' ← _root_.add_monoid_hom.mk_normed_add_group_hom_norm_le'
+alias _root_.add_monoid_hom.mk_normed_add_group_hom_norm_le' := mk_normed_add_group_hom_norm_le'
#align add_monoid_hom.mk_normed_add_group_hom_norm_le' AddMonoidHom.mkNormedAddGroupHom_norm_le'
/-! ### Addition of normed group homs -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2021 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin
-
-! This file was ported from Lean 3 source module analysis.normed.group.hom
-! leanprover-community/mathlib commit 69c6a5a12d8a2b159f20933e60115a4f2de62b58
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Analysis.Normed.Group.Basic
+#align_import analysis.normed.group.hom from "leanprover-community/mathlib"@"69c6a5a12d8a2b159f20933e60115a4f2de62b58"
+
/-!
# Normed groups homomorphisms
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -51,13 +51,16 @@ namespace AddMonoidHom
variable {V W : Type _} [SeminormedAddCommGroup V] [SeminormedAddCommGroup W]
{f g : NormedAddGroupHom V W}
+#print AddMonoidHom.mkNormedAddGroupHom /-
/-- Associate to a group homomorphism a bounded group homomorphism under a norm control condition.
See `add_monoid_hom.mk_normed_add_group_hom'` for a version that uses `ℝ≥0` for the bound. -/
def mkNormedAddGroupHom (f : V →+ W) (C : ℝ) (h : ∀ v, ‖f v‖ ≤ C * ‖v‖) : NormedAddGroupHom V W :=
{ f with bound' := ⟨C, h⟩ }
#align add_monoid_hom.mk_normed_add_group_hom AddMonoidHom.mkNormedAddGroupHom
+-/
+#print AddMonoidHom.mkNormedAddGroupHom' /-
/-- Associate to a group homomorphism a bounded group homomorphism under a norm control condition.
See `add_monoid_hom.mk_normed_add_group_hom` for a version that uses `ℝ` for the bound. -/
@@ -65,9 +68,11 @@ def mkNormedAddGroupHom' (f : V →+ W) (C : ℝ≥0) (hC : ∀ x, ‖f x‖₊
NormedAddGroupHom V W :=
{ f with bound' := ⟨C, hC⟩ }
#align add_monoid_hom.mk_normed_add_group_hom' AddMonoidHom.mkNormedAddGroupHom'
+-/
end AddMonoidHom
+#print exists_pos_bound_of_bound /-
theorem exists_pos_bound_of_bound {V W : Type _} [SeminormedAddCommGroup V]
[SeminormedAddCommGroup W] {f : V → W} (M : ℝ) (h : ∀ x, ‖f x‖ ≤ M * ‖x‖) :
∃ N, 0 < N ∧ ∀ x, ‖f x‖ ≤ N * ‖x‖ :=
@@ -76,6 +81,7 @@ theorem exists_pos_bound_of_bound {V W : Type _} [SeminormedAddCommGroup V]
‖f x‖ ≤ M * ‖x‖ := h x
_ ≤ max M 1 * ‖x‖ := mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg _)⟩
#align exists_pos_bound_of_bound exists_pos_bound_of_bound
+-/
namespace NormedAddGroupHom
@@ -89,9 +95,11 @@ instance : CoeFun (NormedAddGroupHom V₁ V₂) fun _ => V₁ → V₂ :=
initialize_simps_projections NormedAddGroupHom (toFun → apply)
+#print NormedAddGroupHom.coe_inj /-
theorem coe_inj (H : (f : V₁ → V₂) = g) : f = g := by
cases f <;> cases g <;> congr <;> exact funext H
#align normed_add_group_hom.coe_inj NormedAddGroupHom.coe_inj
+-/
#print NormedAddGroupHom.coe_injective /-
theorem coe_injective : @Function.Injective (NormedAddGroupHom V₁ V₂) (V₁ → V₂) coeFn := by
@@ -99,9 +107,11 @@ theorem coe_injective : @Function.Injective (NormedAddGroupHom V₁ V₂) (V₁
#align normed_add_group_hom.coe_injective NormedAddGroupHom.coe_injective
-/
+#print NormedAddGroupHom.coe_inj_iff /-
theorem coe_inj_iff : f = g ↔ (f : V₁ → V₂) = g :=
⟨congr_arg _, coe_inj⟩
#align normed_add_group_hom.coe_inj_iff NormedAddGroupHom.coe_inj_iff
+-/
#print NormedAddGroupHom.ext /-
@[ext]
@@ -110,31 +120,41 @@ theorem ext (H : ∀ x, f x = g x) : f = g :=
#align normed_add_group_hom.ext NormedAddGroupHom.ext
-/
+#print NormedAddGroupHom.ext_iff /-
theorem ext_iff : f = g ↔ ∀ x, f x = g x :=
⟨by rintro rfl x <;> rfl, ext⟩
#align normed_add_group_hom.ext_iff NormedAddGroupHom.ext_iff
+-/
variable (f g)
+#print NormedAddGroupHom.toFun_eq_coe /-
@[simp]
theorem toFun_eq_coe : f.toFun = f :=
rfl
#align normed_add_group_hom.to_fun_eq_coe NormedAddGroupHom.toFun_eq_coe
+-/
+#print NormedAddGroupHom.coe_mk /-
@[simp]
theorem coe_mk (f) (h₁) (h₂) (h₃) : ⇑(⟨f, h₁, h₂, h₃⟩ : NormedAddGroupHom V₁ V₂) = f :=
rfl
#align normed_add_group_hom.coe_mk NormedAddGroupHom.coe_mk
+-/
+#print NormedAddGroupHom.coe_mkNormedAddGroupHom /-
@[simp]
theorem coe_mkNormedAddGroupHom (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAddGroupHom C hC) = f :=
rfl
#align normed_add_group_hom.coe_mk_normed_add_group_hom NormedAddGroupHom.coe_mkNormedAddGroupHom
+-/
+#print NormedAddGroupHom.coe_mkNormedAddGroupHom' /-
@[simp]
theorem coe_mkNormedAddGroupHom' (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAddGroupHom' C hC) = f :=
rfl
#align normed_add_group_hom.coe_mk_normed_add_group_hom' NormedAddGroupHom.coe_mkNormedAddGroupHom'
+-/
#print NormedAddGroupHom.toAddMonoidHom /-
/-- The group homomorphism underlying a bounded group homomorphism. -/
@@ -143,21 +163,27 @@ def toAddMonoidHom (f : NormedAddGroupHom V₁ V₂) : V₁ →+ V₂ :=
#align normed_add_group_hom.to_add_monoid_hom NormedAddGroupHom.toAddMonoidHom
-/
+#print NormedAddGroupHom.coe_toAddMonoidHom /-
@[simp]
theorem coe_toAddMonoidHom : ⇑f.toAddMonoidHom = f :=
rfl
#align normed_add_group_hom.coe_to_add_monoid_hom NormedAddGroupHom.coe_toAddMonoidHom
+-/
+#print NormedAddGroupHom.toAddMonoidHom_injective /-
theorem toAddMonoidHom_injective :
Function.Injective (@NormedAddGroupHom.toAddMonoidHom V₁ V₂ _ _) := fun f g h =>
coe_inj <| show ⇑f.toAddMonoidHom = g by rw [h]; rfl
#align normed_add_group_hom.to_add_monoid_hom_injective NormedAddGroupHom.toAddMonoidHom_injective
+-/
+#print NormedAddGroupHom.mk_toAddMonoidHom /-
@[simp]
theorem mk_toAddMonoidHom (f) (h₁) (h₂) :
(⟨f, h₁, h₂⟩ : NormedAddGroupHom V₁ V₂).toAddMonoidHom = AddMonoidHom.mk' f h₁ :=
rfl
#align normed_add_group_hom.mk_to_add_monoid_hom NormedAddGroupHom.mk_toAddMonoidHom
+-/
instance : AddMonoidHomClass (NormedAddGroupHom V₁ V₂) V₁ V₂
where
@@ -166,14 +192,18 @@ instance : AddMonoidHomClass (NormedAddGroupHom V₁ V₂) V₁ V₂
map_add f := f.toAddMonoidHom.map_add
map_zero f := f.toAddMonoidHom.map_zero
+#print NormedAddGroupHom.bound /-
theorem bound : ∃ C, 0 < C ∧ ∀ x, ‖f x‖ ≤ C * ‖x‖ :=
let ⟨C, hC⟩ := f.bound'
exists_pos_bound_of_bound _ hC
#align normed_add_group_hom.bound NormedAddGroupHom.bound
+-/
+#print NormedAddGroupHom.antilipschitz_of_norm_ge /-
theorem antilipschitz_of_norm_ge {K : ℝ≥0} (h : ∀ x, ‖x‖ ≤ K * ‖f x‖) : AntilipschitzWith K f :=
AntilipschitzWith.of_le_mul_dist fun x y => by simpa only [dist_eq_norm, map_sub] using h (x - y)
#align normed_add_group_hom.antilipschitz_of_norm_ge NormedAddGroupHom.antilipschitz_of_norm_ge
+-/
#print NormedAddGroupHom.SurjectiveOnWith /-
/-- A normed group hom is surjective on the subgroup `K` with constant `C` if every element
@@ -185,6 +215,7 @@ def SurjectiveOnWith (f : NormedAddGroupHom V₁ V₂) (K : AddSubgroup V₂) (C
#align normed_add_group_hom.surjective_on_with NormedAddGroupHom.SurjectiveOnWith
-/
+#print NormedAddGroupHom.SurjectiveOnWith.mono /-
theorem SurjectiveOnWith.mono {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup V₂} {C C' : ℝ}
(h : f.SurjectiveOnWith K C) (H : C ≤ C') : f.SurjectiveOnWith K C' :=
by
@@ -195,7 +226,9 @@ theorem SurjectiveOnWith.mono {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup
· simpa [Hg] using hg
· exact hg.trans ((mul_le_mul_right <| (Ne.symm Hg).le_iff_lt.mp (norm_nonneg _)).mpr H)
#align normed_add_group_hom.surjective_on_with.mono NormedAddGroupHom.SurjectiveOnWith.mono
+-/
+#print NormedAddGroupHom.SurjectiveOnWith.exists_pos /-
theorem SurjectiveOnWith.exists_pos {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup V₂} {C : ℝ}
(h : f.SurjectiveOnWith K C) : ∃ C' > 0, f.SurjectiveOnWith K C' :=
by
@@ -204,11 +237,14 @@ theorem SurjectiveOnWith.exists_pos {f : NormedAddGroupHom V₁ V₂} {K : AddSu
· apply h.mono
linarith [le_abs_self C]
#align normed_add_group_hom.surjective_on_with.exists_pos NormedAddGroupHom.SurjectiveOnWith.exists_pos
+-/
+#print NormedAddGroupHom.SurjectiveOnWith.surjOn /-
theorem SurjectiveOnWith.surjOn {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup V₂} {C : ℝ}
(h : f.SurjectiveOnWith K C) : Set.SurjOn f Set.univ K := fun x hx =>
(h x hx).imp fun a ⟨ha, _⟩ => ⟨Set.mem_univ _, ha⟩
#align normed_add_group_hom.surjective_on_with.surj_on NormedAddGroupHom.SurjectiveOnWith.surjOn
+-/
/-! ### The operator norm -/
@@ -226,10 +262,13 @@ instance hasOpNorm : Norm (NormedAddGroupHom V₁ V₂) :=
#align normed_add_group_hom.has_op_norm NormedAddGroupHom.hasOpNorm
-/
+#print NormedAddGroupHom.norm_def /-
theorem norm_def : ‖f‖ = sInf {c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖} :=
rfl
#align normed_add_group_hom.norm_def NormedAddGroupHom.norm_def
+-/
+#print NormedAddGroupHom.bounds_nonempty /-
-- So that invocations of `le_cInf` make sense: we show that the set of
-- bounds is nonempty and bounded below.
theorem bounds_nonempty {f : NormedAddGroupHom V₁ V₂} :
@@ -237,16 +276,22 @@ theorem bounds_nonempty {f : NormedAddGroupHom V₁ V₂} :
let ⟨M, hMp, hMb⟩ := f.bound
⟨M, le_of_lt hMp, hMb⟩
#align normed_add_group_hom.bounds_nonempty NormedAddGroupHom.bounds_nonempty
+-/
+#print NormedAddGroupHom.bounds_bddBelow /-
theorem bounds_bddBelow {f : NormedAddGroupHom V₁ V₂} :
BddBelow {c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖} :=
⟨0, fun _ ⟨hn, _⟩ => hn⟩
#align normed_add_group_hom.bounds_bdd_below NormedAddGroupHom.bounds_bddBelow
+-/
+#print NormedAddGroupHom.opNorm_nonneg /-
theorem opNorm_nonneg : 0 ≤ ‖f‖ :=
le_csInf bounds_nonempty fun _ ⟨hx, _⟩ => hx
#align normed_add_group_hom.op_norm_nonneg NormedAddGroupHom.opNorm_nonneg
+-/
+#print NormedAddGroupHom.le_opNorm /-
/-- The fundamental property of the operator norm: `‖f x‖ ≤ ‖f‖ * ‖x‖`. -/
theorem le_opNorm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ :=
by
@@ -259,51 +304,71 @@ theorem le_opNorm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ :=
(div_le_iff hlt).mp
(le_csInf bounds_nonempty fun c ⟨_, hc⟩ => (div_le_iff hlt).mpr <| by apply hc)
#align normed_add_group_hom.le_op_norm NormedAddGroupHom.le_opNorm
+-/
+#print NormedAddGroupHom.le_opNorm_of_le /-
theorem le_opNorm_of_le {c : ℝ} {x} (h : ‖x‖ ≤ c) : ‖f x‖ ≤ ‖f‖ * c :=
le_trans (f.le_opNorm x) (mul_le_mul_of_nonneg_left h f.opNorm_nonneg)
#align normed_add_group_hom.le_op_norm_of_le NormedAddGroupHom.le_opNorm_of_le
+-/
+#print NormedAddGroupHom.le_of_opNorm_le /-
theorem le_of_opNorm_le {c : ℝ} (h : ‖f‖ ≤ c) (x : V₁) : ‖f x‖ ≤ c * ‖x‖ :=
(f.le_opNorm x).trans (mul_le_mul_of_nonneg_right h (norm_nonneg x))
#align normed_add_group_hom.le_of_op_norm_le NormedAddGroupHom.le_of_opNorm_le
+-/
+#print NormedAddGroupHom.lipschitz /-
/-- continuous linear maps are Lipschitz continuous. -/
theorem lipschitz : LipschitzWith ⟨‖f‖, opNorm_nonneg f⟩ f :=
LipschitzWith.of_dist_le_mul fun x y => by rw [dist_eq_norm, dist_eq_norm, ← map_sub];
apply le_op_norm
#align normed_add_group_hom.lipschitz NormedAddGroupHom.lipschitz
+-/
+#print NormedAddGroupHom.uniformContinuous /-
protected theorem uniformContinuous (f : NormedAddGroupHom V₁ V₂) : UniformContinuous f :=
f.lipschitz.UniformContinuous
#align normed_add_group_hom.uniform_continuous NormedAddGroupHom.uniformContinuous
+-/
+#print NormedAddGroupHom.continuous /-
@[continuity]
protected theorem continuous (f : NormedAddGroupHom V₁ V₂) : Continuous f :=
f.UniformContinuous.Continuous
#align normed_add_group_hom.continuous NormedAddGroupHom.continuous
+-/
+#print NormedAddGroupHom.ratio_le_opNorm /-
theorem ratio_le_opNorm (x : V₁) : ‖f x‖ / ‖x‖ ≤ ‖f‖ :=
div_le_of_nonneg_of_le_mul (norm_nonneg _) f.opNorm_nonneg (le_opNorm _ _)
#align normed_add_group_hom.ratio_le_op_norm NormedAddGroupHom.ratio_le_opNorm
+-/
+#print NormedAddGroupHom.opNorm_le_bound /-
/-- If one controls the norm of every `f x`, then one controls the norm of `f`. -/
theorem opNorm_le_bound {M : ℝ} (hMp : 0 ≤ M) (hM : ∀ x, ‖f x‖ ≤ M * ‖x‖) : ‖f‖ ≤ M :=
csInf_le bounds_bddBelow ⟨hMp, hM⟩
#align normed_add_group_hom.op_norm_le_bound NormedAddGroupHom.opNorm_le_bound
+-/
+#print NormedAddGroupHom.opNorm_eq_of_bounds /-
theorem opNorm_eq_of_bounds {M : ℝ} (M_nonneg : 0 ≤ M) (h_above : ∀ x, ‖f x‖ ≤ M * ‖x‖)
(h_below : ∀ N ≥ 0, (∀ x, ‖f x‖ ≤ N * ‖x‖) → M ≤ N) : ‖f‖ = M :=
le_antisymm (f.opNorm_le_bound M_nonneg h_above)
((le_csInf_iff NormedAddGroupHom.bounds_bddBelow ⟨M, M_nonneg, h_above⟩).mpr
fun N ⟨N_nonneg, hN⟩ => h_below N N_nonneg hN)
#align normed_add_group_hom.op_norm_eq_of_bounds NormedAddGroupHom.opNorm_eq_of_bounds
+-/
+#print NormedAddGroupHom.opNorm_le_of_lipschitz /-
theorem opNorm_le_of_lipschitz {f : NormedAddGroupHom V₁ V₂} {K : ℝ≥0} (hf : LipschitzWith K f) :
‖f‖ ≤ K :=
f.opNorm_le_bound K.2 fun x => by simpa only [dist_zero_right, map_zero] using hf.dist_le_mul x 0
#align normed_add_group_hom.op_norm_le_of_lipschitz NormedAddGroupHom.opNorm_le_of_lipschitz
+-/
+#print NormedAddGroupHom.mkNormedAddGroupHom_norm_le /-
/-- If a bounded group homomorphism map is constructed from a group homomorphism via the constructor
`mk_normed_add_group_hom`, then its norm is bounded by the bound given to the constructor if it is
nonnegative. -/
@@ -311,7 +376,9 @@ theorem mkNormedAddGroupHom_norm_le (f : V₁ →+ V₂) {C : ℝ} (hC : 0 ≤ C
‖f.mkNormedAddGroupHom C h‖ ≤ C :=
opNorm_le_bound _ hC h
#align normed_add_group_hom.mk_normed_add_group_hom_norm_le NormedAddGroupHom.mkNormedAddGroupHom_norm_le
+-/
+#print NormedAddGroupHom.mkNormedAddGroupHom_norm_le' /-
/-- If a bounded group homomorphism map is constructed from a group homomorphism
via the constructor `mk_normed_add_group_hom`, then its norm is bounded by the bound
given to the constructor or zero if this bound is negative. -/
@@ -320,6 +387,7 @@ theorem mkNormedAddGroupHom_norm_le' (f : V₁ →+ V₂) {C : ℝ} (h : ∀ x,
opNorm_le_bound _ (le_max_right _ _) fun x =>
(h x).trans <| mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg x)
#align normed_add_group_hom.mk_normed_add_group_hom_norm_le' NormedAddGroupHom.mkNormedAddGroupHom_norm_le'
+-/
alias mk_normed_add_group_hom_norm_le ← _root_.add_monoid_hom.mk_normed_add_group_hom_norm_le
#align add_monoid_hom.mk_normed_add_group_hom_norm_le AddMonoidHom.mkNormedAddGroupHom_norm_le
@@ -339,10 +407,12 @@ instance : Add (NormedAddGroupHom V₁ V₂) :=
_ ≤ ‖f‖ * ‖v‖ + ‖g‖ * ‖v‖ := (add_le_add (le_opNorm f v) (le_opNorm g v))
_ = (‖f‖ + ‖g‖) * ‖v‖ := by rw [add_mul]⟩
+#print NormedAddGroupHom.opNorm_add_le /-
/-- The operator norm satisfies the triangle inequality. -/
theorem opNorm_add_le : ‖f + g‖ ≤ ‖f‖ + ‖g‖ :=
mkNormedAddGroupHom_norm_le _ (add_nonneg (opNorm_nonneg _) (opNorm_nonneg _)) _
#align normed_add_group_hom.op_norm_add_le NormedAddGroupHom.opNorm_add_le
+-/
library_note "addition on function coercions"/--
Terms containing `@has_add.add (has_coe_to_fun.F ...) pi.has_add`
@@ -352,17 +422,21 @@ As a workaround, we add a type annotation: `(f + g : V₁ → V₂)`
-/
+#print NormedAddGroupHom.coe_add /-
-- see Note [addition on function coercions]
@[simp]
theorem coe_add (f g : NormedAddGroupHom V₁ V₂) : ⇑(f + g) = (f + g : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_add NormedAddGroupHom.coe_add
+-/
+#print NormedAddGroupHom.add_apply /-
@[simp]
theorem add_apply (f g : NormedAddGroupHom V₁ V₂) (v : V₁) :
(f + g : NormedAddGroupHom V₁ V₂) v = f v + g v :=
rfl
#align normed_add_group_hom.add_apply NormedAddGroupHom.add_apply
+-/
/-! ### The zero normed group hom -/
@@ -373,6 +447,7 @@ instance : Zero (NormedAddGroupHom V₁ V₂) :=
instance : Inhabited (NormedAddGroupHom V₁ V₂) :=
⟨0⟩
+#print NormedAddGroupHom.opNorm_zero /-
/-- The norm of the `0` operator is `0`. -/
theorem opNorm_zero : ‖(0 : NormedAddGroupHom V₁ V₂)‖ = 0 :=
le_antisymm
@@ -380,7 +455,9 @@ theorem opNorm_zero : ‖(0 : NormedAddGroupHom V₁ V₂)‖ = 0 :=
⟨ge_of_eq rfl, fun _ => le_of_eq (by rw [MulZeroClass.zero_mul]; exact norm_zero)⟩)
(opNorm_nonneg _)
#align normed_add_group_hom.op_norm_zero NormedAddGroupHom.opNorm_zero
+-/
+#print NormedAddGroupHom.opNorm_zero_iff /-
/-- For normed groups, an operator is zero iff its norm vanishes. -/
theorem opNorm_zero_iff {V₁ V₂ : Type _} [NormedAddCommGroup V₁] [NormedAddCommGroup V₂]
{f : NormedAddGroupHom V₁ V₂} : ‖f‖ = 0 ↔ f = 0 :=
@@ -393,17 +470,22 @@ theorem opNorm_zero_iff {V₁ V₂ : Type _} [NormedAddCommGroup V₁] [NormedAd
_ = _ := by rw [hn, MulZeroClass.zero_mul]))
fun hf => by rw [hf, op_norm_zero]
#align normed_add_group_hom.op_norm_zero_iff NormedAddGroupHom.opNorm_zero_iff
+-/
+#print NormedAddGroupHom.coe_zero /-
-- see Note [addition on function coercions]
@[simp]
theorem coe_zero : ⇑(0 : NormedAddGroupHom V₁ V₂) = (0 : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_zero NormedAddGroupHom.coe_zero
+-/
+#print NormedAddGroupHom.zero_apply /-
@[simp]
theorem zero_apply (v : V₁) : (0 : NormedAddGroupHom V₁ V₂) v = 0 :=
rfl
#align normed_add_group_hom.zero_apply NormedAddGroupHom.zero_apply
+-/
variable {f g}
@@ -420,13 +502,16 @@ def id : NormedAddGroupHom V V :=
#align normed_add_group_hom.id NormedAddGroupHom.id
-/
+#print NormedAddGroupHom.norm_id_le /-
/-- The norm of the identity is at most `1`. It is in fact `1`, except when the norm of every
element vanishes, where it is `0`. (Since we are working with seminorms this can happen even if the
space is non-trivial.) It means that one can not do better than an inequality in general. -/
theorem norm_id_le : ‖(id V : NormedAddGroupHom V V)‖ ≤ 1 :=
opNorm_le_bound _ zero_le_one fun x => by simp
#align normed_add_group_hom.norm_id_le NormedAddGroupHom.norm_id_le
+-/
+#print NormedAddGroupHom.norm_id_of_nontrivial_seminorm /-
/-- If there is an element with norm different from `0`, then the norm of the identity equals `1`.
(Since we are working with seminorms supposing that the space is non-trivial is not enough.) -/
theorem norm_id_of_nontrivial_seminorm (h : ∃ x : V, ‖x‖ ≠ 0) : ‖id V‖ = 1 :=
@@ -435,7 +520,9 @@ theorem norm_id_of_nontrivial_seminorm (h : ∃ x : V, ‖x‖ ≠ 0) : ‖id V
have := (id V).ratio_le_opNorm x
rwa [id_apply, div_self hx] at this
#align normed_add_group_hom.norm_id_of_nontrivial_seminorm NormedAddGroupHom.norm_id_of_nontrivial_seminorm
+-/
+#print NormedAddGroupHom.norm_id /-
/-- If a normed space is non-trivial, then the norm of the identity equals `1`. -/
theorem norm_id {V : Type _} [NormedAddCommGroup V] [Nontrivial V] : ‖id V‖ = 1 :=
by
@@ -443,6 +530,7 @@ theorem norm_id {V : Type _} [NormedAddCommGroup V] [Nontrivial V] : ‖id V‖
obtain ⟨x, hx⟩ := exists_ne (0 : V)
exact ⟨x, ne_of_gt (norm_pos_iff.2 hx)⟩
#align normed_add_group_hom.norm_id NormedAddGroupHom.norm_id
+-/
#print NormedAddGroupHom.coe_id /-
theorem coe_id : (NormedAddGroupHom.id V : V → V) = (id : V → V) :=
@@ -457,21 +545,27 @@ theorem coe_id : (NormedAddGroupHom.id V : V → V) = (id : V → V) :=
instance : Neg (NormedAddGroupHom V₁ V₂) :=
⟨fun f => (-f.toAddMonoidHom).mkNormedAddGroupHom ‖f‖ fun v => by simp [le_op_norm f v]⟩
+#print NormedAddGroupHom.coe_neg /-
-- see Note [addition on function coercions]
@[simp]
theorem coe_neg (f : NormedAddGroupHom V₁ V₂) : ⇑(-f) = (-f : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_neg NormedAddGroupHom.coe_neg
+-/
+#print NormedAddGroupHom.neg_apply /-
@[simp]
theorem neg_apply (f : NormedAddGroupHom V₁ V₂) (v : V₁) :
(-f : NormedAddGroupHom V₁ V₂) v = -f v :=
rfl
#align normed_add_group_hom.neg_apply NormedAddGroupHom.neg_apply
+-/
+#print NormedAddGroupHom.opNorm_neg /-
theorem opNorm_neg (f : NormedAddGroupHom V₁ V₂) : ‖-f‖ = ‖f‖ := by
simp only [norm_def, coe_neg, norm_neg, Pi.neg_apply]
#align normed_add_group_hom.op_norm_neg NormedAddGroupHom.opNorm_neg
+-/
/-! ### Subtraction of normed group homs -/
@@ -485,17 +579,21 @@ instance : Sub (NormedAddGroupHom V₁ V₂) :=
simp only [AddMonoidHom.sub_apply, AddMonoidHom.toFun_eq_coe, sub_eq_add_neg]
exact (f + -g).bound' }⟩
+#print NormedAddGroupHom.coe_sub /-
-- see Note [addition on function coercions]
@[simp]
theorem coe_sub (f g : NormedAddGroupHom V₁ V₂) : ⇑(f - g) = (f - g : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_sub NormedAddGroupHom.coe_sub
+-/
+#print NormedAddGroupHom.sub_apply /-
@[simp]
theorem sub_apply (f g : NormedAddGroupHom V₁ V₂) (v : V₁) :
(f - g : NormedAddGroupHom V₁ V₂) v = f v - g v :=
rfl
#align normed_add_group_hom.sub_apply NormedAddGroupHom.sub_apply
+-/
/-! ### Scalar actions on normed group homs -/
@@ -520,15 +618,19 @@ instance : SMul R (NormedAddGroupHom V₁ V₂)
refine' mul_le_mul_of_nonneg_left _ dist_nonneg
exact hb x⟩ }
+#print NormedAddGroupHom.coe_smul /-
@[simp]
theorem coe_smul (r : R) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • f :=
rfl
#align normed_add_group_hom.coe_smul NormedAddGroupHom.coe_smul
+-/
+#print NormedAddGroupHom.smul_apply /-
@[simp]
theorem smul_apply (r : R) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r • f) v = r • f v :=
rfl
#align normed_add_group_hom.smul_apply NormedAddGroupHom.smul_apply
+-/
instance [SMulCommClass R R' V₂] : SMulCommClass R R' (NormedAddGroupHom V₁ V₂)
where smul_comm r r' f := ext fun v => smul_comm _ _ _
@@ -555,15 +657,19 @@ instance nsmul : SMul ℕ (NormedAddGroupHom V₁ V₂)
#align normed_add_group_hom.has_nat_scalar NormedAddGroupHom.nsmul
-/
+#print NormedAddGroupHom.coe_nsmul /-
@[simp]
theorem coe_nsmul (r : ℕ) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • f :=
rfl
#align normed_add_group_hom.coe_nsmul NormedAddGroupHom.coe_nsmul
+-/
+#print NormedAddGroupHom.nsmul_apply /-
@[simp]
theorem nsmul_apply (r : ℕ) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r • f) v = r • f v :=
rfl
#align normed_add_group_hom.nsmul_apply NormedAddGroupHom.nsmul_apply
+-/
#print NormedAddGroupHom.zsmul /-
instance zsmul : SMul ℤ (NormedAddGroupHom V₁ V₂)
@@ -578,15 +684,19 @@ instance zsmul : SMul ℤ (NormedAddGroupHom V₁ V₂)
#align normed_add_group_hom.has_int_scalar NormedAddGroupHom.zsmul
-/
+#print NormedAddGroupHom.coe_zsmul /-
@[simp]
theorem coe_zsmul (r : ℤ) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • f :=
rfl
#align normed_add_group_hom.coe_zsmul NormedAddGroupHom.coe_zsmul
+-/
+#print NormedAddGroupHom.zsmul_apply /-
@[simp]
theorem zsmul_apply (r : ℤ) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r • f) v = r • f v :=
rfl
#align normed_add_group_hom.zsmul_apply NormedAddGroupHom.zsmul_apply
+-/
/-! ### Normed group structure on normed group homs -/
@@ -634,15 +744,19 @@ def coeAddHom : NormedAddGroupHom V₁ V₂ →+ V₁ → V₂
#align normed_add_group_hom.coe_fn_add_hom NormedAddGroupHom.coeAddHom
-/
+#print NormedAddGroupHom.coe_sum /-
@[simp]
theorem coe_sum {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V₁ V₂) :
⇑(∑ i in s, f i) = ∑ i in s, f i :=
(coeAddHom : _ →+ V₁ → V₂).map_sum f s
#align normed_add_group_hom.coe_sum NormedAddGroupHom.coe_sum
+-/
+#print NormedAddGroupHom.sum_apply /-
theorem sum_apply {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V₁ V₂) (v : V₁) :
(∑ i in s, f i) v = ∑ i in s, f i v := by simp only [coe_sum, Finset.sum_apply]
#align normed_add_group_hom.sum_apply NormedAddGroupHom.sum_apply
+-/
/-! ### Module structure on normed group homs -/
@@ -671,20 +785,27 @@ protected def comp (g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁
#align normed_add_group_hom.comp NormedAddGroupHom.comp
-/
+#print NormedAddGroupHom.norm_comp_le /-
theorem norm_comp_le (g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁ V₂) :
‖g.comp f‖ ≤ ‖g‖ * ‖f‖ :=
mkNormedAddGroupHom_norm_le _ (mul_nonneg (opNorm_nonneg _) (opNorm_nonneg _)) _
#align normed_add_group_hom.norm_comp_le NormedAddGroupHom.norm_comp_le
+-/
+#print NormedAddGroupHom.norm_comp_le_of_le /-
theorem norm_comp_le_of_le {g : NormedAddGroupHom V₂ V₃} {C₁ C₂ : ℝ} (hg : ‖g‖ ≤ C₂)
(hf : ‖f‖ ≤ C₁) : ‖g.comp f‖ ≤ C₂ * C₁ :=
le_trans (norm_comp_le g f) <| mul_le_mul hg hf (norm_nonneg _) (le_trans (norm_nonneg _) hg)
#align normed_add_group_hom.norm_comp_le_of_le NormedAddGroupHom.norm_comp_le_of_le
+-/
+#print NormedAddGroupHom.norm_comp_le_of_le' /-
theorem norm_comp_le_of_le' {g : NormedAddGroupHom V₂ V₃} (C₁ C₂ C₃ : ℝ) (h : C₃ = C₂ * C₁)
(hg : ‖g‖ ≤ C₂) (hf : ‖f‖ ≤ C₁) : ‖g.comp f‖ ≤ C₃ := by rw [h]; exact norm_comp_le_of_le hg hf
#align normed_add_group_hom.norm_comp_le_of_le' NormedAddGroupHom.norm_comp_le_of_le'
+-/
+#print NormedAddGroupHom.compHom /-
/-- Composition of normed groups hom as an additive group morphism. -/
def compHom : NormedAddGroupHom V₂ V₃ →+ NormedAddGroupHom V₁ V₂ →+ NormedAddGroupHom V₁ V₃ :=
AddMonoidHom.mk'
@@ -693,16 +814,21 @@ def compHom : NormedAddGroupHom V₂ V₃ →+ NormedAddGroupHom V₁ V₂ →+
simp only [comp_apply, Pi.add_apply, Function.comp_apply, AddMonoidHom.add_apply,
AddMonoidHom.mk'_apply, coe_add])
#align normed_add_group_hom.comp_hom NormedAddGroupHom.compHom
+-/
+#print NormedAddGroupHom.comp_zero /-
@[simp]
theorem comp_zero (f : NormedAddGroupHom V₂ V₃) : f.comp (0 : NormedAddGroupHom V₁ V₂) = 0 := by
ext; exact map_zero f
#align normed_add_group_hom.comp_zero NormedAddGroupHom.comp_zero
+-/
+#print NormedAddGroupHom.zero_comp /-
@[simp]
theorem zero_comp (f : NormedAddGroupHom V₁ V₂) : (0 : NormedAddGroupHom V₂ V₃).comp f = 0 := by
ext; rfl
#align normed_add_group_hom.zero_comp NormedAddGroupHom.zero_comp
+-/
#print NormedAddGroupHom.comp_assoc /-
theorem comp_assoc {V₄ : Type _} [SeminormedAddCommGroup V₄] (h : NormedAddGroupHom V₃ V₄)
@@ -711,10 +837,12 @@ theorem comp_assoc {V₄ : Type _} [SeminormedAddCommGroup V₄] (h : NormedAddG
#align normed_add_group_hom.comp_assoc NormedAddGroupHom.comp_assoc
-/
+#print NormedAddGroupHom.coe_comp /-
theorem coe_comp (f : NormedAddGroupHom V₁ V₂) (g : NormedAddGroupHom V₂ V₃) :
(g.comp f : V₁ → V₃) = (g : V₂ → V₃) ∘ (f : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_comp NormedAddGroupHom.coe_comp
+-/
end NormedAddGroupHom
@@ -723,6 +851,7 @@ namespace NormedAddGroupHom
variable {V W V₁ V₂ V₃ : Type _} [SeminormedAddCommGroup V] [SeminormedAddCommGroup W]
[SeminormedAddCommGroup V₁] [SeminormedAddCommGroup V₂] [SeminormedAddCommGroup V₃]
+#print NormedAddGroupHom.incl /-
/-- The inclusion of an `add_subgroup`, as bounded group homomorphism. -/
@[simps]
def incl (s : AddSubgroup V) : NormedAddGroupHom s V
@@ -731,10 +860,13 @@ def incl (s : AddSubgroup V) : NormedAddGroupHom s V
map_add' v w := AddSubgroup.coe_add _ _ _
bound' := ⟨1, fun v => by rw [one_mul]; rfl⟩
#align normed_add_group_hom.incl NormedAddGroupHom.incl
+-/
+#print NormedAddGroupHom.norm_incl /-
theorem norm_incl {V' : AddSubgroup V} (x : V') : ‖incl _ x‖ = ‖x‖ :=
rfl
#align normed_add_group_hom.norm_incl NormedAddGroupHom.norm_incl
+-/
/-!### Kernel -/
@@ -751,9 +883,12 @@ def ker : AddSubgroup V₁ :=
#align normed_add_group_hom.ker NormedAddGroupHom.ker
-/
+#print NormedAddGroupHom.mem_ker /-
theorem mem_ker (v : V₁) : v ∈ f.ker ↔ f v = 0 := by erw [f.to_add_monoid_hom.mem_ker]; rfl
#align normed_add_group_hom.mem_ker NormedAddGroupHom.mem_ker
+-/
+#print NormedAddGroupHom.ker.lift /-
/-- Given a normed group hom `f : V₁ → V₂` satisfying `g.comp f = 0` for some `g : V₂ → V₃`,
the corestriction of `f` to the kernel of `g`. -/
@[simps]
@@ -763,24 +898,33 @@ def ker.lift (h : g.comp f = 0) : NormedAddGroupHom V₁ g.ker
map_add' v w := by simp only [map_add]; rfl
bound' := f.bound'
#align normed_add_group_hom.ker.lift NormedAddGroupHom.ker.lift
+-/
+#print NormedAddGroupHom.ker.incl_comp_lift /-
@[simp]
theorem ker.incl_comp_lift (h : g.comp f = 0) : (incl g.ker).comp (ker.lift f g h) = f := by ext;
rfl
#align normed_add_group_hom.ker.incl_comp_lift NormedAddGroupHom.ker.incl_comp_lift
+-/
+#print NormedAddGroupHom.ker_zero /-
@[simp]
theorem ker_zero : (0 : NormedAddGroupHom V₁ V₂).ker = ⊤ := by ext; simp [mem_ker]
#align normed_add_group_hom.ker_zero NormedAddGroupHom.ker_zero
+-/
+#print NormedAddGroupHom.coe_ker /-
theorem coe_ker : (f.ker : Set V₁) = (f : V₁ → V₂) ⁻¹' {0} :=
rfl
#align normed_add_group_hom.coe_ker NormedAddGroupHom.coe_ker
+-/
+#print NormedAddGroupHom.isClosed_ker /-
theorem isClosed_ker {V₂ : Type _} [NormedAddCommGroup V₂] (f : NormedAddGroupHom V₁ V₂) :
IsClosed (f.ker : Set V₁) :=
f.coe_ker ▸ IsClosed.preimage f.Continuous (T1Space.t1 0)
#align normed_add_group_hom.is_closed_ker NormedAddGroupHom.isClosed_ker
+-/
end Kernels
@@ -799,27 +943,37 @@ def range : AddSubgroup V₂ :=
#align normed_add_group_hom.range NormedAddGroupHom.range
-/
+#print NormedAddGroupHom.mem_range /-
theorem mem_range (v : V₂) : v ∈ f.range ↔ ∃ w, f w = v := by rw [range, AddMonoidHom.mem_range];
rfl
#align normed_add_group_hom.mem_range NormedAddGroupHom.mem_range
+-/
+#print NormedAddGroupHom.mem_range_self /-
@[simp]
theorem mem_range_self (v : V₁) : f v ∈ f.range :=
⟨v, rfl⟩
#align normed_add_group_hom.mem_range_self NormedAddGroupHom.mem_range_self
+-/
+#print NormedAddGroupHom.comp_range /-
theorem comp_range : (g.comp f).range = AddSubgroup.map g.toAddMonoidHom f.range := by
erw [AddMonoidHom.map_range]; rfl
#align normed_add_group_hom.comp_range NormedAddGroupHom.comp_range
+-/
+#print NormedAddGroupHom.incl_range /-
theorem incl_range (s : AddSubgroup V₁) : (incl s).range = s := by ext x;
exact ⟨fun ⟨y, hy⟩ => by rw [← hy] <;> simp, fun hx => ⟨⟨x, hx⟩, by simp⟩⟩
#align normed_add_group_hom.incl_range NormedAddGroupHom.incl_range
+-/
+#print NormedAddGroupHom.range_comp_incl_top /-
@[simp]
theorem range_comp_incl_top : (f.comp (incl (⊤ : AddSubgroup V₁))).range = f.range := by
simpa [comp_range, incl_range, ← AddMonoidHom.range_eq_map]
#align normed_add_group_hom.range_comp_incl_top NormedAddGroupHom.range_comp_incl_top
+-/
end Range
@@ -834,6 +988,7 @@ def NormNoninc (f : NormedAddGroupHom V W) : Prop :=
namespace NormNoninc
+#print NormedAddGroupHom.NormNoninc.normNoninc_iff_norm_le_one /-
theorem normNoninc_iff_norm_le_one : f.NormNoninc ↔ ‖f‖ ≤ 1 :=
by
refine' ⟨fun h => _, fun h => fun v => _⟩
@@ -841,31 +996,40 @@ theorem normNoninc_iff_norm_le_one : f.NormNoninc ↔ ‖f‖ ≤ 1 :=
simpa [one_mul] using h v
· simpa using le_of_op_norm_le f h v
#align normed_add_group_hom.norm_noninc.norm_noninc_iff_norm_le_one NormedAddGroupHom.NormNoninc.normNoninc_iff_norm_le_one
+-/
+#print NormedAddGroupHom.NormNoninc.zero /-
theorem zero : (0 : NormedAddGroupHom V₁ V₂).NormNoninc := fun v => by simp
#align normed_add_group_hom.norm_noninc.zero NormedAddGroupHom.NormNoninc.zero
+-/
#print NormedAddGroupHom.NormNoninc.id /-
theorem id : (id V).NormNoninc := fun v => le_rfl
#align normed_add_group_hom.norm_noninc.id NormedAddGroupHom.NormNoninc.id
-/
+#print NormedAddGroupHom.NormNoninc.comp /-
theorem comp {g : NormedAddGroupHom V₂ V₃} {f : NormedAddGroupHom V₁ V₂} (hg : g.NormNoninc)
(hf : f.NormNoninc) : (g.comp f).NormNoninc := fun v => (hg (f v)).trans (hf v)
#align normed_add_group_hom.norm_noninc.comp NormedAddGroupHom.NormNoninc.comp
+-/
+#print NormedAddGroupHom.NormNoninc.neg_iff /-
@[simp]
theorem neg_iff {f : NormedAddGroupHom V₁ V₂} : (-f).NormNoninc ↔ f.NormNoninc :=
⟨fun h x => by simpa using h x, fun h x => (norm_neg (f x)).le.trans (h x)⟩
#align normed_add_group_hom.norm_noninc.neg_iff NormedAddGroupHom.NormNoninc.neg_iff
+-/
end NormNoninc
section Isometry
+#print NormedAddGroupHom.norm_eq_of_isometry /-
theorem norm_eq_of_isometry {f : NormedAddGroupHom V W} (hf : Isometry f) (v : V) : ‖f v‖ = ‖v‖ :=
(AddMonoidHomClass.isometry_iff_norm f).mp hf v
#align normed_add_group_hom.norm_eq_of_isometry NormedAddGroupHom.norm_eq_of_isometry
+-/
#print NormedAddGroupHom.isometry_id /-
theorem isometry_id : @Isometry V V _ _ (id V) :=
@@ -873,14 +1037,18 @@ theorem isometry_id : @Isometry V V _ _ (id V) :=
#align normed_add_group_hom.isometry_id NormedAddGroupHom.isometry_id
-/
+#print NormedAddGroupHom.isometry_comp /-
theorem isometry_comp {g : NormedAddGroupHom V₂ V₃} {f : NormedAddGroupHom V₁ V₂} (hg : Isometry g)
(hf : Isometry f) : Isometry (g.comp f) :=
hg.comp hf
#align normed_add_group_hom.isometry_comp NormedAddGroupHom.isometry_comp
+-/
+#print NormedAddGroupHom.normNoninc_of_isometry /-
theorem normNoninc_of_isometry (hf : Isometry f) : f.NormNoninc := fun v =>
le_of_eq <| norm_eq_of_isometry hf v
#align normed_add_group_hom.norm_noninc_of_isometry NormedAddGroupHom.normNoninc_of_isometry
+-/
end Isometry
@@ -904,17 +1072,22 @@ def equalizer :=
namespace Equalizer
+#print NormedAddGroupHom.Equalizer.ι /-
/-- The inclusion of `f.equalizer g` as a `normed_add_group_hom`. -/
def ι : NormedAddGroupHom (f.equalizer g) V :=
incl _
#align normed_add_group_hom.equalizer.ι NormedAddGroupHom.Equalizer.ι
+-/
+#print NormedAddGroupHom.Equalizer.comp_ι_eq /-
theorem comp_ι_eq : f.comp (ι f g) = g.comp (ι f g) := by ext;
rw [comp_apply, comp_apply, ← sub_eq_zero, ← NormedAddGroupHom.sub_apply]; exact x.2
#align normed_add_group_hom.equalizer.comp_ι_eq NormedAddGroupHom.Equalizer.comp_ι_eq
+-/
variable {f g}
+#print NormedAddGroupHom.Equalizer.lift /-
/-- If `φ : normed_add_group_hom V₁ V` is such that `f.comp φ = g.comp φ`, the induced morphism
`normed_add_group_hom V₁ (f.equalizer g)`. -/
@[simps]
@@ -928,12 +1101,16 @@ def lift (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) :
map_add' v₁ v₂ := by ext; simp only [map_add, AddSubgroup.coe_add, Subtype.coe_mk]
bound' := by obtain ⟨C, C_pos, hC⟩ := φ.bound; exact ⟨C, hC⟩
#align normed_add_group_hom.equalizer.lift NormedAddGroupHom.Equalizer.lift
+-/
+#print NormedAddGroupHom.Equalizer.ι_comp_lift /-
@[simp]
theorem ι_comp_lift (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) :
(ι _ _).comp (lift φ h) = φ := by ext; rfl
#align normed_add_group_hom.equalizer.ι_comp_lift NormedAddGroupHom.Equalizer.ι_comp_lift
+-/
+#print NormedAddGroupHom.Equalizer.liftEquiv /-
/-- The lifting property of the equalizer as an equivalence. -/
@[simps]
def liftEquiv :
@@ -944,7 +1121,9 @@ def liftEquiv :
left_inv φ := by simp
right_inv ψ := by ext; rfl
#align normed_add_group_hom.equalizer.lift_equiv NormedAddGroupHom.Equalizer.liftEquiv
+-/
+#print NormedAddGroupHom.Equalizer.map /-
/-- Given `φ : normed_add_group_hom V₁ V₂` and `ψ : normed_add_group_hom W₁ W₂` such that
`ψ.comp f₁ = f₂.comp φ` and `ψ.comp g₁ = g₂.comp φ`, the induced morphism
`normed_add_group_hom (f₁.equalizer g₁) (f₂.equalizer g₂)`. -/
@@ -953,57 +1132,76 @@ def map (φ : NormedAddGroupHom V₁ V₂) (ψ : NormedAddGroupHom W₁ W₂) (h
lift (φ.comp <| ι _ _) <| by simp only [← comp_assoc, ← hf, ← hg];
simp only [comp_assoc, comp_ι_eq]
#align normed_add_group_hom.equalizer.map NormedAddGroupHom.Equalizer.map
+-/
variable {φ : NormedAddGroupHom V₁ V₂} {ψ : NormedAddGroupHom W₁ W₂}
variable {φ' : NormedAddGroupHom V₂ V₃} {ψ' : NormedAddGroupHom W₂ W₃}
+#print NormedAddGroupHom.Equalizer.ι_comp_map /-
@[simp]
theorem ι_comp_map (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ) :
(ι f₂ g₂).comp (map φ ψ hf hg) = φ.comp (ι _ _) :=
ι_comp_lift _ _
#align normed_add_group_hom.equalizer.ι_comp_map NormedAddGroupHom.Equalizer.ι_comp_map
+-/
+#print NormedAddGroupHom.Equalizer.map_id /-
@[simp]
theorem map_id : map (id V₁) (id W₁) rfl rfl = id (f₁.equalizer g₁) := by ext; rfl
#align normed_add_group_hom.equalizer.map_id NormedAddGroupHom.Equalizer.map_id
+-/
+#print NormedAddGroupHom.Equalizer.comm_sq₂ /-
theorem comm_sq₂ (hf : ψ.comp f₁ = f₂.comp φ) (hf' : ψ'.comp f₂ = f₃.comp φ') :
(ψ'.comp ψ).comp f₁ = f₃.comp (φ'.comp φ) := by
rw [comp_assoc, hf, ← comp_assoc, hf', comp_assoc]
#align normed_add_group_hom.equalizer.comm_sq₂ NormedAddGroupHom.Equalizer.comm_sq₂
+-/
+#print NormedAddGroupHom.Equalizer.map_comp_map /-
theorem map_comp_map (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ)
(hf' : ψ'.comp f₂ = f₃.comp φ') (hg' : ψ'.comp g₂ = g₃.comp φ') :
(map φ' ψ' hf' hg').comp (map φ ψ hf hg) =
map (φ'.comp φ) (ψ'.comp ψ) (comm_sq₂ hf hf') (comm_sq₂ hg hg') :=
by ext; rfl
#align normed_add_group_hom.equalizer.map_comp_map NormedAddGroupHom.Equalizer.map_comp_map
+-/
+#print NormedAddGroupHom.Equalizer.ι_normNoninc /-
theorem ι_normNoninc : (ι f g).NormNoninc := fun v => le_rfl
#align normed_add_group_hom.equalizer.ι_norm_noninc NormedAddGroupHom.Equalizer.ι_normNoninc
+-/
+#print NormedAddGroupHom.Equalizer.lift_normNoninc /-
/-- The lifting of a norm nonincreasing morphism is norm nonincreasing. -/
theorem lift_normNoninc (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) (hφ : φ.NormNoninc) :
(lift φ h).NormNoninc :=
hφ
#align normed_add_group_hom.equalizer.lift_norm_noninc NormedAddGroupHom.Equalizer.lift_normNoninc
+-/
+#print NormedAddGroupHom.Equalizer.norm_lift_le /-
/-- If `φ` satisfies `‖φ‖ ≤ C`, then the same is true for the lifted morphism. -/
theorem norm_lift_le (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) (C : ℝ) (hφ : ‖φ‖ ≤ C) :
‖lift φ h‖ ≤ C :=
hφ
#align normed_add_group_hom.equalizer.norm_lift_le NormedAddGroupHom.Equalizer.norm_lift_le
+-/
+#print NormedAddGroupHom.Equalizer.map_normNoninc /-
theorem map_normNoninc (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ)
(hφ : φ.NormNoninc) : (map φ ψ hf hg).NormNoninc :=
lift_normNoninc _ _ <| hφ.comp ι_normNoninc
#align normed_add_group_hom.equalizer.map_norm_noninc NormedAddGroupHom.Equalizer.map_normNoninc
+-/
+#print NormedAddGroupHom.Equalizer.norm_map_le /-
theorem norm_map_le (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ) (C : ℝ)
(hφ : ‖φ.comp (ι f₁ g₁)‖ ≤ C) : ‖map φ ψ hf hg‖ ≤ C :=
norm_lift_le _ _ _ hφ
#align normed_add_group_hom.equalizer.norm_map_le NormedAddGroupHom.Equalizer.norm_map_le
+-/
end Equalizer
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -74,8 +74,7 @@ theorem exists_pos_bound_of_bound {V W : Type _} [SeminormedAddCommGroup V]
⟨max M 1, lt_of_lt_of_le zero_lt_one (le_max_right _ _), fun x =>
calc
‖f x‖ ≤ M * ‖x‖ := h x
- _ ≤ max M 1 * ‖x‖ := mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg _)
- ⟩
+ _ ≤ max M 1 * ‖x‖ := mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg _)⟩
#align exists_pos_bound_of_bound exists_pos_bound_of_bound
namespace NormedAddGroupHom
@@ -338,8 +337,7 @@ instance : Add (NormedAddGroupHom V₁ V₂) :=
calc
‖f v + g v‖ ≤ ‖f v‖ + ‖g v‖ := norm_add_le _ _
_ ≤ ‖f‖ * ‖v‖ + ‖g‖ * ‖v‖ := (add_le_add (le_opNorm f v) (le_opNorm g v))
- _ = (‖f‖ + ‖g‖) * ‖v‖ := by rw [add_mul]
- ⟩
+ _ = (‖f‖ + ‖g‖) * ‖v‖ := by rw [add_mul]⟩
/-- The operator norm satisfies the triangle inequality. -/
theorem opNorm_add_le : ‖f + g‖ ≤ ‖f‖ + ‖g‖ :=
@@ -392,8 +390,7 @@ theorem opNorm_zero_iff {V₁ V₂ : Type _} [NormedAddCommGroup V₁] [NormedAd
norm_le_zero_iff.1
(calc
_ ≤ ‖f‖ * ‖x‖ := le_opNorm _ _
- _ = _ := by rw [hn, MulZeroClass.zero_mul]
- ))
+ _ = _ := by rw [hn, MulZeroClass.zero_mul]))
fun hf => by rw [hf, op_norm_zero]
#align normed_add_group_hom.op_norm_zero_iff NormedAddGroupHom.opNorm_zero_iff
@@ -671,7 +668,6 @@ protected def comp (g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁
‖g (f v)‖ ≤ ‖g‖ * ‖f v‖ := le_opNorm _ _
_ ≤ ‖g‖ * (‖f‖ * ‖v‖) := (mul_le_mul_of_nonneg_left (le_opNorm _ _) (opNorm_nonneg _))
_ = ‖g‖ * ‖f‖ * ‖v‖ := by rw [mul_assoc]
-
#align normed_add_group_hom.comp NormedAddGroupHom.comp
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -217,7 +217,7 @@ theorem SurjectiveOnWith.surjOn {f : NormedAddGroupHom V₁ V₂} {K : AddSubgro
#print NormedAddGroupHom.opNorm /-
/-- The operator norm of a seminormed group homomorphism is the inf of all its bounds. -/
def opNorm (f : NormedAddGroupHom V₁ V₂) :=
- sInf { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ }
+ sInf {c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖}
#align normed_add_group_hom.op_norm NormedAddGroupHom.opNorm
-/
@@ -227,20 +227,20 @@ instance hasOpNorm : Norm (NormedAddGroupHom V₁ V₂) :=
#align normed_add_group_hom.has_op_norm NormedAddGroupHom.hasOpNorm
-/
-theorem norm_def : ‖f‖ = sInf { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } :=
+theorem norm_def : ‖f‖ = sInf {c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖} :=
rfl
#align normed_add_group_hom.norm_def NormedAddGroupHom.norm_def
-- So that invocations of `le_cInf` make sense: we show that the set of
-- bounds is nonempty and bounded below.
theorem bounds_nonempty {f : NormedAddGroupHom V₁ V₂} :
- ∃ c, c ∈ { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } :=
+ ∃ c, c ∈ {c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖} :=
let ⟨M, hMp, hMb⟩ := f.bound
⟨M, le_of_lt hMp, hMb⟩
#align normed_add_group_hom.bounds_nonempty NormedAddGroupHom.bounds_nonempty
theorem bounds_bddBelow {f : NormedAddGroupHom V₁ V₂} :
- BddBelow { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } :=
+ BddBelow {c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖} :=
⟨0, fun _ ⟨hn, _⟩ => hn⟩
#align normed_add_group_hom.bounds_bdd_below NormedAddGroupHom.bounds_bddBelow
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -39,7 +39,7 @@ open scoped NNReal BigOperators
#print NormedAddGroupHom /-
/-- A morphism of seminormed abelian groups is a bounded group homomorphism. -/
structure NormedAddGroupHom (V W : Type _) [SeminormedAddCommGroup V]
- [SeminormedAddCommGroup W] where
+ [SeminormedAddCommGroup W] where
toFun : V → W
map_add' : ∀ v₁ v₂, to_fun (v₁ + v₂) = to_fun v₁ + to_fun v₂
bound' : ∃ C, ∀ v, ‖to_fun v‖ ≤ C * ‖v‖
@@ -254,7 +254,7 @@ theorem le_opNorm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ :=
obtain ⟨C, Cpos, hC⟩ := f.bound
replace hC := hC x
by_cases h : ‖x‖ = 0
- · rwa [h, MulZeroClass.mul_zero] at hC⊢
+ · rwa [h, MulZeroClass.mul_zero] at hC ⊢
have hlt : 0 < ‖x‖ := lt_of_le_of_ne (norm_nonneg x) (Ne.symm h)
exact
(div_le_iff hlt).mp
@@ -436,7 +436,7 @@ theorem norm_id_of_nontrivial_seminorm (h : ∃ x : V, ‖x‖ ≠ 0) : ‖id V
le_antisymm (norm_id_le V) <| by
let ⟨x, hx⟩ := h
have := (id V).ratio_le_opNorm x
- rwa [id_apply, div_self hx] at this
+ rwa [id_apply, div_self hx] at this
#align normed_add_group_hom.norm_id_of_nontrivial_seminorm NormedAddGroupHom.norm_id_of_nontrivial_seminorm
/-- If a normed space is non-trivial, then the norm of the identity equals `1`. -/
@@ -517,7 +517,7 @@ instance : SMul R (NormedAddGroupHom V₁ V₂)
let ⟨b, hb⟩ := f.bound'
⟨dist r 0 * b, fun x => by
have := dist_smul_pair r (f x) (f 0)
- rw [map_zero, smul_zero, dist_zero_right, dist_zero_right] at this
+ rw [map_zero, smul_zero, dist_zero_right, dist_zero_right] at this
rw [mul_assoc]
refine' this.trans _
refine' mul_le_mul_of_nonneg_left _ dist_nonneg
@@ -692,8 +692,8 @@ theorem norm_comp_le_of_le' {g : NormedAddGroupHom V₂ V₃} (C₁ C₂ C₃ :
/-- Composition of normed groups hom as an additive group morphism. -/
def compHom : NormedAddGroupHom V₂ V₃ →+ NormedAddGroupHom V₁ V₂ →+ NormedAddGroupHom V₁ V₃ :=
AddMonoidHom.mk'
- (fun g => AddMonoidHom.mk' (fun f => g.comp f) (by intros ; ext; exact map_add g _ _))
- (by intros ; ext;
+ (fun g => AddMonoidHom.mk' (fun f => g.comp f) (by intros; ext; exact map_add g _ _))
+ (by intros; ext;
simp only [comp_apply, Pi.add_apply, Function.comp_apply, AddMonoidHom.add_apply,
AddMonoidHom.mk'_apply, coe_add])
#align normed_add_group_hom.comp_hom NormedAddGroupHom.compHom
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -34,7 +34,7 @@ theory of `seminormed_add_group_hom` and we specialize to `normed_add_group_hom`
noncomputable section
-open NNReal BigOperators
+open scoped NNReal BigOperators
#print NormedAddGroupHom /-
/-- A morphism of seminormed abelian groups is a bounded group homomorphism. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -51,12 +51,6 @@ namespace AddMonoidHom
variable {V W : Type _} [SeminormedAddCommGroup V] [SeminormedAddCommGroup W]
{f g : NormedAddGroupHom V W}
-/- warning: add_monoid_hom.mk_normed_add_group_hom -> AddMonoidHom.mkNormedAddGroupHom is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : Real), (forall (v : V), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} W (SeminormedAddCommGroup.toHasNorm.{u2} W _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (fun (_x : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) => V -> W) (AddMonoidHom.hasCoeToFun.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) v))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
-but is expected to have type
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : Real), (forall (v : V), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) v) (SeminormedAddCommGroup.toNorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) v) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) _x) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddZeroClass.toAdd.{u1} V (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))))) (AddZeroClass.toAdd.{u2} W (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2))))) (AddMonoidHom.addMonoidHomClass.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u1} V (SeminormedAddCommGroup.toNorm.{u1} V _inst_1) v))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom AddMonoidHom.mkNormedAddGroupHomₓ'. -/
/-- Associate to a group homomorphism a bounded group homomorphism under a norm control condition.
See `add_monoid_hom.mk_normed_add_group_hom'` for a version that uses `ℝ≥0` for the bound. -/
@@ -64,12 +58,6 @@ def mkNormedAddGroupHom (f : V →+ W) (C : ℝ) (h : ∀ v, ‖f v‖ ≤ C *
{ f with bound' := ⟨C, h⟩ }
#align add_monoid_hom.mk_normed_add_group_hom AddMonoidHom.mkNormedAddGroupHom
-/- warning: add_monoid_hom.mk_normed_add_group_hom' -> AddMonoidHom.mkNormedAddGroupHom' is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : NNReal), (forall (x : V), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} W (SeminormedAddGroup.toNNNorm.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (fun (_x : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) => V -> W) (AddMonoidHom.hasCoeToFun.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) C (NNNorm.nnnorm.{u1} V (SeminormedAddGroup.toNNNorm.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)) x))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
-but is expected to have type
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : NNReal), (forall (x : V), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) x) (SeminormedAddGroup.toNNNorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) x) (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) x) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) _x) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddZeroClass.toAdd.{u1} V (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))))) (AddZeroClass.toAdd.{u2} W (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2))))) (AddMonoidHom.addMonoidHomClass.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) C (NNNorm.nnnorm.{u1} V (SeminormedAddGroup.toNNNorm.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)) x))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom' AddMonoidHom.mkNormedAddGroupHom'ₓ'. -/
/-- Associate to a group homomorphism a bounded group homomorphism under a norm control condition.
See `add_monoid_hom.mk_normed_add_group_hom` for a version that uses `ℝ` for the bound. -/
@@ -80,12 +68,6 @@ def mkNormedAddGroupHom' (f : V →+ W) (C : ℝ≥0) (hC : ∀ x, ‖f x‖₊
end AddMonoidHom
-/- warning: exists_pos_bound_of_bound -> exists_pos_bound_of_bound is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] {f : V -> W} (M : Real), (forall (x : V), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} W (SeminormedAddCommGroup.toHasNorm.{u2} W _inst_2) (f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) M (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) x))) -> (Exists.{1} Real (fun (N : Real) => And (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) N) (forall (x : V), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} W (SeminormedAddCommGroup.toHasNorm.{u2} W _inst_2) (f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) N (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) x)))))
-but is expected to have type
- forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] {f : V -> W} (M : Real), (forall (x : V), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} W (SeminormedAddCommGroup.toNorm.{u1} W _inst_2) (f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) M (Norm.norm.{u2} V (SeminormedAddCommGroup.toNorm.{u2} V _inst_1) x))) -> (Exists.{1} Real (fun (N : Real) => And (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) N) (forall (x : V), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} W (SeminormedAddCommGroup.toNorm.{u1} W _inst_2) (f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) N (Norm.norm.{u2} V (SeminormedAddCommGroup.toNorm.{u2} V _inst_1) x)))))
-Case conversion may be inaccurate. Consider using '#align exists_pos_bound_of_bound exists_pos_bound_of_boundₓ'. -/
theorem exists_pos_bound_of_bound {V W : Type _} [SeminormedAddCommGroup V]
[SeminormedAddCommGroup W] {f : V → W} (M : ℝ) (h : ∀ x, ‖f x‖ ≤ M * ‖x‖) :
∃ N, 0 < N ∧ ∀ x, ‖f x‖ ≤ N * ‖x‖ :=
@@ -108,12 +90,6 @@ instance : CoeFun (NormedAddGroupHom V₁ V₂) fun _ => V₁ → V₂ :=
initialize_simps_projections NormedAddGroupHom (toFun → apply)
-/- warning: normed_add_group_hom.coe_inj -> NormedAddGroupHom.coe_inj is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3}, (Eq.{max (succ u1) (succ u2)} ((fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g)) -> (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) f g)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3}, (Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g)) -> (Eq.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) f g)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_inj NormedAddGroupHom.coe_injₓ'. -/
theorem coe_inj (H : (f : V₁ → V₂) = g) : f = g := by
cases f <;> cases g <;> congr <;> exact funext H
#align normed_add_group_hom.coe_inj NormedAddGroupHom.coe_inj
@@ -124,12 +100,6 @@ theorem coe_injective : @Function.Injective (NormedAddGroupHom V₁ V₂) (V₁
#align normed_add_group_hom.coe_injective NormedAddGroupHom.coe_injective
-/
-/- warning: normed_add_group_hom.coe_inj_iff -> NormedAddGroupHom.coe_inj_iff is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3}, Iff (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) f g) (Eq.{max (succ u1) (succ u2)} ((fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3}, Iff (Eq.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) f g) (Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_inj_iff NormedAddGroupHom.coe_inj_iffₓ'. -/
theorem coe_inj_iff : f = g ↔ (f : V₁ → V₂) = g :=
⟨congr_arg _, coe_inj⟩
#align normed_add_group_hom.coe_inj_iff NormedAddGroupHom.coe_inj_iff
@@ -141,51 +111,27 @@ theorem ext (H : ∀ x, f x = g x) : f = g :=
#align normed_add_group_hom.ext NormedAddGroupHom.ext
-/
-/- warning: normed_add_group_hom.ext_iff -> NormedAddGroupHom.ext_iff is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3}, Iff (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) f g) (forall (x : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g x))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3}, Iff (Eq.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) f g) (forall (x : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g x))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.ext_iff NormedAddGroupHom.ext_iffₓ'. -/
theorem ext_iff : f = g ↔ ∀ x, f x = g x :=
⟨by rintro rfl x <;> rfl, ext⟩
#align normed_add_group_hom.ext_iff NormedAddGroupHom.ext_iff
variable (f g)
-/- warning: normed_add_group_hom.to_fun_eq_coe -> NormedAddGroupHom.toFun_eq_coe is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (NormedAddGroupHom.toFun.{u1, u2} V₁ V₂ _inst_2 _inst_3 f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (NormedAddGroupHom.toFun.{u2, u1} V₁ V₂ _inst_2 _inst_3 f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.to_fun_eq_coe NormedAddGroupHom.toFun_eq_coeₓ'. -/
@[simp]
theorem toFun_eq_coe : f.toFun = f :=
rfl
#align normed_add_group_hom.to_fun_eq_coe NormedAddGroupHom.toFun_eq_coe
-/- warning: normed_add_group_hom.coe_mk -> NormedAddGroupHom.coe_mk is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : V₁ -> V₂) (h₁ : forall (v₁ : V₁) (v₂ : V₁), Eq.{succ u2} V₂ (f (HAdd.hAdd.{u1, u1, u1} V₁ V₁ V₁ (instHAdd.{u1} V₁ (AddZeroClass.toHasAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))))) v₁ v₂)) (HAdd.hAdd.{u2, u2, u2} V₂ V₂ V₂ (instHAdd.{u2} V₂ (AddZeroClass.toHasAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))))) (f v₁) (f v₂))) (h₂ : Real) (h₃ : forall (v : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) h₂ (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) v))), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.mk.{u1, u2} V₁ V₂ _inst_2 _inst_3 f h₁ (Exists.intro.{1} Real (fun (C : Real) => forall (v : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) v))) h₂ h₃))) f
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : V₁ -> V₂) (h₁ : forall (v₁ : V₁) (v₂ : V₁), Eq.{succ u2} V₂ (f (HAdd.hAdd.{u1, u1, u1} V₁ V₁ V₁ (instHAdd.{u1} V₁ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))))) v₁ v₂)) (HAdd.hAdd.{u2, u2, u2} V₂ V₂ V₂ (instHAdd.{u2} V₂ (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))))) (f v₁) (f v₂))) (h₂ : Real) (h₃ : forall (v : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) h₂ (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) v))), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) (NormedAddGroupHom.mk.{u1, u2} V₁ V₂ _inst_2 _inst_3 f h₁ (Exists.intro.{1} Real (fun (C : Real) => forall (v : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) v))) h₂ h₃))) f
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_mk NormedAddGroupHom.coe_mkₓ'. -/
@[simp]
theorem coe_mk (f) (h₁) (h₂) (h₃) : ⇑(⟨f, h₁, h₂, h₃⟩ : NormedAddGroupHom V₁ V₂) = f :=
rfl
#align normed_add_group_hom.coe_mk NormedAddGroupHom.coe_mk
-/- warning: normed_add_group_hom.coe_mk_normed_add_group_hom -> NormedAddGroupHom.coe_mkNormedAddGroupHom is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_mk_normed_add_group_hom NormedAddGroupHom.coe_mkNormedAddGroupHomₓ'. -/
@[simp]
theorem coe_mkNormedAddGroupHom (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAddGroupHom C hC) = f :=
rfl
#align normed_add_group_hom.coe_mk_normed_add_group_hom NormedAddGroupHom.coe_mkNormedAddGroupHom
-/- warning: normed_add_group_hom.coe_mk_normed_add_group_hom' -> NormedAddGroupHom.coe_mkNormedAddGroupHom' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_mk_normed_add_group_hom' NormedAddGroupHom.coe_mkNormedAddGroupHom'ₓ'. -/
@[simp]
theorem coe_mkNormedAddGroupHom' (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAddGroupHom' C hC) = f :=
rfl
@@ -198,34 +144,16 @@ def toAddMonoidHom (f : NormedAddGroupHom V₁ V₂) : V₁ →+ V₂ :=
#align normed_add_group_hom.to_add_monoid_hom NormedAddGroupHom.toAddMonoidHom
-/
-/- warning: normed_add_group_hom.coe_to_add_monoid_hom -> NormedAddGroupHom.coe_toAddMonoidHom is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (NormedAddGroupHom.toAddMonoidHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : V₁), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) (NormedAddGroupHom.toAddMonoidHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_to_add_monoid_hom NormedAddGroupHom.coe_toAddMonoidHomₓ'. -/
@[simp]
theorem coe_toAddMonoidHom : ⇑f.toAddMonoidHom = f :=
rfl
#align normed_add_group_hom.coe_to_add_monoid_hom NormedAddGroupHom.coe_toAddMonoidHom
-/- warning: normed_add_group_hom.to_add_monoid_hom_injective -> NormedAddGroupHom.toAddMonoidHom_injective is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂], Function.Injective.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (NormedAddGroupHom.toAddMonoidHom.{u1, u2} V₁ V₂ _inst_2 _inst_3)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂], Function.Injective.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (NormedAddGroupHom.toAddMonoidHom.{u2, u1} V₁ V₂ _inst_2 _inst_3)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.to_add_monoid_hom_injective NormedAddGroupHom.toAddMonoidHom_injectiveₓ'. -/
theorem toAddMonoidHom_injective :
Function.Injective (@NormedAddGroupHom.toAddMonoidHom V₁ V₂ _ _) := fun f g h =>
coe_inj <| show ⇑f.toAddMonoidHom = g by rw [h]; rfl
#align normed_add_group_hom.to_add_monoid_hom_injective NormedAddGroupHom.toAddMonoidHom_injective
-/- warning: normed_add_group_hom.mk_to_add_monoid_hom -> NormedAddGroupHom.mk_toAddMonoidHom is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : V₁ -> V₂) (h₁ : forall (v₁ : V₁) (v₂ : V₁), Eq.{succ u2} V₂ (f (HAdd.hAdd.{u1, u1, u1} V₁ V₁ V₁ (instHAdd.{u1} V₁ (AddZeroClass.toHasAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))))) v₁ v₂)) (HAdd.hAdd.{u2, u2, u2} V₂ V₂ V₂ (instHAdd.{u2} V₂ (AddZeroClass.toHasAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))))) (f v₁) (f v₂))) (h₂ : Exists.{1} Real (fun (C : Real) => forall (v : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) v)))), Eq.{max (succ u2) (succ u1)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (NormedAddGroupHom.toAddMonoidHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 (NormedAddGroupHom.mk.{u1, u2} V₁ V₂ _inst_2 _inst_3 f h₁ h₂)) (AddMonoidHom.mk'.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)) f h₁)
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : V₁ -> V₂) (h₁ : forall (v₁ : V₁) (v₂ : V₁), Eq.{succ u2} V₂ (f (HAdd.hAdd.{u1, u1, u1} V₁ V₁ V₁ (instHAdd.{u1} V₁ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))))) v₁ v₂)) (HAdd.hAdd.{u2, u2, u2} V₂ V₂ V₂ (instHAdd.{u2} V₂ (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))))) (f v₁) (f v₂))) (h₂ : Exists.{1} Real (fun (C : Real) => forall (v : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) v)))), Eq.{max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (NormedAddGroupHom.toAddMonoidHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 (NormedAddGroupHom.mk.{u1, u2} V₁ V₂ _inst_2 _inst_3 f h₁ h₂)) (AddMonoidHom.mk'.{u1, u2} V₁ V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)) (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) f h₁)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mk_to_add_monoid_hom NormedAddGroupHom.mk_toAddMonoidHomₓ'. -/
@[simp]
theorem mk_toAddMonoidHom (f) (h₁) (h₂) :
(⟨f, h₁, h₂⟩ : NormedAddGroupHom V₁ V₂).toAddMonoidHom = AddMonoidHom.mk' f h₁ :=
@@ -239,23 +167,11 @@ instance : AddMonoidHomClass (NormedAddGroupHom V₁ V₂) V₁ V₂
map_add f := f.toAddMonoidHom.map_add
map_zero f := f.toAddMonoidHom.map_zero
-/- warning: normed_add_group_hom.bound -> NormedAddGroupHom.bound is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Exists.{1} Real (fun (C : Real) => And (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) C) (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))))
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Exists.{1} Real (fun (C : Real) => And (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) C) (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) x))))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.bound NormedAddGroupHom.boundₓ'. -/
theorem bound : ∃ C, 0 < C ∧ ∀ x, ‖f x‖ ≤ C * ‖x‖ :=
let ⟨C, hC⟩ := f.bound'
exists_pos_bound_of_bound _ hC
#align normed_add_group_hom.bound NormedAddGroupHom.bound
-/- warning: normed_add_group_hom.antilipschitz_of_norm_ge -> NormedAddGroupHom.antilipschitz_of_norm_ge is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {K : NNReal}, (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) NNReal Real (HasLiftT.mk.{1, 1} NNReal Real (CoeTCₓ.coe.{1, 1} NNReal Real (coeBase.{1, 1} NNReal Real NNReal.Real.hasCoe))) K) (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)))) -> (AntilipschitzWith.{u1, u2} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_2)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3)) K (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) {K : NNReal}, (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (NNReal.toReal K) (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)))) -> (AntilipschitzWith.{u2, u1} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₁ _inst_2)) (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₂ _inst_3)) K (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.antilipschitz_of_norm_ge NormedAddGroupHom.antilipschitz_of_norm_geₓ'. -/
theorem antilipschitz_of_norm_ge {K : ℝ≥0} (h : ∀ x, ‖x‖ ≤ K * ‖f x‖) : AntilipschitzWith K f :=
AntilipschitzWith.of_le_mul_dist fun x y => by simpa only [dist_eq_norm, map_sub] using h (x - y)
#align normed_add_group_hom.antilipschitz_of_norm_ge NormedAddGroupHom.antilipschitz_of_norm_ge
@@ -270,12 +186,6 @@ def SurjectiveOnWith (f : NormedAddGroupHom V₁ V₂) (K : AddSubgroup V₂) (C
#align normed_add_group_hom.surjective_on_with NormedAddGroupHom.SurjectiveOnWith
-/
-/- warning: normed_add_group_hom.surjective_on_with.mono -> NormedAddGroupHom.SurjectiveOnWith.mono is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {K : AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))} {C : Real} {C' : Real}, (NormedAddGroupHom.SurjectiveOnWith.{u1, u2} V₁ V₂ _inst_2 _inst_3 f K C) -> (LE.le.{0} Real Real.hasLe C C') -> (NormedAddGroupHom.SurjectiveOnWith.{u1, u2} V₁ V₂ _inst_2 _inst_3 f K C')
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {K : AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))} {C : Real} {C' : Real}, (NormedAddGroupHom.SurjectiveOnWith.{u2, u1} V₁ V₂ _inst_2 _inst_3 f K C) -> (LE.le.{0} Real Real.instLEReal C C') -> (NormedAddGroupHom.SurjectiveOnWith.{u2, u1} V₁ V₂ _inst_2 _inst_3 f K C')
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.surjective_on_with.mono NormedAddGroupHom.SurjectiveOnWith.monoₓ'. -/
theorem SurjectiveOnWith.mono {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup V₂} {C C' : ℝ}
(h : f.SurjectiveOnWith K C) (H : C ≤ C') : f.SurjectiveOnWith K C' :=
by
@@ -287,12 +197,6 @@ theorem SurjectiveOnWith.mono {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup
· exact hg.trans ((mul_le_mul_right <| (Ne.symm Hg).le_iff_lt.mp (norm_nonneg _)).mpr H)
#align normed_add_group_hom.surjective_on_with.mono NormedAddGroupHom.SurjectiveOnWith.mono
-/- warning: normed_add_group_hom.surjective_on_with.exists_pos -> NormedAddGroupHom.SurjectiveOnWith.exists_pos is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {K : AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))} {C : Real}, (NormedAddGroupHom.SurjectiveOnWith.{u1, u2} V₁ V₂ _inst_2 _inst_3 f K C) -> (Exists.{1} Real (fun (C' : Real) => Exists.{0} (GT.gt.{0} Real Real.hasLt C' (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (fun (H : GT.gt.{0} Real Real.hasLt C' (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) => NormedAddGroupHom.SurjectiveOnWith.{u1, u2} V₁ V₂ _inst_2 _inst_3 f K C')))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {K : AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))} {C : Real}, (NormedAddGroupHom.SurjectiveOnWith.{u2, u1} V₁ V₂ _inst_2 _inst_3 f K C) -> (Exists.{1} Real (fun (C' : Real) => And (GT.gt.{0} Real Real.instLTReal C' (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (NormedAddGroupHom.SurjectiveOnWith.{u2, u1} V₁ V₂ _inst_2 _inst_3 f K C')))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.surjective_on_with.exists_pos NormedAddGroupHom.SurjectiveOnWith.exists_posₓ'. -/
theorem SurjectiveOnWith.exists_pos {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup V₂} {C : ℝ}
(h : f.SurjectiveOnWith K C) : ∃ C' > 0, f.SurjectiveOnWith K C' :=
by
@@ -302,12 +206,6 @@ theorem SurjectiveOnWith.exists_pos {f : NormedAddGroupHom V₁ V₂} {K : AddSu
linarith [le_abs_self C]
#align normed_add_group_hom.surjective_on_with.exists_pos NormedAddGroupHom.SurjectiveOnWith.exists_pos
-/- warning: normed_add_group_hom.surjective_on_with.surj_on -> NormedAddGroupHom.SurjectiveOnWith.surjOn is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {K : AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))} {C : Real}, (NormedAddGroupHom.SurjectiveOnWith.{u1, u2} V₁ V₂ _inst_2 _inst_3 f K C) -> (Set.SurjOn.{u1, u2} V₁ V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (Set.univ.{u1} V₁) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))) (Set.{u2} V₂) (HasLiftT.mk.{succ u2, succ u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))) (Set.{u2} V₂) (CoeTCₓ.coe.{succ u2, succ u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))) (Set.{u2} V₂) (SetLike.Set.hasCoeT.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) K))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {K : AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))} {C : Real}, (NormedAddGroupHom.SurjectiveOnWith.{u2, u1} V₁ V₂ _inst_2 _inst_3 f K C) -> (Set.SurjOn.{u2, u1} V₁ V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f) (Set.univ.{u2} V₁) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))) K))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.surjective_on_with.surj_on NormedAddGroupHom.SurjectiveOnWith.surjOnₓ'. -/
theorem SurjectiveOnWith.surjOn {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup V₂} {C : ℝ}
(h : f.SurjectiveOnWith K C) : Set.SurjOn f Set.univ K := fun x hx =>
(h x hx).imp fun a ⟨ha, _⟩ => ⟨Set.mem_univ _, ha⟩
@@ -329,22 +227,10 @@ instance hasOpNorm : Norm (NormedAddGroupHom V₁ V₂) :=
#align normed_add_group_hom.has_op_norm NormedAddGroupHom.hasOpNorm
-/
-/- warning: normed_add_group_hom.norm_def -> NormedAddGroupHom.norm_def is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (InfSet.sInf.{0} Real Real.hasInf (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) c) (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) c (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))))))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{1} Real (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) (InfSet.sInf.{0} Real Real.instInfSetReal (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) c) (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) c (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))))))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_def NormedAddGroupHom.norm_defₓ'. -/
theorem norm_def : ‖f‖ = sInf { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } :=
rfl
#align normed_add_group_hom.norm_def NormedAddGroupHom.norm_def
-/- warning: normed_add_group_hom.bounds_nonempty -> NormedAddGroupHom.bounds_nonempty is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3}, Exists.{1} Real (fun (c : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) c (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) c) (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) c (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))))))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3}, Exists.{1} Real (fun (c : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) c (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) c) (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) c (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))))))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.bounds_nonempty NormedAddGroupHom.bounds_nonemptyₓ'. -/
-- So that invocations of `le_cInf` make sense: we show that the set of
-- bounds is nonempty and bounded below.
theorem bounds_nonempty {f : NormedAddGroupHom V₁ V₂} :
@@ -353,33 +239,15 @@ theorem bounds_nonempty {f : NormedAddGroupHom V₁ V₂} :
⟨M, le_of_lt hMp, hMb⟩
#align normed_add_group_hom.bounds_nonempty NormedAddGroupHom.bounds_nonempty
-/- warning: normed_add_group_hom.bounds_bdd_below -> NormedAddGroupHom.bounds_bddBelow is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3}, BddBelow.{0} Real Real.preorder (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) c) (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) c (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x)))))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3}, BddBelow.{0} Real Real.instPreorderReal (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) c) (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) c (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x)))))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.bounds_bdd_below NormedAddGroupHom.bounds_bddBelowₓ'. -/
theorem bounds_bddBelow {f : NormedAddGroupHom V₁ V₂} :
BddBelow { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } :=
⟨0, fun _ ⟨hn, _⟩ => hn⟩
#align normed_add_group_hom.bounds_bdd_below NormedAddGroupHom.bounds_bddBelow
-/- warning: normed_add_group_hom.op_norm_nonneg -> NormedAddGroupHom.opNorm_nonneg is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_nonneg NormedAddGroupHom.opNorm_nonnegₓ'. -/
theorem opNorm_nonneg : 0 ≤ ‖f‖ :=
le_csInf bounds_nonempty fun _ ⟨hx, _⟩ => hx
#align normed_add_group_hom.op_norm_nonneg NormedAddGroupHom.opNorm_nonneg
-/- warning: normed_add_group_hom.le_op_norm -> NormedAddGroupHom.le_opNorm is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) x))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.le_op_norm NormedAddGroupHom.le_opNormₓ'. -/
/-- The fundamental property of the operator norm: `‖f x‖ ≤ ‖f‖ * ‖x‖`. -/
theorem le_opNorm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ :=
by
@@ -393,86 +261,38 @@ theorem le_opNorm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ :=
(le_csInf bounds_nonempty fun c ⟨_, hc⟩ => (div_le_iff hlt).mpr <| by apply hc)
#align normed_add_group_hom.le_op_norm NormedAddGroupHom.le_opNorm
-/- warning: normed_add_group_hom.le_op_norm_of_le -> NormedAddGroupHom.le_opNorm_of_le is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {c : Real} {x : V₁}, (LE.le.{0} Real Real.hasLe (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x) c) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) c))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) {c : Real} {x : V₁}, (LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x) c) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) c))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.le_op_norm_of_le NormedAddGroupHom.le_opNorm_of_leₓ'. -/
theorem le_opNorm_of_le {c : ℝ} {x} (h : ‖x‖ ≤ c) : ‖f x‖ ≤ ‖f‖ * c :=
le_trans (f.le_opNorm x) (mul_le_mul_of_nonneg_left h f.opNorm_nonneg)
#align normed_add_group_hom.le_op_norm_of_le NormedAddGroupHom.le_opNorm_of_le
-/- warning: normed_add_group_hom.le_of_op_norm_le -> NormedAddGroupHom.le_of_opNorm_le is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {c : Real}, (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) c) -> (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) c (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x)))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) {c : Real}, (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) c) -> (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) c (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.le_of_op_norm_le NormedAddGroupHom.le_of_opNorm_leₓ'. -/
theorem le_of_opNorm_le {c : ℝ} (h : ‖f‖ ≤ c) (x : V₁) : ‖f x‖ ≤ c * ‖x‖ :=
(f.le_opNorm x).trans (mul_le_mul_of_nonneg_right h (norm_nonneg x))
#align normed_add_group_hom.le_of_op_norm_le NormedAddGroupHom.le_of_opNorm_le
-/- warning: normed_add_group_hom.lipschitz -> NormedAddGroupHom.lipschitz is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), LipschitzWith.{u1, u2} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_2)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3)) (Subtype.mk.{1} Real (fun (r : Real) => LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (NormedAddGroupHom.opNorm_nonneg.{u1, u2} V₁ V₂ _inst_2 _inst_3 f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), LipschitzWith.{u2, u1} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₁ _inst_2)) (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₂ _inst_3)) (Subtype.mk.{1} Real (fun (r : Real) => LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) (NormedAddGroupHom.opNorm_nonneg.{u1, u2} V₁ V₂ _inst_2 _inst_3 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lipschitz NormedAddGroupHom.lipschitzₓ'. -/
/-- continuous linear maps are Lipschitz continuous. -/
theorem lipschitz : LipschitzWith ⟨‖f‖, opNorm_nonneg f⟩ f :=
LipschitzWith.of_dist_le_mul fun x y => by rw [dist_eq_norm, dist_eq_norm, ← map_sub];
apply le_op_norm
#align normed_add_group_hom.lipschitz NormedAddGroupHom.lipschitz
-/- warning: normed_add_group_hom.uniform_continuous -> NormedAddGroupHom.uniformContinuous is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), UniformContinuous.{u1, u2} V₁ V₂ (PseudoMetricSpace.toUniformSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_2)) (PseudoMetricSpace.toUniformSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), UniformContinuous.{u2, u1} V₁ V₂ (PseudoMetricSpace.toUniformSpace.{u2} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₁ _inst_2)) (PseudoMetricSpace.toUniformSpace.{u1} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₂ _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.uniform_continuous NormedAddGroupHom.uniformContinuousₓ'. -/
protected theorem uniformContinuous (f : NormedAddGroupHom V₁ V₂) : UniformContinuous f :=
f.lipschitz.UniformContinuous
#align normed_add_group_hom.uniform_continuous NormedAddGroupHom.uniformContinuous
-/- warning: normed_add_group_hom.continuous -> NormedAddGroupHom.continuous is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Continuous.{u1, u2} V₁ V₂ (UniformSpace.toTopologicalSpace.{u1} V₁ (PseudoMetricSpace.toUniformSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_2))) (UniformSpace.toTopologicalSpace.{u2} V₂ (PseudoMetricSpace.toUniformSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Continuous.{u2, u1} V₁ V₂ (UniformSpace.toTopologicalSpace.{u2} V₁ (PseudoMetricSpace.toUniformSpace.{u2} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₁ _inst_2))) (UniformSpace.toTopologicalSpace.{u1} V₂ (PseudoMetricSpace.toUniformSpace.{u1} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₂ _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.continuous NormedAddGroupHom.continuousₓ'. -/
@[continuity]
protected theorem continuous (f : NormedAddGroupHom V₁ V₂) : Continuous f :=
f.UniformContinuous.Continuous
#align normed_add_group_hom.continuous NormedAddGroupHom.continuous
-/- warning: normed_add_group_hom.ratio_le_op_norm -> NormedAddGroupHom.ratio_le_opNorm is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (x : V₁), LE.le.{0} Real Real.hasLe (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x)) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (x : V₁), LE.le.{0} Real Real.instLEReal (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) f x)) (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) x)) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.ratio_le_op_norm NormedAddGroupHom.ratio_le_opNormₓ'. -/
theorem ratio_le_opNorm (x : V₁) : ‖f x‖ / ‖x‖ ≤ ‖f‖ :=
div_le_of_nonneg_of_le_mul (norm_nonneg _) f.opNorm_nonneg (le_opNorm _ _)
#align normed_add_group_hom.ratio_le_op_norm NormedAddGroupHom.ratio_le_opNorm
-/- warning: normed_add_group_hom.op_norm_le_bound -> NormedAddGroupHom.opNorm_le_bound is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {M : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) M) -> (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) M (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) M)
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {M : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) M) -> (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) M (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) x))) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) M)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_le_bound NormedAddGroupHom.opNorm_le_boundₓ'. -/
/-- If one controls the norm of every `f x`, then one controls the norm of `f`. -/
theorem opNorm_le_bound {M : ℝ} (hMp : 0 ≤ M) (hM : ∀ x, ‖f x‖ ≤ M * ‖x‖) : ‖f‖ ≤ M :=
csInf_le bounds_bddBelow ⟨hMp, hM⟩
#align normed_add_group_hom.op_norm_le_bound NormedAddGroupHom.opNorm_le_bound
-/- warning: normed_add_group_hom.op_norm_eq_of_bounds -> NormedAddGroupHom.opNorm_eq_of_bounds is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {M : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) M) -> (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) M (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))) -> (forall (N : Real), (GE.ge.{0} Real Real.hasLe N (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) N (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))) -> (LE.le.{0} Real Real.hasLe M N)) -> (Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) M)
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {M : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) M) -> (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) M (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) x))) -> (forall (N : Real), (GE.ge.{0} Real Real.instLEReal N (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) N (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) x))) -> (LE.le.{0} Real Real.instLEReal M N)) -> (Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) M)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_eq_of_bounds NormedAddGroupHom.opNorm_eq_of_boundsₓ'. -/
theorem opNorm_eq_of_bounds {M : ℝ} (M_nonneg : 0 ≤ M) (h_above : ∀ x, ‖f x‖ ≤ M * ‖x‖)
(h_below : ∀ N ≥ 0, (∀ x, ‖f x‖ ≤ N * ‖x‖) → M ≤ N) : ‖f‖ = M :=
le_antisymm (f.opNorm_le_bound M_nonneg h_above)
@@ -480,23 +300,11 @@ theorem opNorm_eq_of_bounds {M : ℝ} (M_nonneg : 0 ≤ M) (h_above : ∀ x, ‖
fun N ⟨N_nonneg, hN⟩ => h_below N N_nonneg hN)
#align normed_add_group_hom.op_norm_eq_of_bounds NormedAddGroupHom.opNorm_eq_of_bounds
-/- warning: normed_add_group_hom.op_norm_le_of_lipschitz -> NormedAddGroupHom.opNorm_le_of_lipschitz is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {K : NNReal}, (LipschitzWith.{u1, u2} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_2)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3)) K (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) NNReal Real (HasLiftT.mk.{1, 1} NNReal Real (CoeTCₓ.coe.{1, 1} NNReal Real (coeBase.{1, 1} NNReal Real NNReal.Real.hasCoe))) K))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {K : NNReal}, (LipschitzWith.{u2, u1} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₁ _inst_2)) (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₂ _inst_3)) K (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) (NNReal.toReal K))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_le_of_lipschitz NormedAddGroupHom.opNorm_le_of_lipschitzₓ'. -/
theorem opNorm_le_of_lipschitz {f : NormedAddGroupHom V₁ V₂} {K : ℝ≥0} (hf : LipschitzWith K f) :
‖f‖ ≤ K :=
f.opNorm_le_bound K.2 fun x => by simpa only [dist_zero_right, map_zero] using hf.dist_le_mul x 0
#align normed_add_group_hom.op_norm_le_of_lipschitz NormedAddGroupHom.opNorm_le_of_lipschitz
-/- warning: normed_add_group_hom.mk_normed_add_group_hom_norm_le -> NormedAddGroupHom.mkNormedAddGroupHom_norm_le is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C h)) C)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) C)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mk_normed_add_group_hom_norm_le NormedAddGroupHom.mkNormedAddGroupHom_norm_leₓ'. -/
/-- If a bounded group homomorphism map is constructed from a group homomorphism via the constructor
`mk_normed_add_group_hom`, then its norm is bounded by the bound given to the constructor if it is
nonnegative. -/
@@ -505,12 +313,6 @@ theorem mkNormedAddGroupHom_norm_le (f : V₁ →+ V₂) {C : ℝ} (hC : 0 ≤ C
opNorm_le_bound _ hC h
#align normed_add_group_hom.mk_normed_add_group_hom_norm_le NormedAddGroupHom.mkNormedAddGroupHom_norm_le
-/- warning: normed_add_group_hom.mk_normed_add_group_hom_norm_le' -> NormedAddGroupHom.mkNormedAddGroupHom_norm_le' is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C h)) (LinearOrder.max.{0} Real Real.linearOrder C (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) (Max.max.{0} Real (LinearOrderedRing.toMax.{0} Real Real.instLinearOrderedRingReal) C (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mk_normed_add_group_hom_norm_le' NormedAddGroupHom.mkNormedAddGroupHom_norm_le'ₓ'. -/
/-- If a bounded group homomorphism map is constructed from a group homomorphism
via the constructor `mk_normed_add_group_hom`, then its norm is bounded by the bound
given to the constructor or zero if this bound is negative. -/
@@ -520,21 +322,9 @@ theorem mkNormedAddGroupHom_norm_le' (f : V₁ →+ V₂) {C : ℝ} (h : ∀ x,
(h x).trans <| mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg x)
#align normed_add_group_hom.mk_normed_add_group_hom_norm_le' NormedAddGroupHom.mkNormedAddGroupHom_norm_le'
-/- warning: add_monoid_hom.mk_normed_add_group_hom_norm_le -> AddMonoidHom.mkNormedAddGroupHom_norm_le is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C h)) C)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) C)
-Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom_norm_le AddMonoidHom.mkNormedAddGroupHom_norm_leₓ'. -/
alias mk_normed_add_group_hom_norm_le ← _root_.add_monoid_hom.mk_normed_add_group_hom_norm_le
#align add_monoid_hom.mk_normed_add_group_hom_norm_le AddMonoidHom.mkNormedAddGroupHom_norm_le
-/- warning: add_monoid_hom.mk_normed_add_group_hom_norm_le' -> AddMonoidHom.mkNormedAddGroupHom_norm_le' is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C h)) (LinearOrder.max.{0} Real Real.linearOrder C (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) (Max.max.{0} Real (LinearOrderedRing.toMax.{0} Real Real.instLinearOrderedRingReal) C (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
-Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom_norm_le' AddMonoidHom.mkNormedAddGroupHom_norm_le'ₓ'. -/
alias mk_normed_add_group_hom_norm_le' ← _root_.add_monoid_hom.mk_normed_add_group_hom_norm_le'
#align add_monoid_hom.mk_normed_add_group_hom_norm_le' AddMonoidHom.mkNormedAddGroupHom_norm_le'
@@ -551,12 +341,6 @@ instance : Add (NormedAddGroupHom V₁ V₂) :=
_ = (‖f‖ + ‖g‖) * ‖v‖ := by rw [add_mul]
⟩
-/- warning: normed_add_group_hom.op_norm_add_le -> NormedAddGroupHom.opNorm_add_le is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (instHAdd.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasAdd.{u1, u2} V₁ V₂ _inst_2 _inst_3)) f g)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) g))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHAdd.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.add.{u2, u1} V₁ V₂ _inst_2 _inst_3)) f g)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) g))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_add_le NormedAddGroupHom.opNorm_add_leₓ'. -/
/-- The operator norm satisfies the triangle inequality. -/
theorem opNorm_add_le : ‖f + g‖ ≤ ‖f‖ + ‖g‖ :=
mkNormedAddGroupHom_norm_le _ (add_nonneg (opNorm_nonneg _) (opNorm_nonneg _)) _
@@ -570,24 +354,12 @@ As a workaround, we add a type annotation: `(f + g : V₁ → V₂)`
-/
-/- warning: normed_add_group_hom.coe_add -> NormedAddGroupHom.coe_add is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (instHAdd.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasAdd.{u1, u2} V₁ V₂ _inst_2 _inst_3)) f g)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (V₁ -> V₂) (V₁ -> V₂) (V₁ -> V₂) (instHAdd.{max u1 u2} (V₁ -> V₂) (Pi.instAdd.{u1, u2} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => AddZeroClass.toHasAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHAdd.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.add.{u2, u1} V₁ V₂ _inst_2 _inst_3)) f g)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (V₁ -> V₂) (V₁ -> V₂) (V₁ -> V₂) (instHAdd.{max u2 u1} (V₁ -> V₂) (Pi.instAdd.{u2, u1} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_add NormedAddGroupHom.coe_addₓ'. -/
-- see Note [addition on function coercions]
@[simp]
theorem coe_add (f g : NormedAddGroupHom V₁ V₂) : ⇑(f + g) = (f + g : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_add NormedAddGroupHom.coe_add
-/- warning: normed_add_group_hom.add_apply -> NormedAddGroupHom.add_apply is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (instHAdd.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasAdd.{u1, u2} V₁ V₂ _inst_2 _inst_3)) f g) v) (HAdd.hAdd.{u2, u2, u2} V₂ V₂ V₂ (instHAdd.{u2} V₂ (AddZeroClass.toHasAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g v))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHAdd.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.add.{u2, u1} V₁ V₂ _inst_2 _inst_3)) f g) v) (HAdd.hAdd.{u1, u1, u1} V₂ V₂ V₂ (instHAdd.{u1} V₂ (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g v))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.add_apply NormedAddGroupHom.add_applyₓ'. -/
@[simp]
theorem add_apply (f g : NormedAddGroupHom V₁ V₂) (v : V₁) :
(f + g : NormedAddGroupHom V₁ V₂) v = f v + g v :=
@@ -603,12 +375,6 @@ instance : Zero (NormedAddGroupHom V₁ V₂) :=
instance : Inhabited (NormedAddGroupHom V₁ V₂) :=
⟨0⟩
-/- warning: normed_add_group_hom.op_norm_zero -> NormedAddGroupHom.opNorm_zero is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂], Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ _inst_2 _inst_3))))) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂], Eq.{1} Real (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zero.{u2, u1} V₁ V₂ _inst_2 _inst_3)))) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_zero NormedAddGroupHom.opNorm_zeroₓ'. -/
/-- The norm of the `0` operator is `0`. -/
theorem opNorm_zero : ‖(0 : NormedAddGroupHom V₁ V₂)‖ = 0 :=
le_antisymm
@@ -617,12 +383,6 @@ theorem opNorm_zero : ‖(0 : NormedAddGroupHom V₁ V₂)‖ = 0 :=
(opNorm_nonneg _)
#align normed_add_group_hom.op_norm_zero NormedAddGroupHom.opNorm_zero
-/- warning: normed_add_group_hom.op_norm_zero_iff -> NormedAddGroupHom.opNorm_zero_iff is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_5 : NormedAddCommGroup.{u1} V₁] [_inst_6 : NormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)}, Iff (Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)) f) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)) f (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6))))))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_5 : NormedAddCommGroup.{u2} V₁] [_inst_6 : NormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)}, Iff (Eq.{1} Real (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)) f) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (Eq.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)) f (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)) (NormedAddGroupHom.zero.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)))))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_zero_iff NormedAddGroupHom.opNorm_zero_iffₓ'. -/
/-- For normed groups, an operator is zero iff its norm vanishes. -/
theorem opNorm_zero_iff {V₁ V₂ : Type _} [NormedAddCommGroup V₁] [NormedAddCommGroup V₂]
{f : NormedAddGroupHom V₁ V₂} : ‖f‖ = 0 ↔ f = 0 :=
@@ -637,24 +397,12 @@ theorem opNorm_zero_iff {V₁ V₂ : Type _} [NormedAddCommGroup V₁] [NormedAd
fun hf => by rw [hf, op_norm_zero]
#align normed_add_group_hom.op_norm_zero_iff NormedAddGroupHom.opNorm_zero_iff
-/- warning: normed_add_group_hom.coe_zero -> NormedAddGroupHom.coe_zero is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂], Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ _inst_2 _inst_3))))) (OfNat.ofNat.{max u1 u2} (V₁ -> V₂) 0 (OfNat.mk.{max u1 u2} (V₁ -> V₂) 0 (Zero.zero.{max u1 u2} (V₁ -> V₂) (Pi.instZero.{u1, u2} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))))))))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂], Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zero.{u2, u1} V₁ V₂ _inst_2 _inst_3)))) (OfNat.ofNat.{max u2 u1} (V₁ -> V₂) 0 (Zero.toOfNat0.{max u2 u1} (V₁ -> V₂) (Pi.instZero.{u2, u1} V₁ (fun (a : V₁) => V₂) (fun (i : V₁) => NegZeroClass.toZero.{u1} V₂ (SubNegZeroMonoid.toNegZeroClass.{u1} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u1} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u1} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_3)))))))))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_zero NormedAddGroupHom.coe_zeroₓ'. -/
-- see Note [addition on function coercions]
@[simp]
theorem coe_zero : ⇑(0 : NormedAddGroupHom V₁ V₂) = (0 : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_zero NormedAddGroupHom.coe_zero
-/- warning: normed_add_group_hom.zero_apply -> NormedAddGroupHom.zero_apply is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ _inst_2 _inst_3)))) v) (OfNat.ofNat.{u2} V₂ 0 (OfNat.mk.{u2} V₂ 0 (Zero.zero.{u2} V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))))))
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (v : V₁), Eq.{succ u2} V₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (Zero.toOfNat0.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zero.{u1, u2} V₁ V₂ _inst_2 _inst_3))) v) (OfNat.ofNat.{u2} V₂ 0 (Zero.toOfNat0.{u2} V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3))))))))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.zero_apply NormedAddGroupHom.zero_applyₓ'. -/
@[simp]
theorem zero_apply (v : V₁) : (0 : NormedAddGroupHom V₁ V₂) v = 0 :=
rfl
@@ -675,12 +423,6 @@ def id : NormedAddGroupHom V V :=
#align normed_add_group_hom.id NormedAddGroupHom.id
-/
-/- warning: normed_add_group_hom.norm_id_le -> NormedAddGroupHom.norm_id_le is a dubious translation:
-lean 3 declaration is
- forall (V : Type.{u1}) [_inst_1 : SeminormedAddCommGroup.{u1} V], LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.hasOpNorm.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.id.{u1} V _inst_1)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
-but is expected to have type
- forall (V : Type.{u1}) [_inst_1 : SeminormedAddCommGroup.{u1} V], LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.hasOpNorm.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.id.{u1} V _inst_1)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_id_le NormedAddGroupHom.norm_id_leₓ'. -/
/-- The norm of the identity is at most `1`. It is in fact `1`, except when the norm of every
element vanishes, where it is `0`. (Since we are working with seminorms this can happen even if the
space is non-trivial.) It means that one can not do better than an inequality in general. -/
@@ -688,12 +430,6 @@ theorem norm_id_le : ‖(id V : NormedAddGroupHom V V)‖ ≤ 1 :=
opNorm_le_bound _ zero_le_one fun x => by simp
#align normed_add_group_hom.norm_id_le NormedAddGroupHom.norm_id_le
-/- warning: normed_add_group_hom.norm_id_of_nontrivial_seminorm -> NormedAddGroupHom.norm_id_of_nontrivial_seminorm is a dubious translation:
-lean 3 declaration is
- forall (V : Type.{u1}) [_inst_1 : SeminormedAddCommGroup.{u1} V], (Exists.{succ u1} V (fun (x : V) => Ne.{1} Real (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) x) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.hasOpNorm.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.id.{u1} V _inst_1)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
-but is expected to have type
- forall (V : Type.{u1}) [_inst_1 : SeminormedAddCommGroup.{u1} V], (Exists.{succ u1} V (fun (x : V) => Ne.{1} Real (Norm.norm.{u1} V (SeminormedAddCommGroup.toNorm.{u1} V _inst_1) x) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.hasOpNorm.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.id.{u1} V _inst_1)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_id_of_nontrivial_seminorm NormedAddGroupHom.norm_id_of_nontrivial_seminormₓ'. -/
/-- If there is an element with norm different from `0`, then the norm of the identity equals `1`.
(Since we are working with seminorms supposing that the space is non-trivial is not enough.) -/
theorem norm_id_of_nontrivial_seminorm (h : ∃ x : V, ‖x‖ ≠ 0) : ‖id V‖ = 1 :=
@@ -703,12 +439,6 @@ theorem norm_id_of_nontrivial_seminorm (h : ∃ x : V, ‖x‖ ≠ 0) : ‖id V
rwa [id_apply, div_self hx] at this
#align normed_add_group_hom.norm_id_of_nontrivial_seminorm NormedAddGroupHom.norm_id_of_nontrivial_seminorm
-/- warning: normed_add_group_hom.norm_id -> NormedAddGroupHom.norm_id is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} [_inst_5 : NormedAddCommGroup.{u1} V] [_inst_6 : Nontrivial.{u1} V], Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} V V (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5)) (NormedAddGroupHom.hasOpNorm.{u1, u1} V V (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5)) (NormedAddGroupHom.id.{u1} V (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5))) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
-but is expected to have type
- forall {V : Type.{u1}} [_inst_5 : NormedAddCommGroup.{u1} V] [_inst_6 : Nontrivial.{u1} V], Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} V V (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5)) (NormedAddGroupHom.hasOpNorm.{u1, u1} V V (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5)) (NormedAddGroupHom.id.{u1} V (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5))) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_id NormedAddGroupHom.norm_idₓ'. -/
/-- If a normed space is non-trivial, then the norm of the identity equals `1`. -/
theorem norm_id {V : Type _} [NormedAddCommGroup V] [Nontrivial V] : ‖id V‖ = 1 :=
by
@@ -730,36 +460,18 @@ theorem coe_id : (NormedAddGroupHom.id V : V → V) = (id : V → V) :=
instance : Neg (NormedAddGroupHom V₁ V₂) :=
⟨fun f => (-f.toAddMonoidHom).mkNormedAddGroupHom ‖f‖ fun v => by simp [le_op_norm f v]⟩
-/- warning: normed_add_group_hom.coe_neg -> NormedAddGroupHom.coe_neg is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (Neg.neg.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasNeg.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)) (Neg.neg.{max u1 u2} (V₁ -> V₂) (Pi.instNeg.{u1, u2} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => SubNegMonoid.toHasNeg.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (Neg.neg.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.neg.{u2, u1} V₁ V₂ _inst_2 _inst_3) f)) (Neg.neg.{max u2 u1} (V₁ -> V₂) (Pi.instNeg.{u2, u1} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => NegZeroClass.toNeg.{u1} V₂ (SubNegZeroMonoid.toNegZeroClass.{u1} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u1} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u1} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_3))))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_neg NormedAddGroupHom.coe_negₓ'. -/
-- see Note [addition on function coercions]
@[simp]
theorem coe_neg (f : NormedAddGroupHom V₁ V₂) : ⇑(-f) = (-f : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_neg NormedAddGroupHom.coe_neg
-/- warning: normed_add_group_hom.neg_apply -> NormedAddGroupHom.neg_apply is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (Neg.neg.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasNeg.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) v) (Neg.neg.{u2} V₂ (SubNegMonoid.toHasNeg.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (Neg.neg.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.neg.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) v) (Neg.neg.{u1} V₂ (NegZeroClass.toNeg.{u1} V₂ (SubNegZeroMonoid.toNegZeroClass.{u1} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u1} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u1} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_3)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.neg_apply NormedAddGroupHom.neg_applyₓ'. -/
@[simp]
theorem neg_apply (f : NormedAddGroupHom V₁ V₂) (v : V₁) :
(-f : NormedAddGroupHom V₁ V₂) v = -f v :=
rfl
#align normed_add_group_hom.neg_apply NormedAddGroupHom.neg_apply
-/- warning: normed_add_group_hom.op_norm_neg -> NormedAddGroupHom.opNorm_neg is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (Neg.neg.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasNeg.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{1} Real (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (Neg.neg.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.neg.{u2, u1} V₁ V₂ _inst_2 _inst_3) f)) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_neg NormedAddGroupHom.opNorm_negₓ'. -/
theorem opNorm_neg (f : NormedAddGroupHom V₁ V₂) : ‖-f‖ = ‖f‖ := by
simp only [norm_def, coe_neg, norm_neg, Pi.neg_apply]
#align normed_add_group_hom.op_norm_neg NormedAddGroupHom.opNorm_neg
@@ -776,24 +488,12 @@ instance : Sub (NormedAddGroupHom V₁ V₂) :=
simp only [AddMonoidHom.sub_apply, AddMonoidHom.toFun_eq_coe, sub_eq_add_neg]
exact (f + -g).bound' }⟩
-/- warning: normed_add_group_hom.coe_sub -> NormedAddGroupHom.coe_sub is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (instHSub.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasSub.{u1, u2} V₁ V₂ _inst_2 _inst_3)) f g)) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (V₁ -> V₂) (V₁ -> V₂) (V₁ -> V₂) (instHSub.{max u1 u2} (V₁ -> V₂) (Pi.instSub.{u1, u2} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => SubNegMonoid.toHasSub.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSub.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.sub.{u2, u1} V₁ V₂ _inst_2 _inst_3)) f g)) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (V₁ -> V₂) (V₁ -> V₂) (V₁ -> V₂) (instHSub.{max u2 u1} (V₁ -> V₂) (Pi.instSub.{u2, u1} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => SubNegMonoid.toSub.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_sub NormedAddGroupHom.coe_subₓ'. -/
-- see Note [addition on function coercions]
@[simp]
theorem coe_sub (f g : NormedAddGroupHom V₁ V₂) : ⇑(f - g) = (f - g : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_sub NormedAddGroupHom.coe_sub
-/- warning: normed_add_group_hom.sub_apply -> NormedAddGroupHom.sub_apply is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (instHSub.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasSub.{u1, u2} V₁ V₂ _inst_2 _inst_3)) f g) v) (HSub.hSub.{u2, u2, u2} V₂ V₂ V₂ (instHSub.{u2} V₂ (SubNegMonoid.toHasSub.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g v))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSub.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.sub.{u2, u1} V₁ V₂ _inst_2 _inst_3)) f g) v) (HSub.hSub.{u1, u1, u1} V₂ V₂ V₂ (instHSub.{u1} V₂ (SubNegMonoid.toSub.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g v))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.sub_apply NormedAddGroupHom.sub_applyₓ'. -/
@[simp]
theorem sub_apply (f g : NormedAddGroupHom V₁ V₂) (v : V₁) :
(f - g : NormedAddGroupHom V₁ V₂) v = f v - g v :=
@@ -823,23 +523,11 @@ instance : SMul R (NormedAddGroupHom V₁ V₂)
refine' mul_le_mul_of_nonneg_left _ dist_nonneg
exact hb x⟩ }
-/- warning: normed_add_group_hom.coe_smul -> NormedAddGroupHom.coe_smul is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u3}} [_inst_5 : MonoidWithZero.{u3} R] [_inst_6 : DistribMulAction.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u3} R] [_inst_8 : BoundedSMul.{u3, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_5))) (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{succ (max u1 u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{u3, max u1 u2} R (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasSmul.{u1, u2, u3} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8) r f)) (SMul.smul.{u3, max u1 u2} R (V₁ -> V₂) (Function.hasSMul.{u1, u3, u2} V₁ R V₂ (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
-but is expected to have type
- forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u1}} [_inst_5 : MonoidWithZero.{u1} R] [_inst_6 : DistribMulAction.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u1} R] [_inst_8 : BoundedSMul.{u1, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MonoidWithZero.toZero.{u1} R _inst_5) (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u3) (succ u2)} (V₁ -> V₂) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (instHSMul.{u1, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.smul.{u3, u2, u1} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8)) r f)) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} R (V₁ -> V₂) (V₁ -> V₂) (instHSMul.{u1, max u3 u2} R (V₁ -> V₂) (Pi.instSMul.{u3, u2, u1} V₁ R (fun (a : V₁) => V₂) (fun (i : V₁) => SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6))))) r (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) f))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_smul NormedAddGroupHom.coe_smulₓ'. -/
@[simp]
theorem coe_smul (r : R) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • f :=
rfl
#align normed_add_group_hom.coe_smul NormedAddGroupHom.coe_smul
-/- warning: normed_add_group_hom.smul_apply -> NormedAddGroupHom.smul_apply is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u3}} [_inst_5 : MonoidWithZero.{u3} R] [_inst_6 : DistribMulAction.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u3} R] [_inst_8 : BoundedSMul.{u3, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_5))) (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{u3, max u1 u2} R (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasSmul.{u1, u2, u3} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8) r f) v) (SMul.smul.{u3, u2} R V₂ (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
-but is expected to have type
- forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u1}} [_inst_5 : MonoidWithZero.{u1} R] [_inst_6 : DistribMulAction.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u1} R] [_inst_8 : BoundedSMul.{u1, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MonoidWithZero.toZero.{u1} R _inst_5) (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (instHSMul.{u1, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.smul.{u3, u2, u1} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8)) r f) v) (HSMul.hSMul.{u1, u2, u2} R V₂ V₂ (instHSMul.{u1, u2} R V₂ (SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))) r (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) f v))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.smul_apply NormedAddGroupHom.smul_applyₓ'. -/
@[simp]
theorem smul_apply (r : R) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r • f) v = r • f v :=
rfl
@@ -870,23 +558,11 @@ instance nsmul : SMul ℕ (NormedAddGroupHom V₁ V₂)
#align normed_add_group_hom.has_nat_scalar NormedAddGroupHom.nsmul
-/
-/- warning: normed_add_group_hom.coe_nsmul -> NormedAddGroupHom.coe_nsmul is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Nat) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{succ (max u1 u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Nat (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.nsmul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f)) (SMul.smul.{0, max u1 u2} Nat (V₁ -> V₂) (Function.hasSMul.{u1, 0, u2} V₁ Nat V₂ (AddMonoid.SMul.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Nat) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.nsmul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f)) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Nat (V₁ -> V₂) (V₁ -> V₂) (instHSMul.{0, max u2 u1} Nat (V₁ -> V₂) (AddMonoid.SMul.{max u2 u1} (V₁ -> V₂) (Pi.addMonoid.{u2, u1} V₁ (fun (a : V₁) => V₂) (fun (i : V₁) => SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_nsmul NormedAddGroupHom.coe_nsmulₓ'. -/
@[simp]
theorem coe_nsmul (r : ℕ) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • f :=
rfl
#align normed_add_group_hom.coe_nsmul NormedAddGroupHom.coe_nsmul
-/- warning: normed_add_group_hom.nsmul_apply -> NormedAddGroupHom.nsmul_apply is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Nat) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Nat (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.nsmul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f) v) (SMul.smul.{0, u2} Nat V₂ (AddMonoid.SMul.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Nat) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.nsmul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f) v) (HSMul.hSMul.{0, u1, u1} Nat V₂ V₂ (instHSMul.{0, u1} Nat V₂ (AddMonoid.SMul.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.nsmul_apply NormedAddGroupHom.nsmul_applyₓ'. -/
@[simp]
theorem nsmul_apply (r : ℕ) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r • f) v = r • f v :=
rfl
@@ -905,23 +581,11 @@ instance zsmul : SMul ℤ (NormedAddGroupHom V₁ V₂)
#align normed_add_group_hom.has_int_scalar NormedAddGroupHom.zsmul
-/
-/- warning: normed_add_group_hom.coe_zsmul -> NormedAddGroupHom.coe_zsmul is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Int) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{succ (max u1 u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Int (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zsmul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f)) (SMul.smul.{0, max u1 u2} Int (V₁ -> V₂) (Function.hasSMul.{u1, 0, u2} V₁ Int V₂ (SubNegMonoid.SMulInt.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Int) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zsmul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f)) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Int (V₁ -> V₂) (V₁ -> V₂) (instHSMul.{0, max u2 u1} Int (V₁ -> V₂) (SubNegMonoid.SMulInt.{max u2 u1} (V₁ -> V₂) (Pi.subNegMonoid.{u2, u1} V₁ (fun (a : V₁) => V₂) (fun (i : V₁) => AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_zsmul NormedAddGroupHom.coe_zsmulₓ'. -/
@[simp]
theorem coe_zsmul (r : ℤ) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • f :=
rfl
#align normed_add_group_hom.coe_zsmul NormedAddGroupHom.coe_zsmul
-/- warning: normed_add_group_hom.zsmul_apply -> NormedAddGroupHom.zsmul_apply is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Int) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Int (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zsmul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f) v) (SMul.smul.{0, u2} Int V₂ (SubNegMonoid.SMulInt.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Int) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zsmul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f) v) (HSMul.hSMul.{0, u1, u1} Int V₂ V₂ (instHSMul.{0, u1} Int V₂ (SubNegMonoid.SMulInt.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.zsmul_apply NormedAddGroupHom.zsmul_applyₓ'. -/
@[simp]
theorem zsmul_apply (r : ℤ) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r • f) v = r • f v :=
rfl
@@ -973,24 +637,12 @@ def coeAddHom : NormedAddGroupHom V₁ V₂ →+ V₁ → V₂
#align normed_add_group_hom.coe_fn_add_hom NormedAddGroupHom.coeAddHom
-/
-/- warning: normed_add_group_hom.coe_sum -> NormedAddGroupHom.coe_sum is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {ι : Type.{u3}} (s : Finset.{u3} ι) (f : ι -> (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3)), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (Finset.sum.{max u1 u2, u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) ι (AddCommGroup.toAddCommMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.addCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)) s (fun (i : ι) => f i))) (Finset.sum.{max u1 u2, u3} (V₁ -> V₂) ι (Pi.addCommMonoid.{u1, u2} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => AddCommGroup.toAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3))) s (fun (i : ι) => coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (f i)))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {ι : Type.{u3}} (s : Finset.{u3} ι) (f : ι -> (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3)), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (Finset.sum.{max u2 u1, u3} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) ι (AddCommGroup.toAddCommMonoid.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toAddCommGroup.{u2, u1} V₁ V₂ _inst_2 _inst_3)) s (fun (i : ι) => f i))) (Finset.sum.{max u2 u1, u3} (V₁ -> V₂) ι (Pi.addCommMonoid.{u2, u1} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => AddCommGroup.toAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_3))) s (fun (i : ι) => FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (f i)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_sum NormedAddGroupHom.coe_sumₓ'. -/
@[simp]
theorem coe_sum {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V₁ V₂) :
⇑(∑ i in s, f i) = ∑ i in s, f i :=
(coeAddHom : _ →+ V₁ → V₂).map_sum f s
#align normed_add_group_hom.coe_sum NormedAddGroupHom.coe_sum
-/- warning: normed_add_group_hom.sum_apply -> NormedAddGroupHom.sum_apply is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {ι : Type.{u3}} (s : Finset.{u3} ι) (f : ι -> (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3)) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (Finset.sum.{max u1 u2, u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) ι (AddCommGroup.toAddCommMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.addCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)) s (fun (i : ι) => f i)) v) (Finset.sum.{u2, u3} V₂ ι (AddCommGroup.toAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)) s (fun (i : ι) => coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (f i) v))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {ι : Type.{u3}} (s : Finset.{u3} ι) (f : ι -> (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3)) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (Finset.sum.{max u2 u1, u3} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) ι (AddCommGroup.toAddCommMonoid.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toAddCommGroup.{u2, u1} V₁ V₂ _inst_2 _inst_3)) s (fun (i : ι) => f i)) v) (Finset.sum.{u1, u3} V₂ ι (AddCommGroup.toAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_3)) s (fun (i : ι) => FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (f i) v))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.sum_apply NormedAddGroupHom.sum_applyₓ'. -/
theorem sum_apply {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V₁ V₂) (v : V₁) :
(∑ i in s, f i) v = ∑ i in s, f i v := by simp only [coe_sum, Finset.sum_apply]
#align normed_add_group_hom.sum_apply NormedAddGroupHom.sum_apply
@@ -1023,41 +675,20 @@ protected def comp (g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁
#align normed_add_group_hom.comp NormedAddGroupHom.comp
-/
-/- warning: normed_add_group_hom.norm_comp_le -> NormedAddGroupHom.norm_comp_le is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃] (g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u2, u3} V₂ V₃ _inst_3 _inst_4) g) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u3} V₂] [_inst_4 : SeminormedAddCommGroup.{u2} V₃] (g : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4) (f : NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u3, u2} V₂ V₃ _inst_3 _inst_4) g) (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₂ _inst_2 _inst_3) f))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_comp_le NormedAddGroupHom.norm_comp_leₓ'. -/
theorem norm_comp_le (g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁ V₂) :
‖g.comp f‖ ≤ ‖g‖ * ‖f‖ :=
mkNormedAddGroupHom_norm_le _ (mul_nonneg (opNorm_nonneg _) (opNorm_nonneg _)) _
#align normed_add_group_hom.norm_comp_le NormedAddGroupHom.norm_comp_le
-/- warning: normed_add_group_hom.norm_comp_le_of_le -> NormedAddGroupHom.norm_comp_le_of_le is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4} {C₁ : Real} {C₂ : Real}, (LE.le.{0} Real Real.hasLe (Norm.norm.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u2, u3} V₂ V₃ _inst_3 _inst_4) g) C₂) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) C₁) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C₂ C₁))
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u3} V₂] [_inst_4 : SeminormedAddCommGroup.{u2} V₃] {f : NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4} {C₁ : Real} {C₂ : Real}, (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u3, u2} V₂ V₃ _inst_3 _inst_4) g) C₂) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₂ _inst_2 _inst_3) f) C₁) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C₂ C₁))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_comp_le_of_le NormedAddGroupHom.norm_comp_le_of_leₓ'. -/
theorem norm_comp_le_of_le {g : NormedAddGroupHom V₂ V₃} {C₁ C₂ : ℝ} (hg : ‖g‖ ≤ C₂)
(hf : ‖f‖ ≤ C₁) : ‖g.comp f‖ ≤ C₂ * C₁ :=
le_trans (norm_comp_le g f) <| mul_le_mul hg hf (norm_nonneg _) (le_trans (norm_nonneg _) hg)
#align normed_add_group_hom.norm_comp_le_of_le NormedAddGroupHom.norm_comp_le_of_le
-/- warning: normed_add_group_hom.norm_comp_le_of_le' -> NormedAddGroupHom.norm_comp_le_of_le' is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4} (C₁ : Real) (C₂ : Real) (C₃ : Real), (Eq.{1} Real C₃ (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C₂ C₁)) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u2, u3} V₂ V₃ _inst_3 _inst_4) g) C₂) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) C₁) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) C₃)
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u3} V₂] [_inst_4 : SeminormedAddCommGroup.{u2} V₃] {f : NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4} (C₁ : Real) (C₂ : Real) (C₃ : Real), (Eq.{1} Real C₃ (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C₂ C₁)) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u3, u2} V₂ V₃ _inst_3 _inst_4) g) C₂) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₂ _inst_2 _inst_3) f) C₁) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) C₃)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_comp_le_of_le' NormedAddGroupHom.norm_comp_le_of_le'ₓ'. -/
theorem norm_comp_le_of_le' {g : NormedAddGroupHom V₂ V₃} (C₁ C₂ C₃ : ℝ) (h : C₃ = C₂ * C₁)
(hg : ‖g‖ ≤ C₂) (hf : ‖f‖ ≤ C₁) : ‖g.comp f‖ ≤ C₃ := by rw [h]; exact norm_comp_le_of_le hg hf
#align normed_add_group_hom.norm_comp_le_of_le' NormedAddGroupHom.norm_comp_le_of_le'
-/- warning: normed_add_group_hom.comp_hom -> NormedAddGroupHom.compHom is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.comp_hom NormedAddGroupHom.compHomₓ'. -/
/-- Composition of normed groups hom as an additive group morphism. -/
def compHom : NormedAddGroupHom V₂ V₃ →+ NormedAddGroupHom V₁ V₂ →+ NormedAddGroupHom V₁ V₃ :=
AddMonoidHom.mk'
@@ -1067,23 +698,11 @@ def compHom : NormedAddGroupHom V₂ V₃ →+ NormedAddGroupHom V₁ V₂ →+
AddMonoidHom.mk'_apply, coe_add])
#align normed_add_group_hom.comp_hom NormedAddGroupHom.compHom
-/- warning: normed_add_group_hom.comp_zero -> NormedAddGroupHom.comp_zero is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4), Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 f (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ _inst_2 _inst_3))))) (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) 0 (OfNat.mk.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) 0 (Zero.zero.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasZero.{u1, u3} V₁ V₃ _inst_2 _inst_4))))
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u3} V₂] [_inst_4 : SeminormedAddCommGroup.{u2} V₃] (f : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4), Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 f (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) 0 (Zero.toOfNat0.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zero.{u1, u3} V₁ V₂ _inst_2 _inst_3)))) (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) 0 (Zero.toOfNat0.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.zero.{u1, u2} V₁ V₃ _inst_2 _inst_4)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.comp_zero NormedAddGroupHom.comp_zeroₓ'. -/
@[simp]
theorem comp_zero (f : NormedAddGroupHom V₂ V₃) : f.comp (0 : NormedAddGroupHom V₁ V₂) = 0 := by
ext; exact map_zero f
#align normed_add_group_hom.comp_zero NormedAddGroupHom.comp_zero
-/- warning: normed_add_group_hom.zero_comp -> NormedAddGroupHom.zero_comp is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 (OfNat.ofNat.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) 0 (OfNat.mk.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) 0 (Zero.zero.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasZero.{u2, u3} V₂ V₃ _inst_3 _inst_4)))) f) (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) 0 (OfNat.mk.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) 0 (Zero.zero.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasZero.{u1, u3} V₁ V₃ _inst_2 _inst_4))))
-but is expected to have type
- forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} {V₃ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u1} V₃] (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u3) (succ u1)} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.zero.{u2, u1} V₂ V₃ _inst_3 _inst_4))) f) (OfNat.ofNat.{max u3 u1} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) 0 (Zero.toOfNat0.{max u3 u1} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.zero.{u3, u1} V₁ V₃ _inst_2 _inst_4)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.zero_comp NormedAddGroupHom.zero_compₓ'. -/
@[simp]
theorem zero_comp (f : NormedAddGroupHom V₁ V₂) : (0 : NormedAddGroupHom V₂ V₃).comp f = 0 := by
ext; rfl
@@ -1096,12 +715,6 @@ theorem comp_assoc {V₄ : Type _} [SeminormedAddCommGroup V₄] (h : NormedAddG
#align normed_add_group_hom.comp_assoc NormedAddGroupHom.comp_assoc
-/
-/- warning: normed_add_group_hom.coe_comp -> NormedAddGroupHom.coe_comp is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4), Eq.{max (succ u1) (succ u3)} ((fun (_x : NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) => V₁ -> V₃) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (fun (_x : NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) => V₁ -> V₃) (NormedAddGroupHom.hasCoeToFun.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (Function.comp.{succ u1, succ u2, succ u3} V₁ V₂ V₃ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (fun (_x : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) => V₂ -> V₃) (NormedAddGroupHom.hasCoeToFun.{u2, u3} V₂ V₃ _inst_3 _inst_4) g) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
-but is expected to have type
- forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} {V₃ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u1} V₃] (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4), Eq.{max (succ u3) (succ u1)} (V₁ -> V₃) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) V₁ (fun (_x : V₁) => V₃) (AddHomClass.toFunLike.{max u3 u1, u3, u1} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) V₁ V₃ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₃ (AddMonoid.toAddZeroClass.{u1} V₃ (SubNegMonoid.toAddMonoid.{u1} V₃ (AddGroup.toSubNegMonoid.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u1, u3, u1} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) V₁ V₃ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₃ (SubNegMonoid.toAddMonoid.{u1} V₃ (AddGroup.toSubNegMonoid.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u1} V₁ V₃ _inst_2 _inst_4))) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (Function.comp.{succ u3, succ u2, succ u1} V₁ V₂ V₃ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4) V₂ (fun (_x : V₂) => V₃) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4) V₂ V₃ (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddZeroClass.toAdd.{u1} V₃ (AddMonoid.toAddZeroClass.{u1} V₃ (SubNegMonoid.toAddMonoid.{u1} V₃ (AddGroup.toSubNegMonoid.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4) V₂ V₃ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (AddMonoid.toAddZeroClass.{u1} V₃ (SubNegMonoid.toAddMonoid.{u1} V₃ (AddGroup.toSubNegMonoid.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₂ V₃ _inst_3 _inst_4))) g) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) f))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_comp NormedAddGroupHom.coe_compₓ'. -/
theorem coe_comp (f : NormedAddGroupHom V₁ V₂) (g : NormedAddGroupHom V₂ V₃) :
(g.comp f : V₁ → V₃) = (g : V₂ → V₃) ∘ (f : V₁ → V₂) :=
rfl
@@ -1114,12 +727,6 @@ namespace NormedAddGroupHom
variable {V W V₁ V₂ V₃ : Type _} [SeminormedAddCommGroup V] [SeminormedAddCommGroup W]
[SeminormedAddCommGroup V₁] [SeminormedAddCommGroup V₂] [SeminormedAddCommGroup V₃]
-/- warning: normed_add_group_hom.incl -> NormedAddGroupHom.incl is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} V] (s : AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))), NormedAddGroupHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) s) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 s) _inst_1
-but is expected to have type
- forall {V : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} V] (s : AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))), NormedAddGroupHom.{u1, u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x s)) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 s) _inst_1
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.incl NormedAddGroupHom.inclₓ'. -/
/-- The inclusion of an `add_subgroup`, as bounded group homomorphism. -/
@[simps]
def incl (s : AddSubgroup V) : NormedAddGroupHom s V
@@ -1129,9 +736,6 @@ def incl (s : AddSubgroup V) : NormedAddGroupHom s V
bound' := ⟨1, fun v => by rw [one_mul]; rfl⟩
#align normed_add_group_hom.incl NormedAddGroupHom.incl
-/- warning: normed_add_group_hom.norm_incl -> NormedAddGroupHom.norm_incl is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_incl NormedAddGroupHom.norm_inclₓ'. -/
theorem norm_incl {V' : AddSubgroup V} (x : V') : ‖incl _ x‖ = ‖x‖ :=
rfl
#align normed_add_group_hom.norm_incl NormedAddGroupHom.norm_incl
@@ -1151,21 +755,9 @@ def ker : AddSubgroup V₁ :=
#align normed_add_group_hom.ker NormedAddGroupHom.ker
-/
-/- warning: normed_add_group_hom.mem_ker -> NormedAddGroupHom.mem_ker is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (v : V₁), Iff (Membership.Mem.{u1, u1} V₁ (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) v (NormedAddGroupHom.ker.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)) (Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_3 _inst_4) f v) (OfNat.ofNat.{u2} V₂ 0 (OfNat.mk.{u2} V₂ 0 (Zero.zero.{u2} V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))))))))))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (v : V₁), Iff (Membership.mem.{u2, u2} V₁ (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))) v (NormedAddGroupHom.ker.{u2, u1} V₁ V₂ _inst_3 _inst_4 f)) (Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_3 _inst_4))) f v) (OfNat.ofNat.{u1} V₂ 0 (Zero.toOfNat0.{u1} V₂ (NegZeroClass.toZero.{u1} V₂ (SubNegZeroMonoid.toNegZeroClass.{u1} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u1} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u1} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_4)))))))))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mem_ker NormedAddGroupHom.mem_kerₓ'. -/
theorem mem_ker (v : V₁) : v ∈ f.ker ↔ f v = 0 := by erw [f.to_add_monoid_hom.mem_ker]; rfl
#align normed_add_group_hom.mem_ker NormedAddGroupHom.mem_ker
-/- warning: normed_add_group_hom.ker.lift -> NormedAddGroupHom.ker.lift is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5), (Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f) (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) 0 (OfNat.mk.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) 0 (Zero.zero.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.hasZero.{u1, u3} V₁ V₃ _inst_3 _inst_5))))) -> (NormedAddGroupHom.{u1, u2} V₁ (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g)) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g)))
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5), (Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f) (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) 0 (Zero.toOfNat0.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.zero.{u1, u3} V₁ V₃ _inst_3 _inst_5)))) -> (NormedAddGroupHom.{u1, u2} V₁ (Subtype.{succ u2} V₂ (fun (x : V₂) => Membership.mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) x (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g))) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.ker.lift NormedAddGroupHom.ker.liftₓ'. -/
/-- Given a normed group hom `f : V₁ → V₂` satisfying `g.comp f = 0` for some `g : V₂ → V₃`,
the corestriction of `f` to the kernel of `g`. -/
@[simps]
@@ -1176,43 +768,19 @@ def ker.lift (h : g.comp f = 0) : NormedAddGroupHom V₁ g.ker
bound' := f.bound'
#align normed_add_group_hom.ker.lift NormedAddGroupHom.ker.lift
-/- warning: normed_add_group_hom.ker.incl_comp_lift -> NormedAddGroupHom.ker.incl_comp_lift is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5) (h : Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f) (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) 0 (OfNat.mk.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) 0 (Zero.zero.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.hasZero.{u1, u3} V₁ V₃ _inst_3 _inst_5))))), Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u2} V₁ (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g)) V₂ _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g)) _inst_4 (NormedAddGroupHom.incl.{u2} V₂ _inst_4 (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g)) (NormedAddGroupHom.ker.lift.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 f g h)) f
-but is expected to have type
- forall {V₁ : Type.{u3}} {V₂ : Type.{u1}} {V₃ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u3} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] [_inst_5 : SeminormedAddCommGroup.{u2} V₃] (f : NormedAddGroupHom.{u3, u1} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u1, u2} V₂ V₃ _inst_4 _inst_5) (h : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f) (OfNat.ofNat.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₁ V₃ _inst_3 _inst_5) 0 (Zero.toOfNat0.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.zero.{u3, u2} V₁ V₃ _inst_3 _inst_5)))), Eq.{max (succ u3) (succ u1)} (NormedAddGroupHom.{u3, u1} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.comp.{u3, u1, u1} V₁ (Subtype.{succ u1} V₂ (fun (x : V₂) => Membership.mem.{u1, u1} V₂ (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))) x (NormedAddGroupHom.ker.{u1, u2} V₂ V₃ _inst_4 _inst_5 g))) V₂ _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V₂ _inst_4 (NormedAddGroupHom.ker.{u1, u2} V₂ V₃ _inst_4 _inst_5 g)) _inst_4 (NormedAddGroupHom.incl.{u1} V₂ _inst_4 (NormedAddGroupHom.ker.{u1, u2} V₂ V₃ _inst_4 _inst_5 g)) (NormedAddGroupHom.ker.lift.{u3, u1, u2} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 f g h)) f
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.ker.incl_comp_lift NormedAddGroupHom.ker.incl_comp_liftₓ'. -/
@[simp]
theorem ker.incl_comp_lift (h : g.comp f = 0) : (incl g.ker).comp (ker.lift f g h) = f := by ext;
rfl
#align normed_add_group_hom.ker.incl_comp_lift NormedAddGroupHom.ker.incl_comp_lift
-/- warning: normed_add_group_hom.ker_zero -> NormedAddGroupHom.ker_zero is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂], Eq.{succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (NormedAddGroupHom.ker.{u1, u2} V₁ V₂ _inst_3 _inst_4 (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ _inst_3 _inst_4))))) (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.hasTop.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂], Eq.{succ u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (NormedAddGroupHom.ker.{u2, u1} V₁ V₂ _inst_3 _inst_4 (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.zero.{u2, u1} V₁ V₂ _inst_3 _inst_4)))) (Top.top.{u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.ker_zero NormedAddGroupHom.ker_zeroₓ'. -/
@[simp]
theorem ker_zero : (0 : NormedAddGroupHom V₁ V₂).ker = ⊤ := by ext; simp [mem_ker]
#align normed_add_group_hom.ker_zero NormedAddGroupHom.ker_zero
-/- warning: normed_add_group_hom.coe_ker -> NormedAddGroupHom.coe_ker is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4), Eq.{succ u1} (Set.{u1} V₁) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (Set.{u1} V₁) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (Set.{u1} V₁) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (Set.{u1} V₁) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (NormedAddGroupHom.ker.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)) (Set.preimage.{u1, u2} V₁ V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_3 _inst_4) f) (Singleton.singleton.{u2, u2} V₂ (Set.{u2} V₂) (Set.hasSingleton.{u2} V₂) (OfNat.ofNat.{u2} V₂ 0 (OfNat.mk.{u2} V₂ 0 (Zero.zero.{u2} V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))))))))))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4), Eq.{succ u2} (Set.{u2} V₁) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (NormedAddGroupHom.ker.{u2, u1} V₁ V₂ _inst_3 _inst_4 f)) (Set.preimage.{u2, u1} V₁ V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_3 _inst_4))) f) (Singleton.singleton.{u1, u1} V₂ (Set.{u1} V₂) (Set.instSingletonSet.{u1} V₂) (OfNat.ofNat.{u1} V₂ 0 (Zero.toOfNat0.{u1} V₂ (NegZeroClass.toZero.{u1} V₂ (SubNegZeroMonoid.toNegZeroClass.{u1} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u1} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u1} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_4))))))))))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_ker NormedAddGroupHom.coe_kerₓ'. -/
theorem coe_ker : (f.ker : Set V₁) = (f : V₁ → V₂) ⁻¹' {0} :=
rfl
#align normed_add_group_hom.coe_ker NormedAddGroupHom.coe_ker
-/- warning: normed_add_group_hom.is_closed_ker -> NormedAddGroupHom.isClosed_ker is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] {V₂ : Type.{u2}} [_inst_6 : NormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)), IsClosed.{u1} V₁ (UniformSpace.toTopologicalSpace.{u1} V₁ (PseudoMetricSpace.toUniformSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_3))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (Set.{u1} V₁) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (Set.{u1} V₁) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (Set.{u1} V₁) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (NormedAddGroupHom.ker.{u1, u2} V₁ V₂ _inst_3 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6) f))
-but is expected to have type
- forall {V₁ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] {V₂ : Type.{u2}} [_inst_6 : NormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)), IsClosed.{u1} V₁ (UniformSpace.toTopologicalSpace.{u1} V₁ (PseudoMetricSpace.toUniformSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_3))) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (NormedAddGroupHom.ker.{u1, u2} V₁ V₂ _inst_3 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6) f))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.is_closed_ker NormedAddGroupHom.isClosed_kerₓ'. -/
theorem isClosed_ker {V₂ : Type _} [NormedAddCommGroup V₂] (f : NormedAddGroupHom V₁ V₂) :
IsClosed (f.ker : Set V₁) :=
f.coe_ker ▸ IsClosed.preimage f.Continuous (T1Space.t1 0)
@@ -1235,53 +803,23 @@ def range : AddSubgroup V₂ :=
#align normed_add_group_hom.range NormedAddGroupHom.range
-/
-/- warning: normed_add_group_hom.mem_range -> NormedAddGroupHom.mem_range is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (v : V₂), Iff (Membership.Mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.hasMem.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) v (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)) (Exists.{succ u1} V₁ (fun (w : V₁) => Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_3 _inst_4) f w) v))
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (v : V₂), Iff (Membership.mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) v (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)) (Exists.{succ u1} V₁ (fun (w : V₁) => Eq.{succ u2} V₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_3 _inst_4))) f w) v))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mem_range NormedAddGroupHom.mem_rangeₓ'. -/
theorem mem_range (v : V₂) : v ∈ f.range ↔ ∃ w, f w = v := by rw [range, AddMonoidHom.mem_range];
rfl
#align normed_add_group_hom.mem_range NormedAddGroupHom.mem_range
-/- warning: normed_add_group_hom.mem_range_self -> NormedAddGroupHom.mem_range_self is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (v : V₁), Membership.Mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.hasMem.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_3 _inst_4) f v) (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (v : V₁), Membership.mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_3 _inst_4))) f v) (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mem_range_self NormedAddGroupHom.mem_range_selfₓ'. -/
@[simp]
theorem mem_range_self (v : V₁) : f v ∈ f.range :=
⟨v, rfl⟩
#align normed_add_group_hom.mem_range_self NormedAddGroupHom.mem_range_self
-/- warning: normed_add_group_hom.comp_range -> NormedAddGroupHom.comp_range is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5), Eq.{succ u3} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) (NormedAddGroupHom.range.{u1, u3} V₁ V₃ _inst_3 _inst_5 (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f)) (AddSubgroup.map.{u2, u3} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)) V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5)) (NormedAddGroupHom.toAddMonoidHom.{u2, u3} V₂ V₃ _inst_4 _inst_5 g) (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u1, u3} V₂ V₃ _inst_4 _inst_5), Eq.{succ u3} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) (NormedAddGroupHom.range.{u2, u3} V₁ V₃ _inst_3 _inst_5 (NormedAddGroupHom.comp.{u2, u1, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f)) (AddSubgroup.map.{u1, u3} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)) V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5)) (NormedAddGroupHom.toAddMonoidHom.{u1, u3} V₂ V₃ _inst_4 _inst_5 g) (NormedAddGroupHom.range.{u2, u1} V₁ V₂ _inst_3 _inst_4 f))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.comp_range NormedAddGroupHom.comp_rangeₓ'. -/
theorem comp_range : (g.comp f).range = AddSubgroup.map g.toAddMonoidHom f.range := by
erw [AddMonoidHom.map_range]; rfl
#align normed_add_group_hom.comp_range NormedAddGroupHom.comp_range
-/- warning: normed_add_group_hom.incl_range -> NormedAddGroupHom.incl_range is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] (s : AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))), Eq.{succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (NormedAddGroupHom.range.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) s) V₁ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 s) _inst_3 (NormedAddGroupHom.incl.{u1} V₁ _inst_3 s)) s
-but is expected to have type
- forall {V₁ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] (s : AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))), Eq.{succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (NormedAddGroupHom.range.{u1, u1} (Subtype.{succ u1} V₁ (fun (x : V₁) => Membership.mem.{u1, u1} V₁ (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) x s)) V₁ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 s) _inst_3 (NormedAddGroupHom.incl.{u1} V₁ _inst_3 s)) s
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.incl_range NormedAddGroupHom.incl_rangeₓ'. -/
theorem incl_range (s : AddSubgroup V₁) : (incl s).range = s := by ext x;
exact ⟨fun ⟨y, hy⟩ => by rw [← hy] <;> simp, fun hx => ⟨⟨x, hx⟩, by simp⟩⟩
#align normed_add_group_hom.incl_range NormedAddGroupHom.incl_range
-/- warning: normed_add_group_hom.range_comp_incl_top -> NormedAddGroupHom.range_comp_incl_top is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4), Eq.{succ u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (NormedAddGroupHom.range.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.hasTop.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.hasTop.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) _inst_4 (NormedAddGroupHom.comp.{u1, u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.hasTop.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) V₁ V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.hasTop.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) _inst_3 _inst_4 f (NormedAddGroupHom.incl.{u1} V₁ _inst_3 (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.hasTop.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))))) (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4), Eq.{succ u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (NormedAddGroupHom.range.{u1, u2} (Subtype.{succ u1} V₁ (fun (x : V₁) => Membership.mem.{u1, u1} V₁ (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) x (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) _inst_4 (NormedAddGroupHom.comp.{u1, u1, u2} (Subtype.{succ u1} V₁ (fun (x : V₁) => Membership.mem.{u1, u1} V₁ (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) x (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) V₁ V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) _inst_3 _inst_4 f (NormedAddGroupHom.incl.{u1} V₁ _inst_3 (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))))) (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.range_comp_incl_top NormedAddGroupHom.range_comp_incl_topₓ'. -/
@[simp]
theorem range_comp_incl_top : (f.comp (incl (⊤ : AddSubgroup V₁))).range = f.range := by
simpa [comp_range, incl_range, ← AddMonoidHom.range_eq_map]
@@ -1300,12 +838,6 @@ def NormNoninc (f : NormedAddGroupHom V W) : Prop :=
namespace NormNoninc
-/- warning: normed_add_group_hom.norm_noninc.norm_noninc_iff_norm_le_one -> NormedAddGroupHom.NormNoninc.normNoninc_iff_norm_le_one is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2}, Iff (NormedAddGroupHom.NormNoninc.{u1, u2} V W _inst_1 _inst_2 f) (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (NormedAddGroupHom.hasOpNorm.{u1, u2} V W _inst_1 _inst_2) f) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
-but is expected to have type
- forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2}, Iff (NormedAddGroupHom.NormNoninc.{u2, u1} V W _inst_1 _inst_2 f) (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) (NormedAddGroupHom.hasOpNorm.{u2, u1} V W _inst_1 _inst_2) f) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_noninc.norm_noninc_iff_norm_le_one NormedAddGroupHom.NormNoninc.normNoninc_iff_norm_le_oneₓ'. -/
theorem normNoninc_iff_norm_le_one : f.NormNoninc ↔ ‖f‖ ≤ 1 :=
by
refine' ⟨fun h => _, fun h => fun v => _⟩
@@ -1314,12 +846,6 @@ theorem normNoninc_iff_norm_le_one : f.NormNoninc ↔ ‖f‖ ≤ 1 :=
· simpa using le_of_op_norm_le f h v
#align normed_add_group_hom.norm_noninc.norm_noninc_iff_norm_le_one NormedAddGroupHom.NormNoninc.normNoninc_iff_norm_le_one
-/- warning: normed_add_group_hom.norm_noninc.zero -> NormedAddGroupHom.NormNoninc.zero is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂], NormedAddGroupHom.NormNoninc.{u1, u2} V₁ V₂ _inst_3 _inst_4 (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ _inst_3 _inst_4))))
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂], NormedAddGroupHom.NormNoninc.{u2, u1} V₁ V₂ _inst_3 _inst_4 (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.zero.{u2, u1} V₁ V₂ _inst_3 _inst_4)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_noninc.zero NormedAddGroupHom.NormNoninc.zeroₓ'. -/
theorem zero : (0 : NormedAddGroupHom V₁ V₂).NormNoninc := fun v => by simp
#align normed_add_group_hom.norm_noninc.zero NormedAddGroupHom.NormNoninc.zero
@@ -1328,22 +854,10 @@ theorem id : (id V).NormNoninc := fun v => le_rfl
#align normed_add_group_hom.norm_noninc.id NormedAddGroupHom.NormNoninc.id
-/
-/- warning: normed_add_group_hom.norm_noninc.comp -> NormedAddGroupHom.NormNoninc.comp is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] {g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5} {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4}, (NormedAddGroupHom.NormNoninc.{u2, u3} V₂ V₃ _inst_4 _inst_5 g) -> (NormedAddGroupHom.NormNoninc.{u1, u2} V₁ V₂ _inst_3 _inst_4 f) -> (NormedAddGroupHom.NormNoninc.{u1, u3} V₁ V₃ _inst_3 _inst_5 (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f))
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u3} V₂] [_inst_5 : SeminormedAddCommGroup.{u2} V₃] {g : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_4 _inst_5} {f : NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_3 _inst_4}, (NormedAddGroupHom.NormNoninc.{u3, u2} V₂ V₃ _inst_4 _inst_5 g) -> (NormedAddGroupHom.NormNoninc.{u1, u3} V₁ V₂ _inst_3 _inst_4 f) -> (NormedAddGroupHom.NormNoninc.{u1, u2} V₁ V₃ _inst_3 _inst_5 (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_noninc.comp NormedAddGroupHom.NormNoninc.compₓ'. -/
theorem comp {g : NormedAddGroupHom V₂ V₃} {f : NormedAddGroupHom V₁ V₂} (hg : g.NormNoninc)
(hf : f.NormNoninc) : (g.comp f).NormNoninc := fun v => (hg (f v)).trans (hf v)
#align normed_add_group_hom.norm_noninc.comp NormedAddGroupHom.NormNoninc.comp
-/- warning: normed_add_group_hom.norm_noninc.neg_iff -> NormedAddGroupHom.NormNoninc.neg_iff is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4}, Iff (NormedAddGroupHom.NormNoninc.{u1, u2} V₁ V₂ _inst_3 _inst_4 (Neg.neg.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.hasNeg.{u1, u2} V₁ V₂ _inst_3 _inst_4) f)) (NormedAddGroupHom.NormNoninc.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4}, Iff (NormedAddGroupHom.NormNoninc.{u2, u1} V₁ V₂ _inst_3 _inst_4 (Neg.neg.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.neg.{u2, u1} V₁ V₂ _inst_3 _inst_4) f)) (NormedAddGroupHom.NormNoninc.{u2, u1} V₁ V₂ _inst_3 _inst_4 f)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_noninc.neg_iff NormedAddGroupHom.NormNoninc.neg_iffₓ'. -/
@[simp]
theorem neg_iff {f : NormedAddGroupHom V₁ V₂} : (-f).NormNoninc ↔ f.NormNoninc :=
⟨fun h x => by simpa using h x, fun h x => (norm_neg (f x)).le.trans (h x)⟩
@@ -1353,12 +867,6 @@ end NormNoninc
section Isometry
-/- warning: normed_add_group_hom.norm_eq_of_isometry -> NormedAddGroupHom.norm_eq_of_isometry is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2}, (Isometry.{u1, u2} V W (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V _inst_1)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} W (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} W _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (fun (_x : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) => V -> W) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V W _inst_1 _inst_2) f)) -> (forall (v : V), Eq.{1} Real (Norm.norm.{u2} W (SeminormedAddCommGroup.toHasNorm.{u2} W _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (fun (_x : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) => V -> W) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V W _inst_1 _inst_2) f v)) (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) v))
-but is expected to have type
- forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2}, (Isometry.{u2, u1} V W (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V _inst_1)) (PseudoMetricSpace.toPseudoEMetricSpace.{u1} W (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} W _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V (fun (_x : V) => W) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V W (AddZeroClass.toAdd.{u2} V (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))))) (AddZeroClass.toAdd.{u1} W (AddMonoid.toAddZeroClass.{u1} W (SubNegMonoid.toAddMonoid.{u1} W (AddGroup.toSubNegMonoid.{u1} W (SeminormedAddGroup.toAddGroup.{u1} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V W (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))))) (AddMonoid.toAddZeroClass.{u1} W (SubNegMonoid.toAddMonoid.{u1} W (AddGroup.toSubNegMonoid.{u1} W (SeminormedAddGroup.toAddGroup.{u1} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} W _inst_2))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V W _inst_1 _inst_2))) f)) -> (forall (v : V), Eq.{1} Real (Norm.norm.{u1} W (SeminormedAddCommGroup.toNorm.{u1} W _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V (fun (_x : V) => W) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V W (AddZeroClass.toAdd.{u2} V (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))))) (AddZeroClass.toAdd.{u1} W (AddMonoid.toAddZeroClass.{u1} W (SubNegMonoid.toAddMonoid.{u1} W (AddGroup.toSubNegMonoid.{u1} W (SeminormedAddGroup.toAddGroup.{u1} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V W (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))))) (AddMonoid.toAddZeroClass.{u1} W (SubNegMonoid.toAddMonoid.{u1} W (AddGroup.toSubNegMonoid.{u1} W (SeminormedAddGroup.toAddGroup.{u1} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} W _inst_2))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V W _inst_1 _inst_2))) f v)) (Norm.norm.{u2} V (SeminormedAddCommGroup.toNorm.{u2} V _inst_1) v))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_eq_of_isometry NormedAddGroupHom.norm_eq_of_isometryₓ'. -/
theorem norm_eq_of_isometry {f : NormedAddGroupHom V W} (hf : Isometry f) (v : V) : ‖f v‖ = ‖v‖ :=
(AddMonoidHomClass.isometry_iff_norm f).mp hf v
#align normed_add_group_hom.norm_eq_of_isometry NormedAddGroupHom.norm_eq_of_isometry
@@ -1369,23 +877,11 @@ theorem isometry_id : @Isometry V V _ _ (id V) :=
#align normed_add_group_hom.isometry_id NormedAddGroupHom.isometry_id
-/
-/- warning: normed_add_group_hom.isometry_comp -> NormedAddGroupHom.isometry_comp is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] {g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5} {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4}, (Isometry.{u2, u3} V₂ V₃ (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_4)) (PseudoMetricSpace.toPseudoEMetricSpace.{u3} V₃ (SeminormedAddCommGroup.toPseudoMetricSpace.{u3} V₃ _inst_5)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5) (fun (_x : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5) => V₂ -> V₃) (NormedAddGroupHom.hasCoeToFun.{u2, u3} V₂ V₃ _inst_4 _inst_5) g)) -> (Isometry.{u1, u2} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_3)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_4)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_3 _inst_4) f)) -> (Isometry.{u1, u3} V₁ V₃ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_3)) (PseudoMetricSpace.toPseudoEMetricSpace.{u3} V₃ (SeminormedAddCommGroup.toPseudoMetricSpace.{u3} V₃ _inst_5)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (fun (_x : NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) => V₁ -> V₃) (NormedAddGroupHom.hasCoeToFun.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f)))
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u3} V₂] [_inst_5 : SeminormedAddCommGroup.{u2} V₃] {g : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_4 _inst_5} {f : NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_3 _inst_4}, (Isometry.{u3, u2} V₂ V₃ (PseudoMetricSpace.toPseudoEMetricSpace.{u3} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u3} V₂ _inst_4)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₃ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₃ _inst_5)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_4 _inst_5) V₂ (fun (_x : V₂) => V₃) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_4 _inst_5) V₂ V₃ (AddZeroClass.toAdd.{u3} V₂ (AddMonoid.toAddZeroClass.{u3} V₂ (SubNegMonoid.toAddMonoid.{u3} V₂ (AddGroup.toSubNegMonoid.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4)))))) (AddZeroClass.toAdd.{u2} V₃ (AddMonoid.toAddZeroClass.{u2} V₃ (SubNegMonoid.toAddMonoid.{u2} V₃ (AddGroup.toSubNegMonoid.{u2} V₃ (SeminormedAddGroup.toAddGroup.{u2} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₃ _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_4 _inst_5) V₂ V₃ (AddMonoid.toAddZeroClass.{u3} V₂ (SubNegMonoid.toAddMonoid.{u3} V₂ (AddGroup.toSubNegMonoid.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4))))) (AddMonoid.toAddZeroClass.{u2} V₃ (SubNegMonoid.toAddMonoid.{u2} V₃ (AddGroup.toSubNegMonoid.{u2} V₃ (SeminormedAddGroup.toAddGroup.{u2} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₃ _inst_5))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₂ V₃ _inst_4 _inst_5))) g)) -> (Isometry.{u1, u3} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_3)) (PseudoMetricSpace.toPseudoEMetricSpace.{u3} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u3} V₂ _inst_4)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_3 _inst_4) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u3, u1, u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u3} V₂ (AddMonoid.toAddZeroClass.{u3} V₂ (SubNegMonoid.toAddMonoid.{u3} V₂ (AddGroup.toSubNegMonoid.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u1, u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u3} V₂ (SubNegMonoid.toAddMonoid.{u3} V₂ (AddGroup.toSubNegMonoid.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u3} V₁ V₂ _inst_3 _inst_4))) f)) -> (Isometry.{u1, u2} V₁ V₃ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_3)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₃ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₃ _inst_5)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_3 _inst_5) V₁ (fun (_x : V₁) => V₃) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_3 _inst_5) V₁ V₃ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u2} V₃ (AddMonoid.toAddZeroClass.{u2} V₃ (SubNegMonoid.toAddMonoid.{u2} V₃ (AddGroup.toSubNegMonoid.{u2} V₃ (SeminormedAddGroup.toAddGroup.{u2} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₃ _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_3 _inst_5) V₁ V₃ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u2} V₃ (SubNegMonoid.toAddMonoid.{u2} V₃ (AddGroup.toSubNegMonoid.{u2} V₃ (SeminormedAddGroup.toAddGroup.{u2} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₃ _inst_5))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₃ _inst_3 _inst_5))) (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.isometry_comp NormedAddGroupHom.isometry_compₓ'. -/
theorem isometry_comp {g : NormedAddGroupHom V₂ V₃} {f : NormedAddGroupHom V₁ V₂} (hg : Isometry g)
(hf : Isometry f) : Isometry (g.comp f) :=
hg.comp hf
#align normed_add_group_hom.isometry_comp NormedAddGroupHom.isometry_comp
-/- warning: normed_add_group_hom.norm_noninc_of_isometry -> NormedAddGroupHom.normNoninc_of_isometry is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2}, (Isometry.{u1, u2} V W (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V _inst_1)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} W (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} W _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (fun (_x : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) => V -> W) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V W _inst_1 _inst_2) f)) -> (NormedAddGroupHom.NormNoninc.{u1, u2} V W _inst_1 _inst_2 f)
-but is expected to have type
- forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2}, (Isometry.{u2, u1} V W (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V _inst_1)) (PseudoMetricSpace.toPseudoEMetricSpace.{u1} W (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} W _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V (fun (_x : V) => W) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V W (AddZeroClass.toAdd.{u2} V (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))))) (AddZeroClass.toAdd.{u1} W (AddMonoid.toAddZeroClass.{u1} W (SubNegMonoid.toAddMonoid.{u1} W (AddGroup.toSubNegMonoid.{u1} W (SeminormedAddGroup.toAddGroup.{u1} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V W (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))))) (AddMonoid.toAddZeroClass.{u1} W (SubNegMonoid.toAddMonoid.{u1} W (AddGroup.toSubNegMonoid.{u1} W (SeminormedAddGroup.toAddGroup.{u1} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} W _inst_2))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V W _inst_1 _inst_2))) f)) -> (NormedAddGroupHom.NormNoninc.{u2, u1} V W _inst_1 _inst_2 f)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_noninc_of_isometry NormedAddGroupHom.normNoninc_of_isometryₓ'. -/
theorem normNoninc_of_isometry (hf : Isometry f) : f.NormNoninc := fun v =>
le_of_eq <| norm_eq_of_isometry hf v
#align normed_add_group_hom.norm_noninc_of_isometry NormedAddGroupHom.normNoninc_of_isometry
@@ -1412,35 +908,17 @@ def equalizer :=
namespace Equalizer
-/- warning: normed_add_group_hom.equalizer.ι -> NormedAddGroupHom.Equalizer.ι is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2), NormedAddGroupHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_1
-but is expected to have type
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2), NormedAddGroupHom.{u1, u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g))) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_1
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.ι NormedAddGroupHom.Equalizer.ιₓ'. -/
/-- The inclusion of `f.equalizer g` as a `normed_add_group_hom`. -/
def ι : NormedAddGroupHom (f.equalizer g) V :=
incl _
#align normed_add_group_hom.equalizer.ι NormedAddGroupHom.Equalizer.ι
-/- warning: normed_add_group_hom.equalizer.comp_ι_eq -> NormedAddGroupHom.Equalizer.comp_ι_eq is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) W (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_2) (NormedAddGroupHom.comp.{u1, u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) V W (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_1 _inst_2 f (NormedAddGroupHom.Equalizer.ι.{u1, u2} V W _inst_1 _inst_2 f g)) (NormedAddGroupHom.comp.{u1, u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) V W (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_1 _inst_2 g (NormedAddGroupHom.Equalizer.ι.{u1, u2} V W _inst_1 _inst_2 f g))
-but is expected to have type
- forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] (f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) (g : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) W (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_2) (NormedAddGroupHom.comp.{u2, u2, u1} (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) V W (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_1 _inst_2 f (NormedAddGroupHom.Equalizer.ι.{u2, u1} V W _inst_1 _inst_2 f g)) (NormedAddGroupHom.comp.{u2, u2, u1} (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) V W (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_1 _inst_2 g (NormedAddGroupHom.Equalizer.ι.{u2, u1} V W _inst_1 _inst_2 f g))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.comp_ι_eq NormedAddGroupHom.Equalizer.comp_ι_eqₓ'. -/
theorem comp_ι_eq : f.comp (ι f g) = g.comp (ι f g) := by ext;
rw [comp_apply, comp_apply, ← sub_eq_zero, ← NormedAddGroupHom.sub_apply]; exact x.2
#align normed_add_group_hom.equalizer.comp_ι_eq NormedAddGroupHom.Equalizer.comp_ι_eq
variable {f g}
-/- warning: normed_add_group_hom.equalizer.lift -> NormedAddGroupHom.Equalizer.lift is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1), (Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ)) -> (NormedAddGroupHom.{u3, u1} V₁ (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)))
-but is expected to have type
- forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1), (Eq.{max (succ u2) (succ u3)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ)) -> (NormedAddGroupHom.{u3, u1} V₁ (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g))) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.lift NormedAddGroupHom.Equalizer.liftₓ'. -/
/-- If `φ : normed_add_group_hom V₁ V` is such that `f.comp φ = g.comp φ`, the induced morphism
`normed_add_group_hom V₁ (f.equalizer g)`. -/
@[simps]
@@ -1455,20 +933,11 @@ def lift (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) :
bound' := by obtain ⟨C, C_pos, hC⟩ := φ.bound; exact ⟨C, hC⟩
#align normed_add_group_hom.equalizer.lift NormedAddGroupHom.Equalizer.lift
-/- warning: normed_add_group_hom.equalizer.ι_comp_lift -> NormedAddGroupHom.Equalizer.ι_comp_lift is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.ι_comp_lift NormedAddGroupHom.Equalizer.ι_comp_liftₓ'. -/
@[simp]
theorem ι_comp_lift (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) :
(ι _ _).comp (lift φ h) = φ := by ext; rfl
#align normed_add_group_hom.equalizer.ι_comp_lift NormedAddGroupHom.Equalizer.ι_comp_lift
-/- warning: normed_add_group_hom.equalizer.lift_equiv -> NormedAddGroupHom.Equalizer.liftEquiv is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2}, Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (fun (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) => Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ))) (NormedAddGroupHom.{u3, u1} V₁ (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)))
-but is expected to have type
- forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2}, Equiv.{max 1 (succ u1) (succ u3), max (succ u1) (succ u3)} (Subtype.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (fun (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) => Eq.{max (succ u2) (succ u3)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ))) (NormedAddGroupHom.{u3, u1} V₁ (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g))) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.lift_equiv NormedAddGroupHom.Equalizer.liftEquivₓ'. -/
/-- The lifting property of the equalizer as an equivalence. -/
@[simps]
def liftEquiv :
@@ -1480,9 +949,6 @@ def liftEquiv :
right_inv ψ := by ext; rfl
#align normed_add_group_hom.equalizer.lift_equiv NormedAddGroupHom.Equalizer.liftEquiv
-/- warning: normed_add_group_hom.equalizer.map -> NormedAddGroupHom.Equalizer.map is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.map NormedAddGroupHom.Equalizer.mapₓ'. -/
/-- Given `φ : normed_add_group_hom V₁ V₂` and `ψ : normed_add_group_hom W₁ W₂` such that
`ψ.comp f₁ = f₂.comp φ` and `ψ.comp g₁ = g₂.comp φ`, the induced morphism
`normed_add_group_hom (f₁.equalizer g₁) (f₂.equalizer g₂)`. -/
@@ -1496,36 +962,21 @@ variable {φ : NormedAddGroupHom V₁ V₂} {ψ : NormedAddGroupHom W₁ W₂}
variable {φ' : NormedAddGroupHom V₂ V₃} {ψ' : NormedAddGroupHom W₂ W₃}
-/- warning: normed_add_group_hom.equalizer.ι_comp_map -> NormedAddGroupHom.Equalizer.ι_comp_map is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.ι_comp_map NormedAddGroupHom.Equalizer.ι_comp_mapₓ'. -/
@[simp]
theorem ι_comp_map (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ) :
(ι f₂ g₂).comp (map φ ψ hf hg) = φ.comp (ι _ _) :=
ι_comp_lift _ _
#align normed_add_group_hom.equalizer.ι_comp_map NormedAddGroupHom.Equalizer.ι_comp_map
-/- warning: normed_add_group_hom.equalizer.map_id -> NormedAddGroupHom.Equalizer.map_id is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] {W₁ : Type.{u2}} [_inst_6 : SeminormedAddCommGroup.{u2} W₁] {f₁ : NormedAddGroupHom.{u1, u2} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u2} V₁ W₁ _inst_3 _inst_6}, Eq.{succ u1} (NormedAddGroupHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (NormedAddGroupHom.Equalizer.map.{u1, u1, u2, u2} V₁ V₁ _inst_3 _inst_3 W₁ W₁ _inst_6 _inst_6 f₁ g₁ f₁ g₁ (NormedAddGroupHom.id.{u1} V₁ _inst_3) (NormedAddGroupHom.id.{u2} W₁ _inst_6) (rfl.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ W₁ _inst_3 _inst_6) (NormedAddGroupHom.comp.{u1, u2, u2} V₁ W₁ W₁ _inst_3 _inst_6 _inst_6 (NormedAddGroupHom.id.{u2} W₁ _inst_6) f₁)) (rfl.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ W₁ _inst_3 _inst_6) (NormedAddGroupHom.comp.{u1, u2, u2} V₁ W₁ W₁ _inst_3 _inst_6 _inst_6 (NormedAddGroupHom.id.{u2} W₁ _inst_6) g₁))) (NormedAddGroupHom.id.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)))
-but is expected to have type
- forall {V₁ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] {W₁ : Type.{u1}} [_inst_6 : SeminormedAddCommGroup.{u1} W₁] {f₁ : NormedAddGroupHom.{u2, u1} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u2, u1} V₁ W₁ _inst_3 _inst_6}, Eq.{succ u2} (NormedAddGroupHom.{u2, u2} (Subtype.{succ u2} V₁ (fun (x : V₁) => Membership.mem.{u2, u2} V₁ (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u2} V₁ (fun (x : V₁) => Membership.mem.{u2, u2} V₁ (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (AddSubgroup.seminormedAddCommGroup.{u2} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (NormedAddGroupHom.Equalizer.map.{u2, u2, u1, u1} V₁ V₁ _inst_3 _inst_3 W₁ W₁ _inst_6 _inst_6 f₁ g₁ f₁ g₁ (NormedAddGroupHom.id.{u2} V₁ _inst_3) (NormedAddGroupHom.id.{u1} W₁ _inst_6) (rfl.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ W₁ _inst_3 _inst_6) (NormedAddGroupHom.comp.{u2, u1, u1} V₁ W₁ W₁ _inst_3 _inst_6 _inst_6 (NormedAddGroupHom.id.{u1} W₁ _inst_6) f₁)) (rfl.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ W₁ _inst_3 _inst_6) (NormedAddGroupHom.comp.{u2, u1, u1} V₁ W₁ W₁ _inst_3 _inst_6 _inst_6 (NormedAddGroupHom.id.{u1} W₁ _inst_6) g₁))) (NormedAddGroupHom.id.{u2} (Subtype.{succ u2} V₁ (fun (x : V₁) => Membership.mem.{u2, u2} V₁ (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (AddSubgroup.seminormedAddCommGroup.{u2} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.map_id NormedAddGroupHom.Equalizer.map_idₓ'. -/
@[simp]
theorem map_id : map (id V₁) (id W₁) rfl rfl = id (f₁.equalizer g₁) := by ext; rfl
#align normed_add_group_hom.equalizer.map_id NormedAddGroupHom.Equalizer.map_id
-/- warning: normed_add_group_hom.equalizer.comm_sq₂ -> NormedAddGroupHom.Equalizer.comm_sq₂ is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.comm_sq₂ NormedAddGroupHom.Equalizer.comm_sq₂ₓ'. -/
theorem comm_sq₂ (hf : ψ.comp f₁ = f₂.comp φ) (hf' : ψ'.comp f₂ = f₃.comp φ') :
(ψ'.comp ψ).comp f₁ = f₃.comp (φ'.comp φ) := by
rw [comp_assoc, hf, ← comp_assoc, hf', comp_assoc]
#align normed_add_group_hom.equalizer.comm_sq₂ NormedAddGroupHom.Equalizer.comm_sq₂
-/- warning: normed_add_group_hom.equalizer.map_comp_map -> NormedAddGroupHom.Equalizer.map_comp_map is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.map_comp_map NormedAddGroupHom.Equalizer.map_comp_mapₓ'. -/
theorem map_comp_map (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ)
(hf' : ψ'.comp f₂ = f₃.comp φ') (hg' : ψ'.comp g₂ = g₃.comp φ') :
(map φ' ψ' hf' hg').comp (map φ ψ hf hg) =
@@ -1533,47 +984,26 @@ theorem map_comp_map (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g
by ext; rfl
#align normed_add_group_hom.equalizer.map_comp_map NormedAddGroupHom.Equalizer.map_comp_map
-/- warning: normed_add_group_hom.equalizer.ι_norm_noninc -> NormedAddGroupHom.Equalizer.ι_normNoninc is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2}, NormedAddGroupHom.NormNoninc.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_1 (NormedAddGroupHom.Equalizer.ι.{u1, u2} V W _inst_1 _inst_2 f g)
-but is expected to have type
- forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2}, NormedAddGroupHom.NormNoninc.{u2, u2} (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) V (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_1 (NormedAddGroupHom.Equalizer.ι.{u2, u1} V W _inst_1 _inst_2 f g)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.ι_norm_noninc NormedAddGroupHom.Equalizer.ι_normNonincₓ'. -/
theorem ι_normNoninc : (ι f g).NormNoninc := fun v => le_rfl
#align normed_add_group_hom.equalizer.ι_norm_noninc NormedAddGroupHom.Equalizer.ι_normNoninc
-/- warning: normed_add_group_hom.equalizer.lift_norm_noninc -> NormedAddGroupHom.Equalizer.lift_normNoninc is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (h : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ)), (NormedAddGroupHom.NormNoninc.{u3, u1} V₁ V _inst_3 _inst_1 φ) -> (NormedAddGroupHom.NormNoninc.{u3, u1} V₁ (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) (NormedAddGroupHom.Equalizer.lift.{u1, u2, u3} V W V₁ _inst_1 _inst_2 _inst_3 f g φ h))
-but is expected to have type
- forall {V : Type.{u2}} {W : Type.{u1}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u2} V₁ V _inst_3 _inst_1) (h : Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u3, u1} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V W _inst_3 _inst_1 _inst_2 g φ)), (NormedAddGroupHom.NormNoninc.{u3, u2} V₁ V _inst_3 _inst_1 φ) -> (NormedAddGroupHom.NormNoninc.{u3, u2} V₁ (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) (NormedAddGroupHom.Equalizer.lift.{u2, u1, u3} V W V₁ _inst_1 _inst_2 _inst_3 f g φ h))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.lift_norm_noninc NormedAddGroupHom.Equalizer.lift_normNonincₓ'. -/
/-- The lifting of a norm nonincreasing morphism is norm nonincreasing. -/
theorem lift_normNoninc (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) (hφ : φ.NormNoninc) :
(lift φ h).NormNoninc :=
hφ
#align normed_add_group_hom.equalizer.lift_norm_noninc NormedAddGroupHom.Equalizer.lift_normNoninc
-/- warning: normed_add_group_hom.equalizer.norm_lift_le -> NormedAddGroupHom.Equalizer.norm_lift_le is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.norm_lift_le NormedAddGroupHom.Equalizer.norm_lift_leₓ'. -/
/-- If `φ` satisfies `‖φ‖ ≤ C`, then the same is true for the lifted morphism. -/
theorem norm_lift_le (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) (C : ℝ) (hφ : ‖φ‖ ≤ C) :
‖lift φ h‖ ≤ C :=
hφ
#align normed_add_group_hom.equalizer.norm_lift_le NormedAddGroupHom.Equalizer.norm_lift_le
-/- warning: normed_add_group_hom.equalizer.map_norm_noninc -> NormedAddGroupHom.Equalizer.map_normNoninc is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.map_norm_noninc NormedAddGroupHom.Equalizer.map_normNonincₓ'. -/
theorem map_normNoninc (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ)
(hφ : φ.NormNoninc) : (map φ ψ hf hg).NormNoninc :=
lift_normNoninc _ _ <| hφ.comp ι_normNoninc
#align normed_add_group_hom.equalizer.map_norm_noninc NormedAddGroupHom.Equalizer.map_normNoninc
-/- warning: normed_add_group_hom.equalizer.norm_map_le -> NormedAddGroupHom.Equalizer.norm_map_le is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.norm_map_le NormedAddGroupHom.Equalizer.norm_map_leₓ'. -/
theorem norm_map_le (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ) (C : ℝ)
(hφ : ‖φ.comp (ι f₁ g₁)‖ ≤ C) : ‖map φ ψ hf hg‖ ≤ C :=
norm_lift_le _ _ _ hφ
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -217,10 +217,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.to_add_monoid_hom_injective NormedAddGroupHom.toAddMonoidHom_injectiveₓ'. -/
theorem toAddMonoidHom_injective :
Function.Injective (@NormedAddGroupHom.toAddMonoidHom V₁ V₂ _ _) := fun f g h =>
- coe_inj <|
- show ⇑f.toAddMonoidHom = g by
- rw [h]
- rfl
+ coe_inj <| show ⇑f.toAddMonoidHom = g by rw [h]; rfl
#align normed_add_group_hom.to_add_monoid_hom_injective NormedAddGroupHom.toAddMonoidHom_injective
/- warning: normed_add_group_hom.mk_to_add_monoid_hom -> NormedAddGroupHom.mk_toAddMonoidHom is a dubious translation:
@@ -424,9 +421,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lipschitz NormedAddGroupHom.lipschitzₓ'. -/
/-- continuous linear maps are Lipschitz continuous. -/
theorem lipschitz : LipschitzWith ⟨‖f‖, opNorm_nonneg f⟩ f :=
- LipschitzWith.of_dist_le_mul fun x y =>
- by
- rw [dist_eq_norm, dist_eq_norm, ← map_sub]
+ LipschitzWith.of_dist_le_mul fun x y => by rw [dist_eq_norm, dist_eq_norm, ← map_sub];
apply le_op_norm
#align normed_add_group_hom.lipschitz NormedAddGroupHom.lipschitz
@@ -618,11 +613,7 @@ Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.o
theorem opNorm_zero : ‖(0 : NormedAddGroupHom V₁ V₂)‖ = 0 :=
le_antisymm
(csInf_le bounds_bddBelow
- ⟨ge_of_eq rfl, fun _ =>
- le_of_eq
- (by
- rw [MulZeroClass.zero_mul]
- exact norm_zero)⟩)
+ ⟨ge_of_eq rfl, fun _ => le_of_eq (by rw [MulZeroClass.zero_mul]; exact norm_zero)⟩)
(opNorm_nonneg _)
#align normed_add_group_hom.op_norm_zero NormedAddGroupHom.opNorm_zero
@@ -1061,10 +1052,7 @@ but is expected to have type
forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u3} V₂] [_inst_4 : SeminormedAddCommGroup.{u2} V₃] {f : NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4} (C₁ : Real) (C₂ : Real) (C₃ : Real), (Eq.{1} Real C₃ (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C₂ C₁)) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u3, u2} V₂ V₃ _inst_3 _inst_4) g) C₂) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₂ _inst_2 _inst_3) f) C₁) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) C₃)
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_comp_le_of_le' NormedAddGroupHom.norm_comp_le_of_le'ₓ'. -/
theorem norm_comp_le_of_le' {g : NormedAddGroupHom V₂ V₃} (C₁ C₂ C₃ : ℝ) (h : C₃ = C₂ * C₁)
- (hg : ‖g‖ ≤ C₂) (hf : ‖f‖ ≤ C₁) : ‖g.comp f‖ ≤ C₃ :=
- by
- rw [h]
- exact norm_comp_le_of_le hg hf
+ (hg : ‖g‖ ≤ C₂) (hf : ‖f‖ ≤ C₁) : ‖g.comp f‖ ≤ C₃ := by rw [h]; exact norm_comp_le_of_le hg hf
#align normed_add_group_hom.norm_comp_le_of_le' NormedAddGroupHom.norm_comp_le_of_le'
/- warning: normed_add_group_hom.comp_hom -> NormedAddGroupHom.compHom is a dubious translation:
@@ -1073,15 +1061,8 @@ Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.c
/-- Composition of normed groups hom as an additive group morphism. -/
def compHom : NormedAddGroupHom V₂ V₃ →+ NormedAddGroupHom V₁ V₂ →+ NormedAddGroupHom V₁ V₃ :=
AddMonoidHom.mk'
- (fun g =>
- AddMonoidHom.mk' (fun f => g.comp f)
- (by
- intros
- ext
- exact map_add g _ _))
- (by
- intros
- ext
+ (fun g => AddMonoidHom.mk' (fun f => g.comp f) (by intros ; ext; exact map_add g _ _))
+ (by intros ; ext;
simp only [comp_apply, Pi.add_apply, Function.comp_apply, AddMonoidHom.add_apply,
AddMonoidHom.mk'_apply, coe_add])
#align normed_add_group_hom.comp_hom NormedAddGroupHom.compHom
@@ -1093,10 +1074,8 @@ but is expected to have type
forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u3} V₂] [_inst_4 : SeminormedAddCommGroup.{u2} V₃] (f : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4), Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 f (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) 0 (Zero.toOfNat0.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zero.{u1, u3} V₁ V₂ _inst_2 _inst_3)))) (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) 0 (Zero.toOfNat0.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.zero.{u1, u2} V₁ V₃ _inst_2 _inst_4)))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.comp_zero NormedAddGroupHom.comp_zeroₓ'. -/
@[simp]
-theorem comp_zero (f : NormedAddGroupHom V₂ V₃) : f.comp (0 : NormedAddGroupHom V₁ V₂) = 0 :=
- by
- ext
- exact map_zero f
+theorem comp_zero (f : NormedAddGroupHom V₂ V₃) : f.comp (0 : NormedAddGroupHom V₁ V₂) = 0 := by
+ ext; exact map_zero f
#align normed_add_group_hom.comp_zero NormedAddGroupHom.comp_zero
/- warning: normed_add_group_hom.zero_comp -> NormedAddGroupHom.zero_comp is a dubious translation:
@@ -1106,18 +1085,14 @@ but is expected to have type
forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} {V₃ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u1} V₃] (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u3) (succ u1)} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.zero.{u2, u1} V₂ V₃ _inst_3 _inst_4))) f) (OfNat.ofNat.{max u3 u1} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) 0 (Zero.toOfNat0.{max u3 u1} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.zero.{u3, u1} V₁ V₃ _inst_2 _inst_4)))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.zero_comp NormedAddGroupHom.zero_compₓ'. -/
@[simp]
-theorem zero_comp (f : NormedAddGroupHom V₁ V₂) : (0 : NormedAddGroupHom V₂ V₃).comp f = 0 :=
- by
- ext
- rfl
+theorem zero_comp (f : NormedAddGroupHom V₁ V₂) : (0 : NormedAddGroupHom V₂ V₃).comp f = 0 := by
+ ext; rfl
#align normed_add_group_hom.zero_comp NormedAddGroupHom.zero_comp
#print NormedAddGroupHom.comp_assoc /-
theorem comp_assoc {V₄ : Type _} [SeminormedAddCommGroup V₄] (h : NormedAddGroupHom V₃ V₄)
(g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁ V₂) :
- (h.comp g).comp f = h.comp (g.comp f) := by
- ext
- rfl
+ (h.comp g).comp f = h.comp (g.comp f) := by ext; rfl
#align normed_add_group_hom.comp_assoc NormedAddGroupHom.comp_assoc
-/
@@ -1151,10 +1126,7 @@ def incl (s : AddSubgroup V) : NormedAddGroupHom s V
where
toFun := (coe : s → V)
map_add' v w := AddSubgroup.coe_add _ _ _
- bound' :=
- ⟨1, fun v => by
- rw [one_mul]
- rfl⟩
+ bound' := ⟨1, fun v => by rw [one_mul]; rfl⟩
#align normed_add_group_hom.incl NormedAddGroupHom.incl
/- warning: normed_add_group_hom.norm_incl -> NormedAddGroupHom.norm_incl is a dubious translation:
@@ -1185,10 +1157,7 @@ lean 3 declaration is
but is expected to have type
forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (v : V₁), Iff (Membership.mem.{u2, u2} V₁ (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))) v (NormedAddGroupHom.ker.{u2, u1} V₁ V₂ _inst_3 _inst_4 f)) (Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_3 _inst_4))) f v) (OfNat.ofNat.{u1} V₂ 0 (Zero.toOfNat0.{u1} V₂ (NegZeroClass.toZero.{u1} V₂ (SubNegZeroMonoid.toNegZeroClass.{u1} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u1} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u1} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_4)))))))))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mem_ker NormedAddGroupHom.mem_kerₓ'. -/
-theorem mem_ker (v : V₁) : v ∈ f.ker ↔ f v = 0 :=
- by
- erw [f.to_add_monoid_hom.mem_ker]
- rfl
+theorem mem_ker (v : V₁) : v ∈ f.ker ↔ f v = 0 := by erw [f.to_add_monoid_hom.mem_ker]; rfl
#align normed_add_group_hom.mem_ker NormedAddGroupHom.mem_ker
/- warning: normed_add_group_hom.ker.lift -> NormedAddGroupHom.ker.lift is a dubious translation:
@@ -1202,15 +1171,8 @@ Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.k
@[simps]
def ker.lift (h : g.comp f = 0) : NormedAddGroupHom V₁ g.ker
where
- toFun v :=
- ⟨f v, by
- erw [g.mem_ker]
- show (g.comp f) v = 0
- rw [h]
- rfl⟩
- map_add' v w := by
- simp only [map_add]
- rfl
+ toFun v := ⟨f v, by erw [g.mem_ker]; show (g.comp f) v = 0; rw [h]; rfl⟩
+ map_add' v w := by simp only [map_add]; rfl
bound' := f.bound'
#align normed_add_group_hom.ker.lift NormedAddGroupHom.ker.lift
@@ -1221,9 +1183,7 @@ but is expected to have type
forall {V₁ : Type.{u3}} {V₂ : Type.{u1}} {V₃ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u3} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] [_inst_5 : SeminormedAddCommGroup.{u2} V₃] (f : NormedAddGroupHom.{u3, u1} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u1, u2} V₂ V₃ _inst_4 _inst_5) (h : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f) (OfNat.ofNat.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₁ V₃ _inst_3 _inst_5) 0 (Zero.toOfNat0.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.zero.{u3, u2} V₁ V₃ _inst_3 _inst_5)))), Eq.{max (succ u3) (succ u1)} (NormedAddGroupHom.{u3, u1} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.comp.{u3, u1, u1} V₁ (Subtype.{succ u1} V₂ (fun (x : V₂) => Membership.mem.{u1, u1} V₂ (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))) x (NormedAddGroupHom.ker.{u1, u2} V₂ V₃ _inst_4 _inst_5 g))) V₂ _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V₂ _inst_4 (NormedAddGroupHom.ker.{u1, u2} V₂ V₃ _inst_4 _inst_5 g)) _inst_4 (NormedAddGroupHom.incl.{u1} V₂ _inst_4 (NormedAddGroupHom.ker.{u1, u2} V₂ V₃ _inst_4 _inst_5 g)) (NormedAddGroupHom.ker.lift.{u3, u1, u2} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 f g h)) f
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.ker.incl_comp_lift NormedAddGroupHom.ker.incl_comp_liftₓ'. -/
@[simp]
-theorem ker.incl_comp_lift (h : g.comp f = 0) : (incl g.ker).comp (ker.lift f g h) = f :=
- by
- ext
+theorem ker.incl_comp_lift (h : g.comp f = 0) : (incl g.ker).comp (ker.lift f g h) = f := by ext;
rfl
#align normed_add_group_hom.ker.incl_comp_lift NormedAddGroupHom.ker.incl_comp_lift
@@ -1234,10 +1194,7 @@ but is expected to have type
forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂], Eq.{succ u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (NormedAddGroupHom.ker.{u2, u1} V₁ V₂ _inst_3 _inst_4 (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.zero.{u2, u1} V₁ V₂ _inst_3 _inst_4)))) (Top.top.{u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.ker_zero NormedAddGroupHom.ker_zeroₓ'. -/
@[simp]
-theorem ker_zero : (0 : NormedAddGroupHom V₁ V₂).ker = ⊤ :=
- by
- ext
- simp [mem_ker]
+theorem ker_zero : (0 : NormedAddGroupHom V₁ V₂).ker = ⊤ := by ext; simp [mem_ker]
#align normed_add_group_hom.ker_zero NormedAddGroupHom.ker_zero
/- warning: normed_add_group_hom.coe_ker -> NormedAddGroupHom.coe_ker is a dubious translation:
@@ -1284,9 +1241,7 @@ lean 3 declaration is
but is expected to have type
forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (v : V₂), Iff (Membership.mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) v (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)) (Exists.{succ u1} V₁ (fun (w : V₁) => Eq.{succ u2} V₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_3 _inst_4))) f w) v))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mem_range NormedAddGroupHom.mem_rangeₓ'. -/
-theorem mem_range (v : V₂) : v ∈ f.range ↔ ∃ w, f w = v :=
- by
- rw [range, AddMonoidHom.mem_range]
+theorem mem_range (v : V₂) : v ∈ f.range ↔ ∃ w, f w = v := by rw [range, AddMonoidHom.mem_range];
rfl
#align normed_add_group_hom.mem_range NormedAddGroupHom.mem_range
@@ -1307,10 +1262,8 @@ lean 3 declaration is
but is expected to have type
forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u1, u3} V₂ V₃ _inst_4 _inst_5), Eq.{succ u3} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) (NormedAddGroupHom.range.{u2, u3} V₁ V₃ _inst_3 _inst_5 (NormedAddGroupHom.comp.{u2, u1, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f)) (AddSubgroup.map.{u1, u3} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)) V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5)) (NormedAddGroupHom.toAddMonoidHom.{u1, u3} V₂ V₃ _inst_4 _inst_5 g) (NormedAddGroupHom.range.{u2, u1} V₁ V₂ _inst_3 _inst_4 f))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.comp_range NormedAddGroupHom.comp_rangeₓ'. -/
-theorem comp_range : (g.comp f).range = AddSubgroup.map g.toAddMonoidHom f.range :=
- by
- erw [AddMonoidHom.map_range]
- rfl
+theorem comp_range : (g.comp f).range = AddSubgroup.map g.toAddMonoidHom f.range := by
+ erw [AddMonoidHom.map_range]; rfl
#align normed_add_group_hom.comp_range NormedAddGroupHom.comp_range
/- warning: normed_add_group_hom.incl_range -> NormedAddGroupHom.incl_range is a dubious translation:
@@ -1319,9 +1272,7 @@ lean 3 declaration is
but is expected to have type
forall {V₁ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] (s : AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))), Eq.{succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (NormedAddGroupHom.range.{u1, u1} (Subtype.{succ u1} V₁ (fun (x : V₁) => Membership.mem.{u1, u1} V₁ (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) x s)) V₁ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 s) _inst_3 (NormedAddGroupHom.incl.{u1} V₁ _inst_3 s)) s
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.incl_range NormedAddGroupHom.incl_rangeₓ'. -/
-theorem incl_range (s : AddSubgroup V₁) : (incl s).range = s :=
- by
- ext x
+theorem incl_range (s : AddSubgroup V₁) : (incl s).range = s := by ext x;
exact ⟨fun ⟨y, hy⟩ => by rw [← hy] <;> simp, fun hx => ⟨⟨x, hx⟩, by simp⟩⟩
#align normed_add_group_hom.incl_range NormedAddGroupHom.incl_range
@@ -1478,11 +1429,8 @@ lean 3 declaration is
but is expected to have type
forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] (f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) (g : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) W (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_2) (NormedAddGroupHom.comp.{u2, u2, u1} (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) V W (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_1 _inst_2 f (NormedAddGroupHom.Equalizer.ι.{u2, u1} V W _inst_1 _inst_2 f g)) (NormedAddGroupHom.comp.{u2, u2, u1} (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) V W (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_1 _inst_2 g (NormedAddGroupHom.Equalizer.ι.{u2, u1} V W _inst_1 _inst_2 f g))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.comp_ι_eq NormedAddGroupHom.Equalizer.comp_ι_eqₓ'. -/
-theorem comp_ι_eq : f.comp (ι f g) = g.comp (ι f g) :=
- by
- ext
- rw [comp_apply, comp_apply, ← sub_eq_zero, ← NormedAddGroupHom.sub_apply]
- exact x.2
+theorem comp_ι_eq : f.comp (ι f g) = g.comp (ι f g) := by ext;
+ rw [comp_apply, comp_apply, ← sub_eq_zero, ← NormedAddGroupHom.sub_apply]; exact x.2
#align normed_add_group_hom.equalizer.comp_ι_eq NormedAddGroupHom.Equalizer.comp_ι_eq
variable {f g}
@@ -1503,12 +1451,8 @@ def lift (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) :
⟨φ v,
show (f - g) (φ v) = 0 by
rw [NormedAddGroupHom.sub_apply, sub_eq_zero, ← comp_apply, h, comp_apply]⟩
- map_add' v₁ v₂ := by
- ext
- simp only [map_add, AddSubgroup.coe_add, Subtype.coe_mk]
- bound' := by
- obtain ⟨C, C_pos, hC⟩ := φ.bound
- exact ⟨C, hC⟩
+ map_add' v₁ v₂ := by ext; simp only [map_add, AddSubgroup.coe_add, Subtype.coe_mk]
+ bound' := by obtain ⟨C, C_pos, hC⟩ := φ.bound; exact ⟨C, hC⟩
#align normed_add_group_hom.equalizer.lift NormedAddGroupHom.Equalizer.lift
/- warning: normed_add_group_hom.equalizer.ι_comp_lift -> NormedAddGroupHom.Equalizer.ι_comp_lift is a dubious translation:
@@ -1516,9 +1460,7 @@ def lift (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) :
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.ι_comp_lift NormedAddGroupHom.Equalizer.ι_comp_liftₓ'. -/
@[simp]
theorem ι_comp_lift (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) :
- (ι _ _).comp (lift φ h) = φ := by
- ext
- rfl
+ (ι _ _).comp (lift φ h) = φ := by ext; rfl
#align normed_add_group_hom.equalizer.ι_comp_lift NormedAddGroupHom.Equalizer.ι_comp_lift
/- warning: normed_add_group_hom.equalizer.lift_equiv -> NormedAddGroupHom.Equalizer.liftEquiv is a dubious translation:
@@ -1535,9 +1477,7 @@ def liftEquiv :
toFun φ := lift φ φ.Prop
invFun ψ := ⟨(ι f g).comp ψ, by rw [← comp_assoc, ← comp_assoc, comp_ι_eq]⟩
left_inv φ := by simp
- right_inv ψ := by
- ext
- rfl
+ right_inv ψ := by ext; rfl
#align normed_add_group_hom.equalizer.lift_equiv NormedAddGroupHom.Equalizer.liftEquiv
/- warning: normed_add_group_hom.equalizer.map -> NormedAddGroupHom.Equalizer.map is a dubious translation:
@@ -1548,8 +1488,7 @@ Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.e
`normed_add_group_hom (f₁.equalizer g₁) (f₂.equalizer g₂)`. -/
def map (φ : NormedAddGroupHom V₁ V₂) (ψ : NormedAddGroupHom W₁ W₂) (hf : ψ.comp f₁ = f₂.comp φ)
(hg : ψ.comp g₁ = g₂.comp φ) : NormedAddGroupHom (f₁.equalizer g₁) (f₂.equalizer g₂) :=
- lift (φ.comp <| ι _ _) <| by
- simp only [← comp_assoc, ← hf, ← hg]
+ lift (φ.comp <| ι _ _) <| by simp only [← comp_assoc, ← hf, ← hg];
simp only [comp_assoc, comp_ι_eq]
#align normed_add_group_hom.equalizer.map NormedAddGroupHom.Equalizer.map
@@ -1573,10 +1512,7 @@ but is expected to have type
forall {V₁ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] {W₁ : Type.{u1}} [_inst_6 : SeminormedAddCommGroup.{u1} W₁] {f₁ : NormedAddGroupHom.{u2, u1} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u2, u1} V₁ W₁ _inst_3 _inst_6}, Eq.{succ u2} (NormedAddGroupHom.{u2, u2} (Subtype.{succ u2} V₁ (fun (x : V₁) => Membership.mem.{u2, u2} V₁ (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u2} V₁ (fun (x : V₁) => Membership.mem.{u2, u2} V₁ (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (AddSubgroup.seminormedAddCommGroup.{u2} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (NormedAddGroupHom.Equalizer.map.{u2, u2, u1, u1} V₁ V₁ _inst_3 _inst_3 W₁ W₁ _inst_6 _inst_6 f₁ g₁ f₁ g₁ (NormedAddGroupHom.id.{u2} V₁ _inst_3) (NormedAddGroupHom.id.{u1} W₁ _inst_6) (rfl.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ W₁ _inst_3 _inst_6) (NormedAddGroupHom.comp.{u2, u1, u1} V₁ W₁ W₁ _inst_3 _inst_6 _inst_6 (NormedAddGroupHom.id.{u1} W₁ _inst_6) f₁)) (rfl.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ W₁ _inst_3 _inst_6) (NormedAddGroupHom.comp.{u2, u1, u1} V₁ W₁ W₁ _inst_3 _inst_6 _inst_6 (NormedAddGroupHom.id.{u1} W₁ _inst_6) g₁))) (NormedAddGroupHom.id.{u2} (Subtype.{succ u2} V₁ (fun (x : V₁) => Membership.mem.{u2, u2} V₁ (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (AddSubgroup.seminormedAddCommGroup.{u2} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁)))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.map_id NormedAddGroupHom.Equalizer.map_idₓ'. -/
@[simp]
-theorem map_id : map (id V₁) (id W₁) rfl rfl = id (f₁.equalizer g₁) :=
- by
- ext
- rfl
+theorem map_id : map (id V₁) (id W₁) rfl rfl = id (f₁.equalizer g₁) := by ext; rfl
#align normed_add_group_hom.equalizer.map_id NormedAddGroupHom.Equalizer.map_id
/- warning: normed_add_group_hom.equalizer.comm_sq₂ -> NormedAddGroupHom.Equalizer.comm_sq₂ is a dubious translation:
@@ -1594,9 +1530,7 @@ theorem map_comp_map (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g
(hf' : ψ'.comp f₂ = f₃.comp φ') (hg' : ψ'.comp g₂ = g₃.comp φ') :
(map φ' ψ' hf' hg').comp (map φ ψ hf hg) =
map (φ'.comp φ) (ψ'.comp ψ) (comm_sq₂ hf hf') (comm_sq₂ hg hg') :=
- by
- ext
- rfl
+ by ext; rfl
#align normed_add_group_hom.equalizer.map_comp_map NormedAddGroupHom.Equalizer.map_comp_map
/- warning: normed_add_group_hom.equalizer.ι_norm_noninc -> NormedAddGroupHom.Equalizer.ι_normNoninc is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -176,10 +176,7 @@ theorem coe_mk (f) (h₁) (h₂) (h₃) : ⇑(⟨f, h₁, h₂, h₃⟩ : Normed
#align normed_add_group_hom.coe_mk NormedAddGroupHom.coe_mk
/- warning: normed_add_group_hom.coe_mk_normed_add_group_hom -> NormedAddGroupHom.coe_mkNormedAddGroupHom is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (C : Real) (hC : forall (v : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) v))), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C hC)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (C : Real) (hC : forall (v : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) v) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) v) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) v))), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C hC)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f)
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_mk_normed_add_group_hom NormedAddGroupHom.coe_mkNormedAddGroupHomₓ'. -/
@[simp]
theorem coe_mkNormedAddGroupHom (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAddGroupHom C hC) = f :=
@@ -187,10 +184,7 @@ theorem coe_mkNormedAddGroupHom (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAd
#align normed_add_group_hom.coe_mk_normed_add_group_hom NormedAddGroupHom.coe_mkNormedAddGroupHom
/- warning: normed_add_group_hom.coe_mk_normed_add_group_hom' -> NormedAddGroupHom.coe_mkNormedAddGroupHom' is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (C : NNReal) (hC : forall (x : V₁), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} V₂ (SeminormedAddGroup.toNNNorm.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) C (NNNorm.nnnorm.{u1} V₁ (SeminormedAddGroup.toNNNorm.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)) x))), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom'.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C hC)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f)
-but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (C : NNReal) (hC : forall (x : V₁), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddGroup.toNNNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) C (NNNorm.nnnorm.{u2} V₁ (SeminormedAddGroup.toNNNorm.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)) x))), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (AddMonoidHom.mkNormedAddGroupHom'.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C hC)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f)
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_mk_normed_add_group_hom' NormedAddGroupHom.coe_mkNormedAddGroupHom'ₓ'. -/
@[simp]
theorem coe_mkNormedAddGroupHom' (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAddGroupHom' C hC) = f :=
@@ -1074,10 +1068,7 @@ theorem norm_comp_le_of_le' {g : NormedAddGroupHom V₂ V₃} (C₁ C₂ C₃ :
#align normed_add_group_hom.norm_comp_le_of_le' NormedAddGroupHom.norm_comp_le_of_le'
/- warning: normed_add_group_hom.comp_hom -> NormedAddGroupHom.compHom is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃], AddMonoidHom.{max u2 u3, max (max u1 u3) u1 u2} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (AddMonoidHom.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddMonoid.toAddZeroClass.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (SubNegMonoid.toAddMonoid.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (AddGroup.toSubNegMonoid.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (SeminormedAddGroup.toAddGroup.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u2, u3} V₂ V₃ _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{max (max u1 u3) u1 u2} (AddMonoidHom.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (SubNegMonoid.toAddMonoid.{max (max u1 u3) u1 u2} (AddMonoidHom.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddGroup.toSubNegMonoid.{max (max u1 u3) u1 u2} (AddMonoidHom.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddCommGroup.toAddGroup.{max (max u1 u3) u1 u2} (AddMonoidHom.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddMonoidHom.addCommGroup.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (NormedAddGroupHom.addCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃], AddMonoidHom.{max u3 u2, max (max u3 u1) u2 u1} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (AddMonoidHom.{max u2 u1, max u3 u1} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddMonoid.toAddZeroClass.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (SubNegMonoid.toAddMonoid.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (AddGroup.toSubNegMonoid.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (SeminormedAddGroup.toAddGroup.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u2, u3} V₂ V₃ _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{max (max u1 u2) u3} (AddMonoidHom.{max u2 u1, max u3 u1} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (SubNegMonoid.toAddMonoid.{max (max u1 u2) u3} (AddMonoidHom.{max u2 u1, max u3 u1} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddGroup.toSubNegMonoid.{max (max u1 u2) u3} (AddMonoidHom.{max u2 u1, max u3 u1} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddCommGroup.toAddGroup.{max (max u1 u2) u3} (AddMonoidHom.{max u2 u1, max u3 u1} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddMonoidHom.addCommGroup.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (NormedAddGroupHom.toAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.comp_hom NormedAddGroupHom.compHomₓ'. -/
/-- Composition of normed groups hom as an additive group morphism. -/
def compHom : NormedAddGroupHom V₂ V₃ →+ NormedAddGroupHom V₁ V₂ →+ NormedAddGroupHom V₁ V₃ :=
@@ -1167,10 +1158,7 @@ def incl (s : AddSubgroup V) : NormedAddGroupHom s V
#align normed_add_group_hom.incl NormedAddGroupHom.incl
/- warning: normed_add_group_hom.norm_incl -> NormedAddGroupHom.norm_incl is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} V] {V' : AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))} (x : coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V'), Eq.{1} Real (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) (coeFn.{succ u1, succ u1} (NormedAddGroupHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V') V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1) (fun (_x : NormedAddGroupHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V') V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1) => (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V') -> V) (NormedAddGroupHom.hasCoeToFun.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V') V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1) (NormedAddGroupHom.incl.{u1} V _inst_1 V') x)) (Norm.norm.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V') (SeminormedAddCommGroup.toHasNorm.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V') (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V')) x)
-but is expected to have type
- forall {V : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} V] {V' : AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))} (x : Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')), Eq.{1} Real (Norm.norm.{u1} V (SeminormedAddCommGroup.toNorm.{u1} V _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (NormedAddGroupHom.{u1, u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1) (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (fun (_x : Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) => V) (AddHomClass.toFunLike.{u1, u1, u1} (NormedAddGroupHom.{u1, u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1) (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) V (AddZeroClass.toAdd.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (AddMonoid.toAddZeroClass.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SubNegMonoid.toAddMonoid.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (AddGroup.toSubNegMonoid.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SeminormedAddGroup.toAddGroup.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V'))))))) (AddZeroClass.toAdd.{u1} V (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (NormedAddGroupHom.{u1, u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1) (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) V (AddMonoid.toAddZeroClass.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SubNegMonoid.toAddMonoid.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (AddGroup.toSubNegMonoid.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SeminormedAddGroup.toAddGroup.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V')))))) (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1))) (NormedAddGroupHom.incl.{u1} V _inst_1 V') x)) (Norm.norm.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SeminormedAddCommGroup.toNorm.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V')) x)
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_incl NormedAddGroupHom.norm_inclₓ'. -/
theorem norm_incl {V' : AddSubgroup V} (x : V') : ‖incl _ x‖ = ‖x‖ :=
rfl
@@ -1524,10 +1512,7 @@ def lift (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) :
#align normed_add_group_hom.equalizer.lift NormedAddGroupHom.Equalizer.lift
/- warning: normed_add_group_hom.equalizer.ι_comp_lift -> NormedAddGroupHom.Equalizer.ι_comp_lift is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (h : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ)), Eq.{max (succ u3) (succ u1)} (NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (NormedAddGroupHom.comp.{u3, u1, u1} V₁ (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) V _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_1 (NormedAddGroupHom.Equalizer.ι.{u1, u2} V W _inst_1 _inst_2 f g) (NormedAddGroupHom.Equalizer.lift.{u1, u2, u3} V W V₁ _inst_1 _inst_2 _inst_3 f g φ h)) φ
-but is expected to have type
- forall {V : Type.{u2}} {W : Type.{u1}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u2} V₁ V _inst_3 _inst_1) (h : Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u3, u1} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V W _inst_3 _inst_1 _inst_2 g φ)), Eq.{max (succ u2) (succ u3)} (NormedAddGroupHom.{u3, u2} V₁ V _inst_3 _inst_1) (NormedAddGroupHom.comp.{u3, u2, u2} V₁ (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) V _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_1 (NormedAddGroupHom.Equalizer.ι.{u2, u1} V W _inst_1 _inst_2 f g) (NormedAddGroupHom.Equalizer.lift.{u2, u1, u3} V W V₁ _inst_1 _inst_2 _inst_3 f g φ h)) φ
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.ι_comp_lift NormedAddGroupHom.Equalizer.ι_comp_liftₓ'. -/
@[simp]
theorem ι_comp_lift (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) :
@@ -1556,10 +1541,7 @@ def liftEquiv :
#align normed_add_group_hom.equalizer.lift_equiv NormedAddGroupHom.Equalizer.liftEquiv
/- warning: normed_add_group_hom.equalizer.map -> NormedAddGroupHom.Equalizer.map is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] {W₁ : Type.{u3}} {W₂ : Type.{u4}} [_inst_6 : SeminormedAddCommGroup.{u3} W₁] [_inst_7 : SeminormedAddCommGroup.{u4} W₂] {f₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} (φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (ψ : NormedAddGroupHom.{u3, u4} W₁ W₂ _inst_6 _inst_7), (Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) -> (Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)) -> (NormedAddGroupHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)))
-but is expected to have type
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] {W₁ : Type.{u3}} {W₂ : Type.{u4}} [_inst_6 : SeminormedAddCommGroup.{u3} W₁] [_inst_7 : SeminormedAddCommGroup.{u4} W₂] {f₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} (φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (ψ : NormedAddGroupHom.{u3, u4} W₁ W₂ _inst_6 _inst_7), (Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) -> (Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)) -> (NormedAddGroupHom.{u1, u2} (Subtype.{succ u1} V₁ (fun (x : V₁) => Membership.mem.{u1, u1} V₁ (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u2} V₂ (fun (x : V₂) => Membership.mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) x (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)))
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.map NormedAddGroupHom.Equalizer.mapₓ'. -/
/-- Given `φ : normed_add_group_hom V₁ V₂` and `ψ : normed_add_group_hom W₁ W₂` such that
`ψ.comp f₁ = f₂.comp φ` and `ψ.comp g₁ = g₂.comp φ`, the induced morphism
@@ -1576,10 +1558,7 @@ variable {φ : NormedAddGroupHom V₁ V₂} {ψ : NormedAddGroupHom W₁ W₂}
variable {φ' : NormedAddGroupHom V₂ V₃} {ψ' : NormedAddGroupHom W₂ W₃}
/- warning: normed_add_group_hom.equalizer.ι_comp_map -> NormedAddGroupHom.Equalizer.ι_comp_map is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] {W₁ : Type.{u3}} {W₂ : Type.{u4}} [_inst_6 : SeminormedAddCommGroup.{u3} W₁] [_inst_7 : SeminormedAddCommGroup.{u4} W₂] {f₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u3, u4} W₁ W₂ _inst_6 _inst_7} (hf : Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)), Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_4) (NormedAddGroupHom.comp.{u1, u2, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) _inst_4 (NormedAddGroupHom.Equalizer.ι.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂) (NormedAddGroupHom.Equalizer.map.{u1, u2, u3, u4} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg)) (NormedAddGroupHom.comp.{u1, u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) V₁ V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_3 _inst_4 φ (NormedAddGroupHom.Equalizer.ι.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁))
-but is expected to have type
- forall {V₁ : Type.{u4}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u4} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] {W₁ : Type.{u2}} {W₂ : Type.{u3}} [_inst_6 : SeminormedAddCommGroup.{u2} W₁] [_inst_7 : SeminormedAddCommGroup.{u3} W₂] {f₁ : NormedAddGroupHom.{u4, u2} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u4, u2} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u1, u3} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u1, u3} V₂ W₂ _inst_4 _inst_7} {φ : NormedAddGroupHom.{u4, u1} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u2, u3} W₁ W₂ _inst_6 _inst_7} (hf : Eq.{max (succ u4) (succ u3)} (NormedAddGroupHom.{u4, u3} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u4, u2, u3} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u4, u1, u3} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u4) (succ u3)} (NormedAddGroupHom.{u4, u3} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u4, u2, u3} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u4, u1, u3} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)), Eq.{max (succ u4) (succ u1)} (NormedAddGroupHom.{u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) V₂ (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_4) (NormedAddGroupHom.comp.{u4, u1, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u1} V₂ (fun (x : V₂) => Membership.mem.{u1, u1} V₂ (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))) x (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) V₂ (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) _inst_4 (NormedAddGroupHom.Equalizer.ι.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂) (NormedAddGroupHom.Equalizer.map.{u4, u1, u2, u3} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg)) (NormedAddGroupHom.comp.{u4, u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) V₁ V₂ (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_3 _inst_4 φ (NormedAddGroupHom.Equalizer.ι.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.ι_comp_map NormedAddGroupHom.Equalizer.ι_comp_mapₓ'. -/
@[simp]
theorem ι_comp_map (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ) :
@@ -1601,10 +1580,7 @@ theorem map_id : map (id V₁) (id W₁) rfl rfl = id (f₁.equalizer g₁) :=
#align normed_add_group_hom.equalizer.map_id NormedAddGroupHom.Equalizer.map_id
/- warning: normed_add_group_hom.equalizer.comm_sq₂ -> NormedAddGroupHom.Equalizer.comm_sq₂ is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] {W₁ : Type.{u4}} {W₂ : Type.{u5}} {W₃ : Type.{u6}} [_inst_6 : SeminormedAddCommGroup.{u4} W₁] [_inst_7 : SeminormedAddCommGroup.{u5} W₂] [_inst_8 : SeminormedAddCommGroup.{u6} W₃] {f₁ : NormedAddGroupHom.{u1, u4} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u5} V₂ W₂ _inst_4 _inst_7} {f₃ : NormedAddGroupHom.{u3, u6} V₃ W₃ _inst_5 _inst_8} {φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u4, u5} W₁ W₂ _inst_6 _inst_7} {φ' : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5} {ψ' : NormedAddGroupHom.{u5, u6} W₂ W₃ _inst_7 _inst_8}, (Eq.{max (succ u1) (succ u5)} (NormedAddGroupHom.{u1, u5} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u4, u5} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u5} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) -> (Eq.{max (succ u2) (succ u6)} (NormedAddGroupHom.{u2, u6} V₂ W₃ _inst_4 _inst_8) (NormedAddGroupHom.comp.{u2, u5, u6} V₂ W₂ W₃ _inst_4 _inst_7 _inst_8 ψ' f₂) (NormedAddGroupHom.comp.{u2, u3, u6} V₂ V₃ W₃ _inst_4 _inst_5 _inst_8 f₃ φ')) -> (Eq.{max (succ u1) (succ u6)} (NormedAddGroupHom.{u1, u6} V₁ W₃ _inst_3 _inst_8) (NormedAddGroupHom.comp.{u1, u4, u6} V₁ W₁ W₃ _inst_3 _inst_6 _inst_8 (NormedAddGroupHom.comp.{u4, u5, u6} W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 ψ' ψ) f₁) (NormedAddGroupHom.comp.{u1, u3, u6} V₁ V₃ W₃ _inst_3 _inst_5 _inst_8 f₃ (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 φ' φ)))
-but is expected to have type
- forall {V₁ : Type.{u6}} {V₂ : Type.{u3}} {V₃ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u6} V₁] [_inst_4 : SeminormedAddCommGroup.{u3} V₂] [_inst_5 : SeminormedAddCommGroup.{u1} V₃] {W₁ : Type.{u4}} {W₂ : Type.{u5}} {W₃ : Type.{u2}} [_inst_6 : SeminormedAddCommGroup.{u4} W₁] [_inst_7 : SeminormedAddCommGroup.{u5} W₂] [_inst_8 : SeminormedAddCommGroup.{u2} W₃] {f₁ : NormedAddGroupHom.{u6, u4} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u3, u5} V₂ W₂ _inst_4 _inst_7} {f₃ : NormedAddGroupHom.{u1, u2} V₃ W₃ _inst_5 _inst_8} {φ : NormedAddGroupHom.{u6, u3} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u4, u5} W₁ W₂ _inst_6 _inst_7} {φ' : NormedAddGroupHom.{u3, u1} V₂ V₃ _inst_4 _inst_5} {ψ' : NormedAddGroupHom.{u5, u2} W₂ W₃ _inst_7 _inst_8}, (Eq.{max (succ u6) (succ u5)} (NormedAddGroupHom.{u6, u5} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u6, u4, u5} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u6, u3, u5} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) -> (Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₂ W₃ _inst_4 _inst_8) (NormedAddGroupHom.comp.{u3, u5, u2} V₂ W₂ W₃ _inst_4 _inst_7 _inst_8 ψ' f₂) (NormedAddGroupHom.comp.{u3, u1, u2} V₂ V₃ W₃ _inst_4 _inst_5 _inst_8 f₃ φ')) -> (Eq.{max (succ u6) (succ u2)} (NormedAddGroupHom.{u6, u2} V₁ W₃ _inst_3 _inst_8) (NormedAddGroupHom.comp.{u6, u4, u2} V₁ W₁ W₃ _inst_3 _inst_6 _inst_8 (NormedAddGroupHom.comp.{u4, u5, u2} W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 ψ' ψ) f₁) (NormedAddGroupHom.comp.{u6, u1, u2} V₁ V₃ W₃ _inst_3 _inst_5 _inst_8 f₃ (NormedAddGroupHom.comp.{u6, u3, u1} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 φ' φ)))
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.comm_sq₂ NormedAddGroupHom.Equalizer.comm_sq₂ₓ'. -/
theorem comm_sq₂ (hf : ψ.comp f₁ = f₂.comp φ) (hf' : ψ'.comp f₂ = f₃.comp φ') :
(ψ'.comp ψ).comp f₁ = f₃.comp (φ'.comp φ) := by
@@ -1612,10 +1588,7 @@ theorem comm_sq₂ (hf : ψ.comp f₁ = f₂.comp φ) (hf' : ψ'.comp f₂ = f
#align normed_add_group_hom.equalizer.comm_sq₂ NormedAddGroupHom.Equalizer.comm_sq₂
/- warning: normed_add_group_hom.equalizer.map_comp_map -> NormedAddGroupHom.Equalizer.map_comp_map is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] {W₁ : Type.{u4}} {W₂ : Type.{u5}} {W₃ : Type.{u6}} [_inst_6 : SeminormedAddCommGroup.{u4} W₁] [_inst_7 : SeminormedAddCommGroup.{u5} W₂] [_inst_8 : SeminormedAddCommGroup.{u6} W₃] {f₁ : NormedAddGroupHom.{u1, u4} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u4} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u5} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u2, u5} V₂ W₂ _inst_4 _inst_7} {f₃ : NormedAddGroupHom.{u3, u6} V₃ W₃ _inst_5 _inst_8} {g₃ : NormedAddGroupHom.{u3, u6} V₃ W₃ _inst_5 _inst_8} {φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u4, u5} W₁ W₂ _inst_6 _inst_7} {φ' : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5} {ψ' : NormedAddGroupHom.{u5, u6} W₂ W₃ _inst_7 _inst_8} (hf : Eq.{max (succ u1) (succ u5)} (NormedAddGroupHom.{u1, u5} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u4, u5} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u5} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u1) (succ u5)} (NormedAddGroupHom.{u1, u5} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u4, u5} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u1, u2, u5} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)) (hf' : Eq.{max (succ u2) (succ u6)} (NormedAddGroupHom.{u2, u6} V₂ W₃ _inst_4 _inst_8) (NormedAddGroupHom.comp.{u2, u5, u6} V₂ W₂ W₃ _inst_4 _inst_7 _inst_8 ψ' f₂) (NormedAddGroupHom.comp.{u2, u3, u6} V₂ V₃ W₃ _inst_4 _inst_5 _inst_8 f₃ φ')) (hg' : Eq.{max (succ u2) (succ u6)} (NormedAddGroupHom.{u2, u6} V₂ W₃ _inst_4 _inst_8) (NormedAddGroupHom.comp.{u2, u5, u6} V₂ W₂ W₃ _inst_4 _inst_7 _inst_8 ψ' g₂) (NormedAddGroupHom.comp.{u2, u3, u6} V₂ V₃ W₃ _inst_4 _inst_5 _inst_8 g₃ φ')), Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u3, succ (succ u3)} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) V₃ (AddSubgroup.setLike.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5)))) (NormedAddGroupHom.equalizer.{u3, u6} V₃ W₃ _inst_5 _inst_8 f₃ g₃)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u3} V₃ _inst_5 (NormedAddGroupHom.equalizer.{u3, u6} V₃ W₃ _inst_5 _inst_8 f₃ g₃))) (NormedAddGroupHom.comp.{u1, u2, u3} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.equalizer.{u2, u5} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (coeSort.{succ u3, succ (succ u3)} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) V₃ (AddSubgroup.setLike.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5)))) (NormedAddGroupHom.equalizer.{u3, u6} V₃ W₃ _inst_5 _inst_8 f₃ g₃)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u5} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (AddSubgroup.seminormedAddCommGroup.{u3} V₃ _inst_5 (NormedAddGroupHom.equalizer.{u3, u6} V₃ W₃ _inst_5 _inst_8 f₃ g₃)) (NormedAddGroupHom.Equalizer.map.{u2, u3, u5, u6} V₂ V₃ _inst_4 _inst_5 W₂ W₃ _inst_7 _inst_8 f₂ g₂ f₃ g₃ φ' ψ' hf' hg') (NormedAddGroupHom.Equalizer.map.{u1, u2, u4, u5} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg)) (NormedAddGroupHom.Equalizer.map.{u1, u3, u4, u6} V₁ V₃ _inst_3 _inst_5 W₁ W₃ _inst_6 _inst_8 f₁ g₁ f₃ g₃ (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 φ' φ) (NormedAddGroupHom.comp.{u4, u5, u6} W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 ψ' ψ) (NormedAddGroupHom.Equalizer.comm_sq₂.{u1, u2, u3, u4, u5, u6} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 f₁ f₂ f₃ φ ψ φ' ψ' hf hf') (NormedAddGroupHom.Equalizer.comm_sq₂.{u1, u2, u3, u4, u5, u6} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 g₁ g₂ g₃ φ ψ φ' ψ' hg hg'))
-but is expected to have type
- forall {V₁ : Type.{u6}} {V₂ : Type.{u3}} {V₃ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u6} V₁] [_inst_4 : SeminormedAddCommGroup.{u3} V₂] [_inst_5 : SeminormedAddCommGroup.{u1} V₃] {W₁ : Type.{u4}} {W₂ : Type.{u5}} {W₃ : Type.{u2}} [_inst_6 : SeminormedAddCommGroup.{u4} W₁] [_inst_7 : SeminormedAddCommGroup.{u5} W₂] [_inst_8 : SeminormedAddCommGroup.{u2} W₃] {f₁ : NormedAddGroupHom.{u6, u4} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u6, u4} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u3, u5} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u3, u5} V₂ W₂ _inst_4 _inst_7} {f₃ : NormedAddGroupHom.{u1, u2} V₃ W₃ _inst_5 _inst_8} {g₃ : NormedAddGroupHom.{u1, u2} V₃ W₃ _inst_5 _inst_8} {φ : NormedAddGroupHom.{u6, u3} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u4, u5} W₁ W₂ _inst_6 _inst_7} {φ' : NormedAddGroupHom.{u3, u1} V₂ V₃ _inst_4 _inst_5} {ψ' : NormedAddGroupHom.{u5, u2} W₂ W₃ _inst_7 _inst_8} (hf : Eq.{max (succ u6) (succ u5)} (NormedAddGroupHom.{u6, u5} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u6, u4, u5} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u6, u3, u5} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u6) (succ u5)} (NormedAddGroupHom.{u6, u5} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u6, u4, u5} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u6, u3, u5} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)) (hf' : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₂ W₃ _inst_4 _inst_8) (NormedAddGroupHom.comp.{u3, u5, u2} V₂ W₂ W₃ _inst_4 _inst_7 _inst_8 ψ' f₂) (NormedAddGroupHom.comp.{u3, u1, u2} V₂ V₃ W₃ _inst_4 _inst_5 _inst_8 f₃ φ')) (hg' : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₂ W₃ _inst_4 _inst_8) (NormedAddGroupHom.comp.{u3, u5, u2} V₂ W₂ W₃ _inst_4 _inst_7 _inst_8 ψ' g₂) (NormedAddGroupHom.comp.{u3, u1, u2} V₂ V₃ W₃ _inst_4 _inst_5 _inst_8 g₃ φ')), Eq.{max (succ u6) (succ u1)} (NormedAddGroupHom.{u6, u1} (Subtype.{succ u6} V₁ (fun (x : V₁) => Membership.mem.{u6, u6} V₁ (AddSubgroup.{u6} V₁ (SeminormedAddGroup.toAddGroup.{u6} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u6} V₁ _inst_3))) (SetLike.instMembership.{u6, u6} (AddSubgroup.{u6} V₁ (SeminormedAddGroup.toAddGroup.{u6} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u6} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u6} V₁ (SeminormedAddGroup.toAddGroup.{u6} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u6} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u6, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u1} V₃ (fun (x : V₃) => Membership.mem.{u1, u1} V₃ (AddSubgroup.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_5))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_5))) V₃ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_5)))) x (NormedAddGroupHom.equalizer.{u1, u2} V₃ W₃ _inst_5 _inst_8 f₃ g₃))) (AddSubgroup.seminormedAddCommGroup.{u6} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u6, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₃ _inst_5 (NormedAddGroupHom.equalizer.{u1, u2} V₃ W₃ _inst_5 _inst_8 f₃ g₃))) (NormedAddGroupHom.comp.{u6, u3, u1} (Subtype.{succ u6} V₁ (fun (x : V₁) => Membership.mem.{u6, u6} V₁ (AddSubgroup.{u6} V₁ (SeminormedAddGroup.toAddGroup.{u6} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u6} V₁ _inst_3))) (SetLike.instMembership.{u6, u6} (AddSubgroup.{u6} V₁ (SeminormedAddGroup.toAddGroup.{u6} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u6} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u6} V₁ (SeminormedAddGroup.toAddGroup.{u6} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u6} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u6, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u3} V₂ (fun (x : V₂) => Membership.mem.{u3, u3} V₂ (AddSubgroup.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4))) (SetLike.instMembership.{u3, u3} (AddSubgroup.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4)))) x (NormedAddGroupHom.equalizer.{u3, u5} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (Subtype.{succ u1} V₃ (fun (x : V₃) => Membership.mem.{u1, u1} V₃ (AddSubgroup.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_5))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_5))) V₃ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_5)))) x (NormedAddGroupHom.equalizer.{u1, u2} V₃ W₃ _inst_5 _inst_8 f₃ g₃))) (AddSubgroup.seminormedAddCommGroup.{u6} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u6, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u3} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u3, u5} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (AddSubgroup.seminormedAddCommGroup.{u1} V₃ _inst_5 (NormedAddGroupHom.equalizer.{u1, u2} V₃ W₃ _inst_5 _inst_8 f₃ g₃)) (NormedAddGroupHom.Equalizer.map.{u3, u1, u5, u2} V₂ V₃ _inst_4 _inst_5 W₂ W₃ _inst_7 _inst_8 f₂ g₂ f₃ g₃ φ' ψ' hf' hg') (NormedAddGroupHom.Equalizer.map.{u6, u3, u4, u5} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg)) (NormedAddGroupHom.Equalizer.map.{u6, u1, u4, u2} V₁ V₃ _inst_3 _inst_5 W₁ W₃ _inst_6 _inst_8 f₁ g₁ f₃ g₃ (NormedAddGroupHom.comp.{u6, u3, u1} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 φ' φ) (NormedAddGroupHom.comp.{u4, u5, u2} W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 ψ' ψ) (NormedAddGroupHom.Equalizer.comm_sq₂.{u1, u2, u3, u4, u5, u6} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 f₁ f₂ f₃ φ ψ φ' ψ' hf hf') (NormedAddGroupHom.Equalizer.comm_sq₂.{u1, u2, u3, u4, u5, u6} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 g₁ g₂ g₃ φ ψ φ' ψ' hg hg'))
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.map_comp_map NormedAddGroupHom.Equalizer.map_comp_mapₓ'. -/
theorem map_comp_map (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ)
(hf' : ψ'.comp f₂ = f₃.comp φ') (hg' : ψ'.comp g₂ = g₃.comp φ') :
@@ -1648,10 +1621,7 @@ theorem lift_normNoninc (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp
#align normed_add_group_hom.equalizer.lift_norm_noninc NormedAddGroupHom.Equalizer.lift_normNoninc
/- warning: normed_add_group_hom.equalizer.norm_lift_le -> NormedAddGroupHom.Equalizer.norm_lift_le is a dubious translation:
-lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (h : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ)) (C : Real), (LE.le.{0} Real Real.hasLe (Norm.norm.{max u3 u1} (NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (NormedAddGroupHom.hasOpNorm.{u3, u1} V₁ V _inst_3 _inst_1) φ) C) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u3 u1} (NormedAddGroupHom.{u3, u1} V₁ (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g))) (NormedAddGroupHom.hasOpNorm.{u3, u1} V₁ (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g))) (NormedAddGroupHom.Equalizer.lift.{u1, u2, u3} V W V₁ _inst_1 _inst_2 _inst_3 f g φ h)) C)
-but is expected to have type
- forall {V : Type.{u2}} {W : Type.{u1}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u2} V₁ V _inst_3 _inst_1) (h : Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u3, u1} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V W _inst_3 _inst_1 _inst_2 g φ)) (C : Real), (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u3} (NormedAddGroupHom.{u3, u2} V₁ V _inst_3 _inst_1) (NormedAddGroupHom.hasOpNorm.{u3, u2} V₁ V _inst_3 _inst_1) φ) C) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₁ (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) (NormedAddGroupHom.hasOpNorm.{u3, u2} V₁ (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) (NormedAddGroupHom.Equalizer.lift.{u2, u1, u3} V W V₁ _inst_1 _inst_2 _inst_3 f g φ h)) C)
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.norm_lift_le NormedAddGroupHom.Equalizer.norm_lift_leₓ'. -/
/-- If `φ` satisfies `‖φ‖ ≤ C`, then the same is true for the lifted morphism. -/
theorem norm_lift_le (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) (C : ℝ) (hφ : ‖φ‖ ≤ C) :
@@ -1660,10 +1630,7 @@ theorem norm_lift_le (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ)
#align normed_add_group_hom.equalizer.norm_lift_le NormedAddGroupHom.Equalizer.norm_lift_le
/- warning: normed_add_group_hom.equalizer.map_norm_noninc -> NormedAddGroupHom.Equalizer.map_normNoninc is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] {W₁ : Type.{u3}} {W₂ : Type.{u4}} [_inst_6 : SeminormedAddCommGroup.{u3} W₁] [_inst_7 : SeminormedAddCommGroup.{u4} W₂] {f₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u3, u4} W₁ W₂ _inst_6 _inst_7} (hf : Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)), (NormedAddGroupHom.NormNoninc.{u1, u2} V₁ V₂ _inst_3 _inst_4 φ) -> (NormedAddGroupHom.NormNoninc.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (NormedAddGroupHom.Equalizer.map.{u1, u2, u3, u4} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg))
-but is expected to have type
- forall {V₁ : Type.{u4}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u4} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] {W₁ : Type.{u2}} {W₂ : Type.{u3}} [_inst_6 : SeminormedAddCommGroup.{u2} W₁] [_inst_7 : SeminormedAddCommGroup.{u3} W₂] {f₁ : NormedAddGroupHom.{u4, u2} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u4, u2} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u1, u3} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u1, u3} V₂ W₂ _inst_4 _inst_7} {φ : NormedAddGroupHom.{u4, u1} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u2, u3} W₁ W₂ _inst_6 _inst_7} (hf : Eq.{max (succ u4) (succ u3)} (NormedAddGroupHom.{u4, u3} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u4, u2, u3} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u4, u1, u3} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u4) (succ u3)} (NormedAddGroupHom.{u4, u3} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u4, u2, u3} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u4, u1, u3} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)), (NormedAddGroupHom.NormNoninc.{u4, u1} V₁ V₂ _inst_3 _inst_4 φ) -> (NormedAddGroupHom.NormNoninc.{u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u1} V₂ (fun (x : V₂) => Membership.mem.{u1, u1} V₂ (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))) x (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (NormedAddGroupHom.Equalizer.map.{u4, u1, u2, u3} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg))
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.map_norm_noninc NormedAddGroupHom.Equalizer.map_normNonincₓ'. -/
theorem map_normNoninc (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ)
(hφ : φ.NormNoninc) : (map φ ψ hf hg).NormNoninc :=
@@ -1671,10 +1638,7 @@ theorem map_normNoninc (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g
#align normed_add_group_hom.equalizer.map_norm_noninc NormedAddGroupHom.Equalizer.map_normNoninc
/- warning: normed_add_group_hom.equalizer.norm_map_le -> NormedAddGroupHom.Equalizer.norm_map_le is a dubious translation:
-lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] {W₁ : Type.{u3}} {W₂ : Type.{u4}} [_inst_6 : SeminormedAddCommGroup.{u3} W₁] [_inst_7 : SeminormedAddCommGroup.{u4} W₂] {f₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u3, u4} W₁ W₂ _inst_6 _inst_7} (hf : Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)) (C : Real), (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_4) (NormedAddGroupHom.comp.{u1, u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) V₁ V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_3 _inst_4 φ (NormedAddGroupHom.Equalizer.ι.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) C) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (NormedAddGroupHom.hasOpNorm.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (NormedAddGroupHom.Equalizer.map.{u1, u2, u3, u4} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg)) C)
-but is expected to have type
- forall {V₁ : Type.{u4}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u4} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] {W₁ : Type.{u2}} {W₂ : Type.{u3}} [_inst_6 : SeminormedAddCommGroup.{u2} W₁] [_inst_7 : SeminormedAddCommGroup.{u3} W₂] {f₁ : NormedAddGroupHom.{u4, u2} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u4, u2} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u1, u3} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u1, u3} V₂ W₂ _inst_4 _inst_7} {φ : NormedAddGroupHom.{u4, u1} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u2, u3} W₁ W₂ _inst_6 _inst_7} (hf : Eq.{max (succ u4) (succ u3)} (NormedAddGroupHom.{u4, u3} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u4, u2, u3} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u4, u1, u3} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u4) (succ u3)} (NormedAddGroupHom.{u4, u3} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u4, u2, u3} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u4, u1, u3} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)) (C : Real), (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u4} (NormedAddGroupHom.{u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) V₂ (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_4) (NormedAddGroupHom.hasOpNorm.{u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) V₂ (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_4) (NormedAddGroupHom.comp.{u4, u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) V₁ V₂ (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_3 _inst_4 φ (NormedAddGroupHom.Equalizer.ι.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) C) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u4} (NormedAddGroupHom.{u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u1} V₂ (fun (x : V₂) => Membership.mem.{u1, u1} V₂ (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))) x (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (NormedAddGroupHom.hasOpNorm.{u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u1} V₂ (fun (x : V₂) => Membership.mem.{u1, u1} V₂ (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))) x (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (NormedAddGroupHom.Equalizer.map.{u4, u1, u2, u3} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg)) C)
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.norm_map_le NormedAddGroupHom.Equalizer.norm_map_leₓ'. -/
theorem norm_map_le (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ) (C : ℝ)
(hφ : ‖φ.comp (ι f₁ g₁)‖ ≤ C) : ‖map φ ψ hf hg‖ ≤ C :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -66,7 +66,7 @@ def mkNormedAddGroupHom (f : V →+ W) (C : ℝ) (h : ∀ v, ‖f v‖ ≤ C *
/- warning: add_monoid_hom.mk_normed_add_group_hom' -> AddMonoidHom.mkNormedAddGroupHom' is a dubious translation:
lean 3 declaration is
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : NNReal), (forall (x : V), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} W (SeminormedAddGroup.toNNNorm.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (fun (_x : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) => V -> W) (AddMonoidHom.hasCoeToFun.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) C (NNNorm.nnnorm.{u1} V (SeminormedAddGroup.toNNNorm.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)) x))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : NNReal), (forall (x : V), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} W (SeminormedAddGroup.toNNNorm.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (fun (_x : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) => V -> W) (AddMonoidHom.hasCoeToFun.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) C (NNNorm.nnnorm.{u1} V (SeminormedAddGroup.toNNNorm.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)) x))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
but is expected to have type
forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : NNReal), (forall (x : V), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) x) (SeminormedAddGroup.toNNNorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) x) (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) x) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) _x) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddZeroClass.toAdd.{u1} V (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))))) (AddZeroClass.toAdd.{u2} W (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2))))) (AddMonoidHom.addMonoidHomClass.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) C (NNNorm.nnnorm.{u1} V (SeminormedAddGroup.toNNNorm.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)) x))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom' AddMonoidHom.mkNormedAddGroupHom'ₓ'. -/
@@ -188,7 +188,7 @@ theorem coe_mkNormedAddGroupHom (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAd
/- warning: normed_add_group_hom.coe_mk_normed_add_group_hom' -> NormedAddGroupHom.coe_mkNormedAddGroupHom' is a dubious translation:
lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (C : NNReal) (hC : forall (x : V₁), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} V₂ (SeminormedAddGroup.toNNNorm.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) C (NNNorm.nnnorm.{u1} V₁ (SeminormedAddGroup.toNNNorm.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)) x))), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom'.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C hC)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f)
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (C : NNReal) (hC : forall (x : V₁), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} V₂ (SeminormedAddGroup.toNNNorm.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) C (NNNorm.nnnorm.{u1} V₁ (SeminormedAddGroup.toNNNorm.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)) x))), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom'.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C hC)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f)
but is expected to have type
forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (C : NNReal) (hC : forall (x : V₁), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddGroup.toNNNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) C (NNNorm.nnnorm.{u2} V₁ (SeminormedAddGroup.toNNNorm.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)) x))), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (AddMonoidHom.mkNormedAddGroupHom'.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C hC)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f)
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_mk_normed_add_group_hom' NormedAddGroupHom.coe_mkNormedAddGroupHom'ₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -328,7 +328,7 @@ theorem SurjectiveOnWith.surjOn {f : NormedAddGroupHom V₁ V₂} {K : AddSubgro
#print NormedAddGroupHom.opNorm /-
/-- The operator norm of a seminormed group homomorphism is the inf of all its bounds. -/
def opNorm (f : NormedAddGroupHom V₁ V₂) :=
- infₛ { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ }
+ sInf { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ }
#align normed_add_group_hom.op_norm NormedAddGroupHom.opNorm
-/
@@ -340,11 +340,11 @@ instance hasOpNorm : Norm (NormedAddGroupHom V₁ V₂) :=
/- warning: normed_add_group_hom.norm_def -> NormedAddGroupHom.norm_def is a dubious translation:
lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (InfSet.infₛ.{0} Real Real.hasInf (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) c) (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) c (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))))))
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (InfSet.sInf.{0} Real Real.hasInf (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) c) (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) c (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))))))
but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{1} Real (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) (InfSet.infₛ.{0} Real Real.instInfSetReal (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) c) (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) c (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))))))
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{1} Real (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) (InfSet.sInf.{0} Real Real.instInfSetReal (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) c) (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) c (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))))))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_def NormedAddGroupHom.norm_defₓ'. -/
-theorem norm_def : ‖f‖ = infₛ { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } :=
+theorem norm_def : ‖f‖ = sInf { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } :=
rfl
#align normed_add_group_hom.norm_def NormedAddGroupHom.norm_def
@@ -380,7 +380,7 @@ but is expected to have type
forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f)
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_nonneg NormedAddGroupHom.opNorm_nonnegₓ'. -/
theorem opNorm_nonneg : 0 ≤ ‖f‖ :=
- le_cinfₛ bounds_nonempty fun _ ⟨hx, _⟩ => hx
+ le_csInf bounds_nonempty fun _ ⟨hx, _⟩ => hx
#align normed_add_group_hom.op_norm_nonneg NormedAddGroupHom.opNorm_nonneg
/- warning: normed_add_group_hom.le_op_norm -> NormedAddGroupHom.le_opNorm is a dubious translation:
@@ -399,7 +399,7 @@ theorem le_opNorm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ :=
have hlt : 0 < ‖x‖ := lt_of_le_of_ne (norm_nonneg x) (Ne.symm h)
exact
(div_le_iff hlt).mp
- (le_cinfₛ bounds_nonempty fun c ⟨_, hc⟩ => (div_le_iff hlt).mpr <| by apply hc)
+ (le_csInf bounds_nonempty fun c ⟨_, hc⟩ => (div_le_iff hlt).mpr <| by apply hc)
#align normed_add_group_hom.le_op_norm NormedAddGroupHom.le_opNorm
/- warning: normed_add_group_hom.le_op_norm_of_le -> NormedAddGroupHom.le_opNorm_of_le is a dubious translation:
@@ -475,7 +475,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_le_bound NormedAddGroupHom.opNorm_le_boundₓ'. -/
/-- If one controls the norm of every `f x`, then one controls the norm of `f`. -/
theorem opNorm_le_bound {M : ℝ} (hMp : 0 ≤ M) (hM : ∀ x, ‖f x‖ ≤ M * ‖x‖) : ‖f‖ ≤ M :=
- cinfₛ_le bounds_bddBelow ⟨hMp, hM⟩
+ csInf_le bounds_bddBelow ⟨hMp, hM⟩
#align normed_add_group_hom.op_norm_le_bound NormedAddGroupHom.opNorm_le_bound
/- warning: normed_add_group_hom.op_norm_eq_of_bounds -> NormedAddGroupHom.opNorm_eq_of_bounds is a dubious translation:
@@ -487,7 +487,7 @@ Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.o
theorem opNorm_eq_of_bounds {M : ℝ} (M_nonneg : 0 ≤ M) (h_above : ∀ x, ‖f x‖ ≤ M * ‖x‖)
(h_below : ∀ N ≥ 0, (∀ x, ‖f x‖ ≤ N * ‖x‖) → M ≤ N) : ‖f‖ = M :=
le_antisymm (f.opNorm_le_bound M_nonneg h_above)
- ((le_cinfₛ_iff NormedAddGroupHom.bounds_bddBelow ⟨M, M_nonneg, h_above⟩).mpr
+ ((le_csInf_iff NormedAddGroupHom.bounds_bddBelow ⟨M, M_nonneg, h_above⟩).mpr
fun N ⟨N_nonneg, hN⟩ => h_below N N_nonneg hN)
#align normed_add_group_hom.op_norm_eq_of_bounds NormedAddGroupHom.opNorm_eq_of_bounds
@@ -623,7 +623,7 @@ Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.o
/-- The norm of the `0` operator is `0`. -/
theorem opNorm_zero : ‖(0 : NormedAddGroupHom V₁ V₂)‖ = 0 :=
le_antisymm
- (cinfₛ_le bounds_bddBelow
+ (csInf_le bounds_bddBelow
⟨ge_of_eq rfl, fun _ =>
le_of_eq
(by
mathlib commit https://github.com/leanprover-community/mathlib/commit/da3fc4a33ff6bc75f077f691dc94c217b8d41559
@@ -412,15 +412,15 @@ theorem le_opNorm_of_le {c : ℝ} {x} (h : ‖x‖ ≤ c) : ‖f x‖ ≤ ‖f
le_trans (f.le_opNorm x) (mul_le_mul_of_nonneg_left h f.opNorm_nonneg)
#align normed_add_group_hom.le_op_norm_of_le NormedAddGroupHom.le_opNorm_of_le
-/- warning: normed_add_group_hom.le_of_op_norm_le -> NormedAddGroupHom.le_of_op_norm_le is a dubious translation:
+/- warning: normed_add_group_hom.le_of_op_norm_le -> NormedAddGroupHom.le_of_opNorm_le is a dubious translation:
lean 3 declaration is
forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {c : Real}, (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) c) -> (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) c (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x)))
but is expected to have type
forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) {c : Real}, (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) c) -> (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) c (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x)))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.le_of_op_norm_le NormedAddGroupHom.le_of_op_norm_leₓ'. -/
-theorem le_of_op_norm_le {c : ℝ} (h : ‖f‖ ≤ c) (x : V₁) : ‖f x‖ ≤ c * ‖x‖ :=
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.le_of_op_norm_le NormedAddGroupHom.le_of_opNorm_leₓ'. -/
+theorem le_of_opNorm_le {c : ℝ} (h : ‖f‖ ≤ c) (x : V₁) : ‖f x‖ ≤ c * ‖x‖ :=
(f.le_opNorm x).trans (mul_le_mul_of_nonneg_right h (norm_nonneg x))
-#align normed_add_group_hom.le_of_op_norm_le NormedAddGroupHom.le_of_op_norm_le
+#align normed_add_group_hom.le_of_op_norm_le NormedAddGroupHom.le_of_opNorm_le
/- warning: normed_add_group_hom.lipschitz -> NormedAddGroupHom.lipschitz is a dubious translation:
lean 3 declaration is
@@ -821,8 +821,8 @@ theorem sub_apply (f g : NormedAddGroupHom V₁ V₂) (v : V₁) :
section SMul
variable {R R' : Type _} [MonoidWithZero R] [DistribMulAction R V₂] [PseudoMetricSpace R]
- [BoundedSmul R V₂] [MonoidWithZero R'] [DistribMulAction R' V₂] [PseudoMetricSpace R']
- [BoundedSmul R' V₂]
+ [BoundedSMul R V₂] [MonoidWithZero R'] [DistribMulAction R' V₂] [PseudoMetricSpace R']
+ [BoundedSMul R' V₂]
instance : SMul R (NormedAddGroupHom V₁ V₂)
where smul r f :=
@@ -840,9 +840,9 @@ instance : SMul R (NormedAddGroupHom V₁ V₂)
/- warning: normed_add_group_hom.coe_smul -> NormedAddGroupHom.coe_smul is a dubious translation:
lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u3}} [_inst_5 : MonoidWithZero.{u3} R] [_inst_6 : DistribMulAction.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u3} R] [_inst_8 : BoundedSmul.{u3, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_5))) (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{succ (max u1 u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{u3, max u1 u2} R (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasSmul.{u1, u2, u3} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8) r f)) (SMul.smul.{u3, max u1 u2} R (V₁ -> V₂) (Function.hasSMul.{u1, u3, u2} V₁ R V₂ (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u3}} [_inst_5 : MonoidWithZero.{u3} R] [_inst_6 : DistribMulAction.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u3} R] [_inst_8 : BoundedSMul.{u3, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_5))) (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{succ (max u1 u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{u3, max u1 u2} R (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasSmul.{u1, u2, u3} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8) r f)) (SMul.smul.{u3, max u1 u2} R (V₁ -> V₂) (Function.hasSMul.{u1, u3, u2} V₁ R V₂ (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
but is expected to have type
- forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u1}} [_inst_5 : MonoidWithZero.{u1} R] [_inst_6 : DistribMulAction.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u1} R] [_inst_8 : BoundedSmul.{u1, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MonoidWithZero.toZero.{u1} R _inst_5) (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u3) (succ u2)} (V₁ -> V₂) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (instHSMul.{u1, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.smul.{u3, u2, u1} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8)) r f)) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} R (V₁ -> V₂) (V₁ -> V₂) (instHSMul.{u1, max u3 u2} R (V₁ -> V₂) (Pi.instSMul.{u3, u2, u1} V₁ R (fun (a : V₁) => V₂) (fun (i : V₁) => SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6))))) r (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) f))
+ forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u1}} [_inst_5 : MonoidWithZero.{u1} R] [_inst_6 : DistribMulAction.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u1} R] [_inst_8 : BoundedSMul.{u1, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MonoidWithZero.toZero.{u1} R _inst_5) (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u3) (succ u2)} (V₁ -> V₂) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (instHSMul.{u1, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.smul.{u3, u2, u1} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8)) r f)) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} R (V₁ -> V₂) (V₁ -> V₂) (instHSMul.{u1, max u3 u2} R (V₁ -> V₂) (Pi.instSMul.{u3, u2, u1} V₁ R (fun (a : V₁) => V₂) (fun (i : V₁) => SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6))))) r (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) f))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_smul NormedAddGroupHom.coe_smulₓ'. -/
@[simp]
theorem coe_smul (r : R) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • f :=
@@ -851,9 +851,9 @@ theorem coe_smul (r : R) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r
/- warning: normed_add_group_hom.smul_apply -> NormedAddGroupHom.smul_apply is a dubious translation:
lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u3}} [_inst_5 : MonoidWithZero.{u3} R] [_inst_6 : DistribMulAction.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u3} R] [_inst_8 : BoundedSmul.{u3, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_5))) (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{u3, max u1 u2} R (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasSmul.{u1, u2, u3} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8) r f) v) (SMul.smul.{u3, u2} R V₂ (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u3}} [_inst_5 : MonoidWithZero.{u3} R] [_inst_6 : DistribMulAction.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u3} R] [_inst_8 : BoundedSMul.{u3, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_5))) (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{u3, max u1 u2} R (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasSmul.{u1, u2, u3} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8) r f) v) (SMul.smul.{u3, u2} R V₂ (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
but is expected to have type
- forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u1}} [_inst_5 : MonoidWithZero.{u1} R] [_inst_6 : DistribMulAction.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u1} R] [_inst_8 : BoundedSmul.{u1, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MonoidWithZero.toZero.{u1} R _inst_5) (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (instHSMul.{u1, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.smul.{u3, u2, u1} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8)) r f) v) (HSMul.hSMul.{u1, u2, u2} R V₂ V₂ (instHSMul.{u1, u2} R V₂ (SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))) r (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) f v))
+ forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u1}} [_inst_5 : MonoidWithZero.{u1} R] [_inst_6 : DistribMulAction.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u1} R] [_inst_8 : BoundedSMul.{u1, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MonoidWithZero.toZero.{u1} R _inst_5) (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (instHSMul.{u1, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.smul.{u3, u2, u1} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8)) r f) v) (HSMul.hSMul.{u1, u2, u2} R V₂ V₂ (instHSMul.{u1, u2} R V₂ (SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))) r (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) f v))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.smul_apply NormedAddGroupHom.smul_applyₓ'. -/
@[simp]
theorem smul_apply (r : R) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r • f) v = r • f v :=
@@ -872,8 +872,8 @@ instance [DistribMulAction Rᵐᵒᵖ V₂] [IsCentralScalar R V₂] :
end SMul
-#print NormedAddGroupHom.natSMul /-
-instance natSMul : SMul ℕ (NormedAddGroupHom V₁ V₂)
+#print NormedAddGroupHom.nsmul /-
+instance nsmul : SMul ℕ (NormedAddGroupHom V₁ V₂)
where smul n f :=
{ toFun := n • f
map_add' := (n • f.toAddMonoidHom).map_add'
@@ -882,14 +882,14 @@ instance natSMul : SMul ℕ (NormedAddGroupHom V₁ V₂)
⟨n • b, fun v => by
rw [Pi.smul_apply, nsmul_eq_mul, mul_assoc]
exact (norm_nsmul_le _ _).trans (mul_le_mul_of_nonneg_left (hb _) (Nat.cast_nonneg _))⟩ }
-#align normed_add_group_hom.has_nat_scalar NormedAddGroupHom.natSMul
+#align normed_add_group_hom.has_nat_scalar NormedAddGroupHom.nsmul
-/
/- warning: normed_add_group_hom.coe_nsmul -> NormedAddGroupHom.coe_nsmul is a dubious translation:
lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Nat) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{succ (max u1 u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Nat (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.natSMul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f)) (SMul.smul.{0, max u1 u2} Nat (V₁ -> V₂) (Function.hasSMul.{u1, 0, u2} V₁ Nat V₂ (AddMonoid.SMul.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Nat) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{succ (max u1 u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Nat (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.nsmul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f)) (SMul.smul.{0, max u1 u2} Nat (V₁ -> V₂) (Function.hasSMul.{u1, 0, u2} V₁ Nat V₂ (AddMonoid.SMul.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Nat) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.natSMul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f)) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Nat (V₁ -> V₂) (V₁ -> V₂) (instHSMul.{0, max u2 u1} Nat (V₁ -> V₂) (AddMonoid.SMul.{max u2 u1} (V₁ -> V₂) (Pi.addMonoid.{u2, u1} V₁ (fun (a : V₁) => V₂) (fun (i : V₁) => SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f))
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Nat) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.nsmul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f)) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Nat (V₁ -> V₂) (V₁ -> V₂) (instHSMul.{0, max u2 u1} Nat (V₁ -> V₂) (AddMonoid.SMul.{max u2 u1} (V₁ -> V₂) (Pi.addMonoid.{u2, u1} V₁ (fun (a : V₁) => V₂) (fun (i : V₁) => SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_nsmul NormedAddGroupHom.coe_nsmulₓ'. -/
@[simp]
theorem coe_nsmul (r : ℕ) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • f :=
@@ -898,17 +898,17 @@ theorem coe_nsmul (r : ℕ) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r
/- warning: normed_add_group_hom.nsmul_apply -> NormedAddGroupHom.nsmul_apply is a dubious translation:
lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Nat) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Nat (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.natSMul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f) v) (SMul.smul.{0, u2} Nat V₂ (AddMonoid.SMul.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Nat) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Nat (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.nsmul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f) v) (SMul.smul.{0, u2} Nat V₂ (AddMonoid.SMul.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Nat) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.natSMul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f) v) (HSMul.hSMul.{0, u1, u1} Nat V₂ V₂ (instHSMul.{0, u1} Nat V₂ (AddMonoid.SMul.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v))
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Nat) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.nsmul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f) v) (HSMul.hSMul.{0, u1, u1} Nat V₂ V₂ (instHSMul.{0, u1} Nat V₂ (AddMonoid.SMul.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.nsmul_apply NormedAddGroupHom.nsmul_applyₓ'. -/
@[simp]
theorem nsmul_apply (r : ℕ) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r • f) v = r • f v :=
rfl
#align normed_add_group_hom.nsmul_apply NormedAddGroupHom.nsmul_apply
-#print NormedAddGroupHom.intSMul /-
-instance intSMul : SMul ℤ (NormedAddGroupHom V₁ V₂)
+#print NormedAddGroupHom.zsmul /-
+instance zsmul : SMul ℤ (NormedAddGroupHom V₁ V₂)
where smul z f :=
{ toFun := z • f
map_add' := (z • f.toAddMonoidHom).map_add'
@@ -917,14 +917,14 @@ instance intSMul : SMul ℤ (NormedAddGroupHom V₁ V₂)
⟨‖z‖ • b, fun v => by
rw [Pi.smul_apply, smul_eq_mul, mul_assoc]
exact (norm_zsmul_le _ _).trans (mul_le_mul_of_nonneg_left (hb _) <| norm_nonneg _)⟩ }
-#align normed_add_group_hom.has_int_scalar NormedAddGroupHom.intSMul
+#align normed_add_group_hom.has_int_scalar NormedAddGroupHom.zsmul
-/
/- warning: normed_add_group_hom.coe_zsmul -> NormedAddGroupHom.coe_zsmul is a dubious translation:
lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Int) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{succ (max u1 u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Int (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.intSMul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f)) (SMul.smul.{0, max u1 u2} Int (V₁ -> V₂) (Function.hasSMul.{u1, 0, u2} V₁ Int V₂ (SubNegMonoid.SMulInt.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Int) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{succ (max u1 u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Int (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zsmul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f)) (SMul.smul.{0, max u1 u2} Int (V₁ -> V₂) (Function.hasSMul.{u1, 0, u2} V₁ Int V₂ (SubNegMonoid.SMulInt.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Int) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.intSMul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f)) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Int (V₁ -> V₂) (V₁ -> V₂) (instHSMul.{0, max u2 u1} Int (V₁ -> V₂) (SubNegMonoid.SMulInt.{max u2 u1} (V₁ -> V₂) (Pi.subNegMonoid.{u2, u1} V₁ (fun (a : V₁) => V₂) (fun (i : V₁) => AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f))
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Int) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zsmul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f)) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Int (V₁ -> V₂) (V₁ -> V₂) (instHSMul.{0, max u2 u1} Int (V₁ -> V₂) (SubNegMonoid.SMulInt.{max u2 u1} (V₁ -> V₂) (Pi.subNegMonoid.{u2, u1} V₁ (fun (a : V₁) => V₂) (fun (i : V₁) => AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_zsmul NormedAddGroupHom.coe_zsmulₓ'. -/
@[simp]
theorem coe_zsmul (r : ℤ) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • f :=
@@ -933,9 +933,9 @@ theorem coe_zsmul (r : ℤ) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r
/- warning: normed_add_group_hom.zsmul_apply -> NormedAddGroupHom.zsmul_apply is a dubious translation:
lean 3 declaration is
- forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Int) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Int (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.intSMul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f) v) (SMul.smul.{0, u2} Int V₂ (SubNegMonoid.SMulInt.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Int) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Int (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zsmul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f) v) (SMul.smul.{0, u2} Int V₂ (SubNegMonoid.SMulInt.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Int) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.intSMul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f) v) (HSMul.hSMul.{0, u1, u1} Int V₂ V₂ (instHSMul.{0, u1} Int V₂ (SubNegMonoid.SMulInt.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v))
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Int) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zsmul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f) v) (HSMul.hSMul.{0, u1, u1} Int V₂ V₂ (instHSMul.{0, u1} Int V₂ (SubNegMonoid.SMulInt.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.zsmul_apply NormedAddGroupHom.zsmul_applyₓ'. -/
@[simp]
theorem zsmul_apply (r : ℤ) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r • f) v = r • f v :=
@@ -1014,10 +1014,10 @@ theorem sum_apply {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V
instance {R : Type _} [MonoidWithZero R] [DistribMulAction R V₂] [PseudoMetricSpace R]
- [BoundedSmul R V₂] : DistribMulAction R (NormedAddGroupHom V₁ V₂) :=
+ [BoundedSMul R V₂] : DistribMulAction R (NormedAddGroupHom V₁ V₂) :=
Function.Injective.distribMulAction coeAddHom coe_injective coe_smul
-instance {R : Type _} [Semiring R] [Module R V₂] [PseudoMetricSpace R] [BoundedSmul R V₂] :
+instance {R : Type _} [Semiring R] [Module R V₂] [PseudoMetricSpace R] [BoundedSMul R V₂] :
Module R (NormedAddGroupHom V₁ V₂) :=
Function.Injective.module _ coeAddHom coe_injective coe_smul
mathlib commit https://github.com/leanprover-community/mathlib/commit/2196ab363eb097c008d4497125e0dde23fb36db2
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin
! This file was ported from Lean 3 source module analysis.normed.group.hom
-! leanprover-community/mathlib commit 3c4225288b55380a90df078ebae0991080b12393
+! leanprover-community/mathlib commit 69c6a5a12d8a2b159f20933e60115a4f2de62b58
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.Analysis.Normed.Group.Basic
/-!
# Normed groups homomorphisms
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file gathers definitions and elementary constructions about bounded group homomorphisms
between normed (abelian) groups (abbreviated to "normed group homs").
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -52,7 +52,7 @@ variable {V W : Type _} [SeminormedAddCommGroup V] [SeminormedAddCommGroup W]
lean 3 declaration is
forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : Real), (forall (v : V), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} W (SeminormedAddCommGroup.toHasNorm.{u2} W _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (fun (_x : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) => V -> W) (AddMonoidHom.hasCoeToFun.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) v))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
but is expected to have type
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : Real), (forall (v : V), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) v) (SeminormedAddCommGroup.toNorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) v) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) _x) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddZeroClass.toAdd.{u1} V (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))))) (AddZeroClass.toAdd.{u2} W (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2))))) (AddMonoidHom.addMonoidHomClass.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u1} V (SeminormedAddCommGroup.toNorm.{u1} V _inst_1) v))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : Real), (forall (v : V), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) v) (SeminormedAddCommGroup.toNorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) v) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) _x) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddZeroClass.toAdd.{u1} V (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))))) (AddZeroClass.toAdd.{u2} W (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2))))) (AddMonoidHom.addMonoidHomClass.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u1} V (SeminormedAddCommGroup.toNorm.{u1} V _inst_1) v))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom AddMonoidHom.mkNormedAddGroupHomₓ'. -/
/-- Associate to a group homomorphism a bounded group homomorphism under a norm control condition.
@@ -65,7 +65,7 @@ def mkNormedAddGroupHom (f : V →+ W) (C : ℝ) (h : ∀ v, ‖f v‖ ≤ C *
lean 3 declaration is
forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : NNReal), (forall (x : V), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} W (SeminormedAddGroup.toNNNorm.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (fun (_x : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) => V -> W) (AddMonoidHom.hasCoeToFun.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) C (NNNorm.nnnorm.{u1} V (SeminormedAddGroup.toNNNorm.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)) x))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
but is expected to have type
- forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : NNReal), (forall (x : V), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) x) (SeminormedAddGroup.toNNNorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) x) (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) x) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) _x) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddZeroClass.toAdd.{u1} V (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))))) (AddZeroClass.toAdd.{u2} W (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2))))) (AddMonoidHom.addMonoidHomClass.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) C (NNNorm.nnnorm.{u1} V (SeminormedAddGroup.toNNNorm.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)) x))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : NNReal), (forall (x : V), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) x) (SeminormedAddGroup.toNNNorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) x) (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) x) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V) => W) _x) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddZeroClass.toAdd.{u1} V (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))))) (AddZeroClass.toAdd.{u2} W (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2))))) (AddMonoidHom.addMonoidHomClass.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) C (NNNorm.nnnorm.{u1} V (SeminormedAddGroup.toNNNorm.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)) x))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom' AddMonoidHom.mkNormedAddGroupHom'ₓ'. -/
/-- Associate to a group homomorphism a bounded group homomorphism under a norm control condition.
@@ -176,7 +176,7 @@ theorem coe_mk (f) (h₁) (h₂) (h₃) : ⇑(⟨f, h₁, h₂, h₃⟩ : Normed
lean 3 declaration is
forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (C : Real) (hC : forall (v : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) v))), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C hC)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f)
but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (C : Real) (hC : forall (v : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) v) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) v) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) v))), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C hC)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f)
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (C : Real) (hC : forall (v : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) v) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) v) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) v))), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C hC)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f)
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_mk_normed_add_group_hom NormedAddGroupHom.coe_mkNormedAddGroupHomₓ'. -/
@[simp]
theorem coe_mkNormedAddGroupHom (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAddGroupHom C hC) = f :=
@@ -187,7 +187,7 @@ theorem coe_mkNormedAddGroupHom (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAd
lean 3 declaration is
forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (C : NNReal) (hC : forall (x : V₁), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} V₂ (SeminormedAddGroup.toNNNorm.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) C (NNNorm.nnnorm.{u1} V₁ (SeminormedAddGroup.toNNNorm.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)) x))), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom'.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C hC)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f)
but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (C : NNReal) (hC : forall (x : V₁), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) (SeminormedAddGroup.toNNNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) C (NNNorm.nnnorm.{u2} V₁ (SeminormedAddGroup.toNNNorm.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)) x))), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (AddMonoidHom.mkNormedAddGroupHom'.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C hC)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f)
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (C : NNReal) (hC : forall (x : V₁), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddGroup.toNNNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) C (NNNorm.nnnorm.{u2} V₁ (SeminormedAddGroup.toNNNorm.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)) x))), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (AddMonoidHom.mkNormedAddGroupHom'.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C hC)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f)
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_mk_normed_add_group_hom' NormedAddGroupHom.coe_mkNormedAddGroupHom'ₓ'. -/
@[simp]
theorem coe_mkNormedAddGroupHom' (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAddGroupHom' C hC) = f :=
@@ -205,7 +205,7 @@ def toAddMonoidHom (f : NormedAddGroupHom V₁ V₂) : V₁ →+ V₂ :=
lean 3 declaration is
forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (NormedAddGroupHom.toAddMonoidHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : V₁), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) (NormedAddGroupHom.toAddMonoidHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : V₁), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) (NormedAddGroupHom.toAddMonoidHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_to_add_monoid_hom NormedAddGroupHom.coe_toAddMonoidHomₓ'. -/
@[simp]
theorem coe_toAddMonoidHom : ⇑f.toAddMonoidHom = f :=
@@ -503,7 +503,7 @@ theorem opNorm_le_of_lipschitz {f : NormedAddGroupHom V₁ V₂} {K : ℝ≥0} (
lean 3 declaration is
forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C h)) C)
but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) C)
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) C)
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mk_normed_add_group_hom_norm_le NormedAddGroupHom.mkNormedAddGroupHom_norm_leₓ'. -/
/-- If a bounded group homomorphism map is constructed from a group homomorphism via the constructor
`mk_normed_add_group_hom`, then its norm is bounded by the bound given to the constructor if it is
@@ -517,7 +517,7 @@ theorem mkNormedAddGroupHom_norm_le (f : V₁ →+ V₂) {C : ℝ} (hC : 0 ≤ C
lean 3 declaration is
forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C h)) (LinearOrder.max.{0} Real Real.linearOrder C (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) (Max.max.{0} Real (LinearOrderedRing.toMax.{0} Real Real.instLinearOrderedRingReal) C (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) (Max.max.{0} Real (LinearOrderedRing.toMax.{0} Real Real.instLinearOrderedRingReal) C (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mk_normed_add_group_hom_norm_le' NormedAddGroupHom.mkNormedAddGroupHom_norm_le'ₓ'. -/
/-- If a bounded group homomorphism map is constructed from a group homomorphism
via the constructor `mk_normed_add_group_hom`, then its norm is bounded by the bound
@@ -532,7 +532,7 @@ theorem mkNormedAddGroupHom_norm_le' (f : V₁ →+ V₂) {C : ℝ} (h : ∀ x,
lean 3 declaration is
forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C h)) C)
but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) C)
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) C)
Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom_norm_le AddMonoidHom.mkNormedAddGroupHom_norm_leₓ'. -/
alias mk_normed_add_group_hom_norm_le ← _root_.add_monoid_hom.mk_normed_add_group_hom_norm_le
#align add_monoid_hom.mk_normed_add_group_hom_norm_le AddMonoidHom.mkNormedAddGroupHom_norm_le
@@ -541,7 +541,7 @@ alias mk_normed_add_group_hom_norm_le ← _root_.add_monoid_hom.mk_normed_add_gr
lean 3 declaration is
forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C h)) (LinearOrder.max.{0} Real Real.linearOrder C (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
but is expected to have type
- forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) (Max.max.{0} Real (LinearOrderedRing.toMax.{0} Real Real.instLinearOrderedRingReal) C (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) (Max.max.{0} Real (LinearOrderedRing.toMax.{0} Real Real.instLinearOrderedRingReal) C (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom_norm_le' AddMonoidHom.mkNormedAddGroupHom_norm_le'ₓ'. -/
alias mk_normed_add_group_hom_norm_le' ← _root_.add_monoid_hom.mk_normed_add_group_hom_norm_le'
#align add_monoid_hom.mk_normed_add_group_hom_norm_le' AddMonoidHom.mkNormedAddGroupHom_norm_le'
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -392,7 +392,7 @@ theorem le_opNorm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ :=
obtain ⟨C, Cpos, hC⟩ := f.bound
replace hC := hC x
by_cases h : ‖x‖ = 0
- · rwa [h, mul_zero] at hC⊢
+ · rwa [h, MulZeroClass.mul_zero] at hC⊢
have hlt : 0 < ‖x‖ := lt_of_le_of_ne (norm_nonneg x) (Ne.symm h)
exact
(div_le_iff hlt).mp
@@ -624,7 +624,7 @@ theorem opNorm_zero : ‖(0 : NormedAddGroupHom V₁ V₂)‖ = 0 :=
⟨ge_of_eq rfl, fun _ =>
le_of_eq
(by
- rw [zero_mul]
+ rw [MulZeroClass.zero_mul]
exact norm_zero)⟩)
(opNorm_nonneg _)
#align normed_add_group_hom.op_norm_zero NormedAddGroupHom.opNorm_zero
@@ -644,7 +644,7 @@ theorem opNorm_zero_iff {V₁ V₂ : Type _} [NormedAddCommGroup V₁] [NormedAd
norm_le_zero_iff.1
(calc
_ ≤ ‖f‖ * ‖x‖ := le_opNorm _ _
- _ = _ := by rw [hn, zero_mul]
+ _ = _ := by rw [hn, MulZeroClass.zero_mul]
))
fun hf => by rw [hf, op_norm_zero]
#align normed_add_group_hom.op_norm_zero_iff NormedAddGroupHom.opNorm_zero_iff
mathlib commit https://github.com/leanprover-community/mathlib/commit/ddec54a71a0dd025c05445d467f1a2b7d586a3ba
@@ -33,6 +33,7 @@ noncomputable section
open NNReal BigOperators
+#print NormedAddGroupHom /-
/-- A morphism of seminormed abelian groups is a bounded group homomorphism. -/
structure NormedAddGroupHom (V W : Type _) [SeminormedAddCommGroup V]
[SeminormedAddCommGroup W] where
@@ -40,12 +41,19 @@ structure NormedAddGroupHom (V W : Type _) [SeminormedAddCommGroup V]
map_add' : ∀ v₁ v₂, to_fun (v₁ + v₂) = to_fun v₁ + to_fun v₂
bound' : ∃ C, ∀ v, ‖to_fun v‖ ≤ C * ‖v‖
#align normed_add_group_hom NormedAddGroupHom
+-/
namespace AddMonoidHom
variable {V W : Type _} [SeminormedAddCommGroup V] [SeminormedAddCommGroup W]
{f g : NormedAddGroupHom V W}
+/- warning: add_monoid_hom.mk_normed_add_group_hom -> AddMonoidHom.mkNormedAddGroupHom is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : Real), (forall (v : V), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} W (SeminormedAddCommGroup.toHasNorm.{u2} W _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (fun (_x : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) => V -> W) (AddMonoidHom.hasCoeToFun.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) v))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
+but is expected to have type
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : Real), (forall (v : V), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) v) (SeminormedAddCommGroup.toNorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) v) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) _x) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddZeroClass.toAdd.{u1} V (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))))) (AddZeroClass.toAdd.{u2} W (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2))))) (AddMonoidHom.addMonoidHomClass.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u1} V (SeminormedAddCommGroup.toNorm.{u1} V _inst_1) v))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
+Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom AddMonoidHom.mkNormedAddGroupHomₓ'. -/
/-- Associate to a group homomorphism a bounded group homomorphism under a norm control condition.
See `add_monoid_hom.mk_normed_add_group_hom'` for a version that uses `ℝ≥0` for the bound. -/
@@ -53,6 +61,12 @@ def mkNormedAddGroupHom (f : V →+ W) (C : ℝ) (h : ∀ v, ‖f v‖ ≤ C *
{ f with bound' := ⟨C, h⟩ }
#align add_monoid_hom.mk_normed_add_group_hom AddMonoidHom.mkNormedAddGroupHom
+/- warning: add_monoid_hom.mk_normed_add_group_hom' -> AddMonoidHom.mkNormedAddGroupHom' is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : NNReal), (forall (x : V), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} W (SeminormedAddGroup.toNNNorm.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (fun (_x : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) => V -> W) (AddMonoidHom.hasCoeToFun.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) C (NNNorm.nnnorm.{u1} V (SeminormedAddGroup.toNNNorm.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)) x))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
+but is expected to have type
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (C : NNReal), (forall (x : V), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) x) (SeminormedAddGroup.toNNNorm.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) x) (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) x) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V) => W) _x) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddZeroClass.toAdd.{u1} V (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))))) (AddZeroClass.toAdd.{u2} W (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (AddMonoidHom.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))) V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2))))) (AddMonoidHom.addMonoidHomClass.{u1, u2} V W (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (AddMonoid.toAddZeroClass.{u2} W (SubNegMonoid.toAddMonoid.{u2} W (AddGroup.toSubNegMonoid.{u2} W (SeminormedAddGroup.toAddGroup.{u2} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} W _inst_2)))))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) C (NNNorm.nnnorm.{u1} V (SeminormedAddGroup.toNNNorm.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)) x))) -> (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2)
+Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom' AddMonoidHom.mkNormedAddGroupHom'ₓ'. -/
/-- Associate to a group homomorphism a bounded group homomorphism under a norm control condition.
See `add_monoid_hom.mk_normed_add_group_hom` for a version that uses `ℝ` for the bound. -/
@@ -63,6 +77,12 @@ def mkNormedAddGroupHom' (f : V →+ W) (C : ℝ≥0) (hC : ∀ x, ‖f x‖₊
end AddMonoidHom
+/- warning: exists_pos_bound_of_bound -> exists_pos_bound_of_bound is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] {f : V -> W} (M : Real), (forall (x : V), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} W (SeminormedAddCommGroup.toHasNorm.{u2} W _inst_2) (f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) M (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) x))) -> (Exists.{1} Real (fun (N : Real) => And (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) N) (forall (x : V), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} W (SeminormedAddCommGroup.toHasNorm.{u2} W _inst_2) (f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) N (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) x)))))
+but is expected to have type
+ forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] {f : V -> W} (M : Real), (forall (x : V), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} W (SeminormedAddCommGroup.toNorm.{u1} W _inst_2) (f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) M (Norm.norm.{u2} V (SeminormedAddCommGroup.toNorm.{u2} V _inst_1) x))) -> (Exists.{1} Real (fun (N : Real) => And (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) N) (forall (x : V), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} W (SeminormedAddCommGroup.toNorm.{u1} W _inst_2) (f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) N (Norm.norm.{u2} V (SeminormedAddCommGroup.toNorm.{u2} V _inst_1) x)))))
+Case conversion may be inaccurate. Consider using '#align exists_pos_bound_of_bound exists_pos_bound_of_boundₓ'. -/
theorem exists_pos_bound_of_bound {V W : Type _} [SeminormedAddCommGroup V]
[SeminormedAddCommGroup W] {f : V → W} (M : ℝ) (h : ∀ x, ‖f x‖ ≤ M * ‖x‖) :
∃ N, 0 < N ∧ ∀ x, ‖f x‖ ≤ N * ‖x‖ :=
@@ -85,59 +105,119 @@ instance : CoeFun (NormedAddGroupHom V₁ V₂) fun _ => V₁ → V₂ :=
initialize_simps_projections NormedAddGroupHom (toFun → apply)
+/- warning: normed_add_group_hom.coe_inj -> NormedAddGroupHom.coe_inj is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3}, (Eq.{max (succ u1) (succ u2)} ((fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g)) -> (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) f g)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3}, (Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g)) -> (Eq.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) f g)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_inj NormedAddGroupHom.coe_injₓ'. -/
theorem coe_inj (H : (f : V₁ → V₂) = g) : f = g := by
cases f <;> cases g <;> congr <;> exact funext H
#align normed_add_group_hom.coe_inj NormedAddGroupHom.coe_inj
+#print NormedAddGroupHom.coe_injective /-
theorem coe_injective : @Function.Injective (NormedAddGroupHom V₁ V₂) (V₁ → V₂) coeFn := by
apply coe_inj
#align normed_add_group_hom.coe_injective NormedAddGroupHom.coe_injective
+-/
+/- warning: normed_add_group_hom.coe_inj_iff -> NormedAddGroupHom.coe_inj_iff is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3}, Iff (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) f g) (Eq.{max (succ u1) (succ u2)} ((fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3}, Iff (Eq.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) f g) (Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_inj_iff NormedAddGroupHom.coe_inj_iffₓ'. -/
theorem coe_inj_iff : f = g ↔ (f : V₁ → V₂) = g :=
⟨congr_arg _, coe_inj⟩
#align normed_add_group_hom.coe_inj_iff NormedAddGroupHom.coe_inj_iff
+#print NormedAddGroupHom.ext /-
@[ext]
theorem ext (H : ∀ x, f x = g x) : f = g :=
coe_inj <| funext H
#align normed_add_group_hom.ext NormedAddGroupHom.ext
+-/
+/- warning: normed_add_group_hom.ext_iff -> NormedAddGroupHom.ext_iff is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3}, Iff (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) f g) (forall (x : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g x))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3}, Iff (Eq.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) f g) (forall (x : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g x))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.ext_iff NormedAddGroupHom.ext_iffₓ'. -/
theorem ext_iff : f = g ↔ ∀ x, f x = g x :=
⟨by rintro rfl x <;> rfl, ext⟩
#align normed_add_group_hom.ext_iff NormedAddGroupHom.ext_iff
variable (f g)
+/- warning: normed_add_group_hom.to_fun_eq_coe -> NormedAddGroupHom.toFun_eq_coe is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (NormedAddGroupHom.toFun.{u1, u2} V₁ V₂ _inst_2 _inst_3 f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (NormedAddGroupHom.toFun.{u2, u1} V₁ V₂ _inst_2 _inst_3 f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.to_fun_eq_coe NormedAddGroupHom.toFun_eq_coeₓ'. -/
@[simp]
theorem toFun_eq_coe : f.toFun = f :=
rfl
#align normed_add_group_hom.to_fun_eq_coe NormedAddGroupHom.toFun_eq_coe
+/- warning: normed_add_group_hom.coe_mk -> NormedAddGroupHom.coe_mk is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : V₁ -> V₂) (h₁ : forall (v₁ : V₁) (v₂ : V₁), Eq.{succ u2} V₂ (f (HAdd.hAdd.{u1, u1, u1} V₁ V₁ V₁ (instHAdd.{u1} V₁ (AddZeroClass.toHasAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))))) v₁ v₂)) (HAdd.hAdd.{u2, u2, u2} V₂ V₂ V₂ (instHAdd.{u2} V₂ (AddZeroClass.toHasAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))))) (f v₁) (f v₂))) (h₂ : Real) (h₃ : forall (v : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) h₂ (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) v))), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.mk.{u1, u2} V₁ V₂ _inst_2 _inst_3 f h₁ (Exists.intro.{1} Real (fun (C : Real) => forall (v : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) v))) h₂ h₃))) f
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : V₁ -> V₂) (h₁ : forall (v₁ : V₁) (v₂ : V₁), Eq.{succ u2} V₂ (f (HAdd.hAdd.{u1, u1, u1} V₁ V₁ V₁ (instHAdd.{u1} V₁ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))))) v₁ v₂)) (HAdd.hAdd.{u2, u2, u2} V₂ V₂ V₂ (instHAdd.{u2} V₂ (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))))) (f v₁) (f v₂))) (h₂ : Real) (h₃ : forall (v : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) h₂ (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) v))), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) (NormedAddGroupHom.mk.{u1, u2} V₁ V₂ _inst_2 _inst_3 f h₁ (Exists.intro.{1} Real (fun (C : Real) => forall (v : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) v))) h₂ h₃))) f
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_mk NormedAddGroupHom.coe_mkₓ'. -/
@[simp]
theorem coe_mk (f) (h₁) (h₂) (h₃) : ⇑(⟨f, h₁, h₂, h₃⟩ : NormedAddGroupHom V₁ V₂) = f :=
rfl
#align normed_add_group_hom.coe_mk NormedAddGroupHom.coe_mk
+/- warning: normed_add_group_hom.coe_mk_normed_add_group_hom -> NormedAddGroupHom.coe_mkNormedAddGroupHom is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (C : Real) (hC : forall (v : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) v))), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C hC)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (C : Real) (hC : forall (v : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) v) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) v) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) v))), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C hC)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_mk_normed_add_group_hom NormedAddGroupHom.coe_mkNormedAddGroupHomₓ'. -/
@[simp]
theorem coe_mkNormedAddGroupHom (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAddGroupHom C hC) = f :=
rfl
#align normed_add_group_hom.coe_mk_normed_add_group_hom NormedAddGroupHom.coe_mkNormedAddGroupHom
+/- warning: normed_add_group_hom.coe_mk_normed_add_group_hom' -> NormedAddGroupHom.coe_mkNormedAddGroupHom' is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (C : NNReal) (hC : forall (x : V₁), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} V₂ (SeminormedAddGroup.toNNNorm.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) C (NNNorm.nnnorm.{u1} V₁ (SeminormedAddGroup.toNNNorm.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)) x))), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom'.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C hC)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (C : NNReal) (hC : forall (x : V₁), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) (SeminormedAddGroup.toNNNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) C (NNNorm.nnnorm.{u2} V₁ (SeminormedAddGroup.toNNNorm.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)) x))), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (AddMonoidHom.mkNormedAddGroupHom'.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C hC)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_mk_normed_add_group_hom' NormedAddGroupHom.coe_mkNormedAddGroupHom'ₓ'. -/
@[simp]
theorem coe_mkNormedAddGroupHom' (f : V₁ →+ V₂) (C) (hC) : ⇑(f.mkNormedAddGroupHom' C hC) = f :=
rfl
#align normed_add_group_hom.coe_mk_normed_add_group_hom' NormedAddGroupHom.coe_mkNormedAddGroupHom'
+#print NormedAddGroupHom.toAddMonoidHom /-
/-- The group homomorphism underlying a bounded group homomorphism. -/
def toAddMonoidHom (f : NormedAddGroupHom V₁ V₂) : V₁ →+ V₂ :=
AddMonoidHom.mk' f f.map_add'
#align normed_add_group_hom.to_add_monoid_hom NormedAddGroupHom.toAddMonoidHom
+-/
+/- warning: normed_add_group_hom.coe_to_add_monoid_hom -> NormedAddGroupHom.coe_toAddMonoidHom is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (NormedAddGroupHom.toAddMonoidHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : V₁), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) (NormedAddGroupHom.toAddMonoidHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_to_add_monoid_hom NormedAddGroupHom.coe_toAddMonoidHomₓ'. -/
@[simp]
theorem coe_toAddMonoidHom : ⇑f.toAddMonoidHom = f :=
rfl
#align normed_add_group_hom.coe_to_add_monoid_hom NormedAddGroupHom.coe_toAddMonoidHom
+/- warning: normed_add_group_hom.to_add_monoid_hom_injective -> NormedAddGroupHom.toAddMonoidHom_injective is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂], Function.Injective.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (NormedAddGroupHom.toAddMonoidHom.{u1, u2} V₁ V₂ _inst_2 _inst_3)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂], Function.Injective.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (NormedAddGroupHom.toAddMonoidHom.{u2, u1} V₁ V₂ _inst_2 _inst_3)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.to_add_monoid_hom_injective NormedAddGroupHom.toAddMonoidHom_injectiveₓ'. -/
theorem toAddMonoidHom_injective :
Function.Injective (@NormedAddGroupHom.toAddMonoidHom V₁ V₂ _ _) := fun f g h =>
coe_inj <|
@@ -146,6 +226,12 @@ theorem toAddMonoidHom_injective :
rfl
#align normed_add_group_hom.to_add_monoid_hom_injective NormedAddGroupHom.toAddMonoidHom_injective
+/- warning: normed_add_group_hom.mk_to_add_monoid_hom -> NormedAddGroupHom.mk_toAddMonoidHom is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : V₁ -> V₂) (h₁ : forall (v₁ : V₁) (v₂ : V₁), Eq.{succ u2} V₂ (f (HAdd.hAdd.{u1, u1, u1} V₁ V₁ V₁ (instHAdd.{u1} V₁ (AddZeroClass.toHasAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))))) v₁ v₂)) (HAdd.hAdd.{u2, u2, u2} V₂ V₂ V₂ (instHAdd.{u2} V₂ (AddZeroClass.toHasAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))))) (f v₁) (f v₂))) (h₂ : Exists.{1} Real (fun (C : Real) => forall (v : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) v)))), Eq.{max (succ u2) (succ u1)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (NormedAddGroupHom.toAddMonoidHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 (NormedAddGroupHom.mk.{u1, u2} V₁ V₂ _inst_2 _inst_3 f h₁ h₂)) (AddMonoidHom.mk'.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)) f h₁)
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : V₁ -> V₂) (h₁ : forall (v₁ : V₁) (v₂ : V₁), Eq.{succ u2} V₂ (f (HAdd.hAdd.{u1, u1, u1} V₁ V₁ V₁ (instHAdd.{u1} V₁ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))))) v₁ v₂)) (HAdd.hAdd.{u2, u2, u2} V₂ V₂ V₂ (instHAdd.{u2} V₂ (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))))) (f v₁) (f v₂))) (h₂ : Exists.{1} Real (fun (C : Real) => forall (v : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (f v)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) v)))), Eq.{max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (NormedAddGroupHom.toAddMonoidHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 (NormedAddGroupHom.mk.{u1, u2} V₁ V₂ _inst_2 _inst_3 f h₁ h₂)) (AddMonoidHom.mk'.{u1, u2} V₁ V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)) (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) f h₁)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mk_to_add_monoid_hom NormedAddGroupHom.mk_toAddMonoidHomₓ'. -/
@[simp]
theorem mk_toAddMonoidHom (f) (h₁) (h₂) :
(⟨f, h₁, h₂⟩ : NormedAddGroupHom V₁ V₂).toAddMonoidHom = AddMonoidHom.mk' f h₁ :=
@@ -159,15 +245,28 @@ instance : AddMonoidHomClass (NormedAddGroupHom V₁ V₂) V₁ V₂
map_add f := f.toAddMonoidHom.map_add
map_zero f := f.toAddMonoidHom.map_zero
+/- warning: normed_add_group_hom.bound -> NormedAddGroupHom.bound is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Exists.{1} Real (fun (C : Real) => And (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) C) (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))))
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Exists.{1} Real (fun (C : Real) => And (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) C) (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) x))))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.bound NormedAddGroupHom.boundₓ'. -/
theorem bound : ∃ C, 0 < C ∧ ∀ x, ‖f x‖ ≤ C * ‖x‖ :=
let ⟨C, hC⟩ := f.bound'
exists_pos_bound_of_bound _ hC
#align normed_add_group_hom.bound NormedAddGroupHom.bound
+/- warning: normed_add_group_hom.antilipschitz_of_norm_ge -> NormedAddGroupHom.antilipschitz_of_norm_ge is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {K : NNReal}, (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) NNReal Real (HasLiftT.mk.{1, 1} NNReal Real (CoeTCₓ.coe.{1, 1} NNReal Real (coeBase.{1, 1} NNReal Real NNReal.Real.hasCoe))) K) (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)))) -> (AntilipschitzWith.{u1, u2} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_2)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3)) K (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) {K : NNReal}, (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (NNReal.toReal K) (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)))) -> (AntilipschitzWith.{u2, u1} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₁ _inst_2)) (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₂ _inst_3)) K (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.antilipschitz_of_norm_ge NormedAddGroupHom.antilipschitz_of_norm_geₓ'. -/
theorem antilipschitz_of_norm_ge {K : ℝ≥0} (h : ∀ x, ‖x‖ ≤ K * ‖f x‖) : AntilipschitzWith K f :=
AntilipschitzWith.of_le_mul_dist fun x y => by simpa only [dist_eq_norm, map_sub] using h (x - y)
#align normed_add_group_hom.antilipschitz_of_norm_ge NormedAddGroupHom.antilipschitz_of_norm_ge
+#print NormedAddGroupHom.SurjectiveOnWith /-
/-- A normed group hom is surjective on the subgroup `K` with constant `C` if every element
`x` of `K` has a preimage whose norm is bounded above by `C*‖x‖`. This is a more
abstract version of `f` having a right inverse defined on `K` with operator norm
@@ -175,7 +274,14 @@ at most `C`. -/
def SurjectiveOnWith (f : NormedAddGroupHom V₁ V₂) (K : AddSubgroup V₂) (C : ℝ) : Prop :=
∀ h ∈ K, ∃ g, f g = h ∧ ‖g‖ ≤ C * ‖h‖
#align normed_add_group_hom.surjective_on_with NormedAddGroupHom.SurjectiveOnWith
+-/
+/- warning: normed_add_group_hom.surjective_on_with.mono -> NormedAddGroupHom.SurjectiveOnWith.mono is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {K : AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))} {C : Real} {C' : Real}, (NormedAddGroupHom.SurjectiveOnWith.{u1, u2} V₁ V₂ _inst_2 _inst_3 f K C) -> (LE.le.{0} Real Real.hasLe C C') -> (NormedAddGroupHom.SurjectiveOnWith.{u1, u2} V₁ V₂ _inst_2 _inst_3 f K C')
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {K : AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))} {C : Real} {C' : Real}, (NormedAddGroupHom.SurjectiveOnWith.{u2, u1} V₁ V₂ _inst_2 _inst_3 f K C) -> (LE.le.{0} Real Real.instLEReal C C') -> (NormedAddGroupHom.SurjectiveOnWith.{u2, u1} V₁ V₂ _inst_2 _inst_3 f K C')
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.surjective_on_with.mono NormedAddGroupHom.SurjectiveOnWith.monoₓ'. -/
theorem SurjectiveOnWith.mono {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup V₂} {C C' : ℝ}
(h : f.SurjectiveOnWith K C) (H : C ≤ C') : f.SurjectiveOnWith K C' :=
by
@@ -187,6 +293,12 @@ theorem SurjectiveOnWith.mono {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup
· exact hg.trans ((mul_le_mul_right <| (Ne.symm Hg).le_iff_lt.mp (norm_nonneg _)).mpr H)
#align normed_add_group_hom.surjective_on_with.mono NormedAddGroupHom.SurjectiveOnWith.mono
+/- warning: normed_add_group_hom.surjective_on_with.exists_pos -> NormedAddGroupHom.SurjectiveOnWith.exists_pos is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {K : AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))} {C : Real}, (NormedAddGroupHom.SurjectiveOnWith.{u1, u2} V₁ V₂ _inst_2 _inst_3 f K C) -> (Exists.{1} Real (fun (C' : Real) => Exists.{0} (GT.gt.{0} Real Real.hasLt C' (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (fun (H : GT.gt.{0} Real Real.hasLt C' (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) => NormedAddGroupHom.SurjectiveOnWith.{u1, u2} V₁ V₂ _inst_2 _inst_3 f K C')))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {K : AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))} {C : Real}, (NormedAddGroupHom.SurjectiveOnWith.{u2, u1} V₁ V₂ _inst_2 _inst_3 f K C) -> (Exists.{1} Real (fun (C' : Real) => And (GT.gt.{0} Real Real.instLTReal C' (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (NormedAddGroupHom.SurjectiveOnWith.{u2, u1} V₁ V₂ _inst_2 _inst_3 f K C')))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.surjective_on_with.exists_pos NormedAddGroupHom.SurjectiveOnWith.exists_posₓ'. -/
theorem SurjectiveOnWith.exists_pos {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup V₂} {C : ℝ}
(h : f.SurjectiveOnWith K C) : ∃ C' > 0, f.SurjectiveOnWith K C' :=
by
@@ -196,6 +308,12 @@ theorem SurjectiveOnWith.exists_pos {f : NormedAddGroupHom V₁ V₂} {K : AddSu
linarith [le_abs_self C]
#align normed_add_group_hom.surjective_on_with.exists_pos NormedAddGroupHom.SurjectiveOnWith.exists_pos
+/- warning: normed_add_group_hom.surjective_on_with.surj_on -> NormedAddGroupHom.SurjectiveOnWith.surjOn is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {K : AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))} {C : Real}, (NormedAddGroupHom.SurjectiveOnWith.{u1, u2} V₁ V₂ _inst_2 _inst_3 f K C) -> (Set.SurjOn.{u1, u2} V₁ V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (Set.univ.{u1} V₁) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))) (Set.{u2} V₂) (HasLiftT.mk.{succ u2, succ u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))) (Set.{u2} V₂) (CoeTCₓ.coe.{succ u2, succ u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))) (Set.{u2} V₂) (SetLike.Set.hasCoeT.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) K))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {K : AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))} {C : Real}, (NormedAddGroupHom.SurjectiveOnWith.{u2, u1} V₁ V₂ _inst_2 _inst_3 f K C) -> (Set.SurjOn.{u2, u1} V₁ V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f) (Set.univ.{u2} V₁) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))) K))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.surjective_on_with.surj_on NormedAddGroupHom.SurjectiveOnWith.surjOnₓ'. -/
theorem SurjectiveOnWith.surjOn {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup V₂} {C : ℝ}
(h : f.SurjectiveOnWith K C) : Set.SurjOn f Set.univ K := fun x hx =>
(h x hx).imp fun a ⟨ha, _⟩ => ⟨Set.mem_univ _, ha⟩
@@ -204,19 +322,35 @@ theorem SurjectiveOnWith.surjOn {f : NormedAddGroupHom V₁ V₂} {K : AddSubgro
/-! ### The operator norm -/
+#print NormedAddGroupHom.opNorm /-
/-- The operator norm of a seminormed group homomorphism is the inf of all its bounds. -/
def opNorm (f : NormedAddGroupHom V₁ V₂) :=
infₛ { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ }
#align normed_add_group_hom.op_norm NormedAddGroupHom.opNorm
+-/
+#print NormedAddGroupHom.hasOpNorm /-
instance hasOpNorm : Norm (NormedAddGroupHom V₁ V₂) :=
⟨opNorm⟩
#align normed_add_group_hom.has_op_norm NormedAddGroupHom.hasOpNorm
+-/
+/- warning: normed_add_group_hom.norm_def -> NormedAddGroupHom.norm_def is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (InfSet.infₛ.{0} Real Real.hasInf (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) c) (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) c (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))))))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{1} Real (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) (InfSet.infₛ.{0} Real Real.instInfSetReal (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) c) (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) c (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))))))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_def NormedAddGroupHom.norm_defₓ'. -/
theorem norm_def : ‖f‖ = infₛ { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } :=
rfl
#align normed_add_group_hom.norm_def NormedAddGroupHom.norm_def
+/- warning: normed_add_group_hom.bounds_nonempty -> NormedAddGroupHom.bounds_nonempty is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3}, Exists.{1} Real (fun (c : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) c (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) c) (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) c (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))))))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3}, Exists.{1} Real (fun (c : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) c (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) c) (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) c (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))))))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.bounds_nonempty NormedAddGroupHom.bounds_nonemptyₓ'. -/
-- So that invocations of `le_cInf` make sense: we show that the set of
-- bounds is nonempty and bounded below.
theorem bounds_nonempty {f : NormedAddGroupHom V₁ V₂} :
@@ -225,17 +359,35 @@ theorem bounds_nonempty {f : NormedAddGroupHom V₁ V₂} :
⟨M, le_of_lt hMp, hMb⟩
#align normed_add_group_hom.bounds_nonempty NormedAddGroupHom.bounds_nonempty
+/- warning: normed_add_group_hom.bounds_bdd_below -> NormedAddGroupHom.bounds_bddBelow is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3}, BddBelow.{0} Real Real.preorder (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) c) (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) c (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x)))))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3}, BddBelow.{0} Real Real.instPreorderReal (setOf.{0} Real (fun (c : Real) => And (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) c) (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) c (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x)))))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.bounds_bdd_below NormedAddGroupHom.bounds_bddBelowₓ'. -/
theorem bounds_bddBelow {f : NormedAddGroupHom V₁ V₂} :
BddBelow { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } :=
⟨0, fun _ ⟨hn, _⟩ => hn⟩
#align normed_add_group_hom.bounds_bdd_below NormedAddGroupHom.bounds_bddBelow
-theorem op_norm_nonneg : 0 ≤ ‖f‖ :=
+/- warning: normed_add_group_hom.op_norm_nonneg -> NormedAddGroupHom.opNorm_nonneg is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_nonneg NormedAddGroupHom.opNorm_nonnegₓ'. -/
+theorem opNorm_nonneg : 0 ≤ ‖f‖ :=
le_cinfₛ bounds_nonempty fun _ ⟨hx, _⟩ => hx
-#align normed_add_group_hom.op_norm_nonneg NormedAddGroupHom.op_norm_nonneg
-
+#align normed_add_group_hom.op_norm_nonneg NormedAddGroupHom.opNorm_nonneg
+
+/- warning: normed_add_group_hom.le_op_norm -> NormedAddGroupHom.le_opNorm is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) x))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.le_op_norm NormedAddGroupHom.le_opNormₓ'. -/
/-- The fundamental property of the operator norm: `‖f x‖ ≤ ‖f‖ * ‖x‖`. -/
-theorem le_op_norm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ :=
+theorem le_opNorm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ :=
by
obtain ⟨C, Cpos, hC⟩ := f.bound
replace hC := hC x
@@ -245,74 +397,152 @@ theorem le_op_norm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ :=
exact
(div_le_iff hlt).mp
(le_cinfₛ bounds_nonempty fun c ⟨_, hc⟩ => (div_le_iff hlt).mpr <| by apply hc)
-#align normed_add_group_hom.le_op_norm NormedAddGroupHom.le_op_norm
-
-theorem le_op_norm_of_le {c : ℝ} {x} (h : ‖x‖ ≤ c) : ‖f x‖ ≤ ‖f‖ * c :=
- le_trans (f.le_op_norm x) (mul_le_mul_of_nonneg_left h f.op_norm_nonneg)
-#align normed_add_group_hom.le_op_norm_of_le NormedAddGroupHom.le_op_norm_of_le
-
+#align normed_add_group_hom.le_op_norm NormedAddGroupHom.le_opNorm
+
+/- warning: normed_add_group_hom.le_op_norm_of_le -> NormedAddGroupHom.le_opNorm_of_le is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {c : Real} {x : V₁}, (LE.le.{0} Real Real.hasLe (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x) c) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) c))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) {c : Real} {x : V₁}, (LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x) c) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) c))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.le_op_norm_of_le NormedAddGroupHom.le_opNorm_of_leₓ'. -/
+theorem le_opNorm_of_le {c : ℝ} {x} (h : ‖x‖ ≤ c) : ‖f x‖ ≤ ‖f‖ * c :=
+ le_trans (f.le_opNorm x) (mul_le_mul_of_nonneg_left h f.opNorm_nonneg)
+#align normed_add_group_hom.le_op_norm_of_le NormedAddGroupHom.le_opNorm_of_le
+
+/- warning: normed_add_group_hom.le_of_op_norm_le -> NormedAddGroupHom.le_of_op_norm_le is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {c : Real}, (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) c) -> (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) c (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x)))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) {c : Real}, (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) c) -> (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} V₂ (SeminormedAddCommGroup.toNorm.{u1} V₂ _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) c (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.le_of_op_norm_le NormedAddGroupHom.le_of_op_norm_leₓ'. -/
theorem le_of_op_norm_le {c : ℝ} (h : ‖f‖ ≤ c) (x : V₁) : ‖f x‖ ≤ c * ‖x‖ :=
- (f.le_op_norm x).trans (mul_le_mul_of_nonneg_right h (norm_nonneg x))
+ (f.le_opNorm x).trans (mul_le_mul_of_nonneg_right h (norm_nonneg x))
#align normed_add_group_hom.le_of_op_norm_le NormedAddGroupHom.le_of_op_norm_le
+/- warning: normed_add_group_hom.lipschitz -> NormedAddGroupHom.lipschitz is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), LipschitzWith.{u1, u2} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_2)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3)) (Subtype.mk.{1} Real (fun (r : Real) => LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (NormedAddGroupHom.opNorm_nonneg.{u1, u2} V₁ V₂ _inst_2 _inst_3 f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), LipschitzWith.{u2, u1} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₁ _inst_2)) (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₂ _inst_3)) (Subtype.mk.{1} Real (fun (r : Real) => LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) (NormedAddGroupHom.opNorm_nonneg.{u1, u2} V₁ V₂ _inst_2 _inst_3 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lipschitz NormedAddGroupHom.lipschitzₓ'. -/
/-- continuous linear maps are Lipschitz continuous. -/
-theorem lipschitz : LipschitzWith ⟨‖f‖, op_norm_nonneg f⟩ f :=
+theorem lipschitz : LipschitzWith ⟨‖f‖, opNorm_nonneg f⟩ f :=
LipschitzWith.of_dist_le_mul fun x y =>
by
rw [dist_eq_norm, dist_eq_norm, ← map_sub]
apply le_op_norm
#align normed_add_group_hom.lipschitz NormedAddGroupHom.lipschitz
+/- warning: normed_add_group_hom.uniform_continuous -> NormedAddGroupHom.uniformContinuous is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), UniformContinuous.{u1, u2} V₁ V₂ (PseudoMetricSpace.toUniformSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_2)) (PseudoMetricSpace.toUniformSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), UniformContinuous.{u2, u1} V₁ V₂ (PseudoMetricSpace.toUniformSpace.{u2} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₁ _inst_2)) (PseudoMetricSpace.toUniformSpace.{u1} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₂ _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.uniform_continuous NormedAddGroupHom.uniformContinuousₓ'. -/
protected theorem uniformContinuous (f : NormedAddGroupHom V₁ V₂) : UniformContinuous f :=
f.lipschitz.UniformContinuous
#align normed_add_group_hom.uniform_continuous NormedAddGroupHom.uniformContinuous
+/- warning: normed_add_group_hom.continuous -> NormedAddGroupHom.continuous is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Continuous.{u1, u2} V₁ V₂ (UniformSpace.toTopologicalSpace.{u1} V₁ (PseudoMetricSpace.toUniformSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_2))) (UniformSpace.toTopologicalSpace.{u2} V₂ (PseudoMetricSpace.toUniformSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Continuous.{u2, u1} V₁ V₂ (UniformSpace.toTopologicalSpace.{u2} V₁ (PseudoMetricSpace.toUniformSpace.{u2} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₁ _inst_2))) (UniformSpace.toTopologicalSpace.{u1} V₂ (PseudoMetricSpace.toUniformSpace.{u1} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₂ _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.continuous NormedAddGroupHom.continuousₓ'. -/
@[continuity]
protected theorem continuous (f : NormedAddGroupHom V₁ V₂) : Continuous f :=
f.UniformContinuous.Continuous
#align normed_add_group_hom.continuous NormedAddGroupHom.continuous
-theorem ratio_le_op_norm (x : V₁) : ‖f x‖ / ‖x‖ ≤ ‖f‖ :=
- div_le_of_nonneg_of_le_mul (norm_nonneg _) f.op_norm_nonneg (le_op_norm _ _)
-#align normed_add_group_hom.ratio_le_op_norm NormedAddGroupHom.ratio_le_op_norm
-
+/- warning: normed_add_group_hom.ratio_le_op_norm -> NormedAddGroupHom.ratio_le_opNorm is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (x : V₁), LE.le.{0} Real Real.hasLe (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x)) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (x : V₁), LE.le.{0} Real Real.instLEReal (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) f x)) (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) x)) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.ratio_le_op_norm NormedAddGroupHom.ratio_le_opNormₓ'. -/
+theorem ratio_le_opNorm (x : V₁) : ‖f x‖ / ‖x‖ ≤ ‖f‖ :=
+ div_le_of_nonneg_of_le_mul (norm_nonneg _) f.opNorm_nonneg (le_opNorm _ _)
+#align normed_add_group_hom.ratio_le_op_norm NormedAddGroupHom.ratio_le_opNorm
+
+/- warning: normed_add_group_hom.op_norm_le_bound -> NormedAddGroupHom.opNorm_le_bound is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {M : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) M) -> (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) M (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) M)
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {M : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) M) -> (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) M (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) x))) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) M)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_le_bound NormedAddGroupHom.opNorm_le_boundₓ'. -/
/-- If one controls the norm of every `f x`, then one controls the norm of `f`. -/
-theorem op_norm_le_bound {M : ℝ} (hMp : 0 ≤ M) (hM : ∀ x, ‖f x‖ ≤ M * ‖x‖) : ‖f‖ ≤ M :=
+theorem opNorm_le_bound {M : ℝ} (hMp : 0 ≤ M) (hM : ∀ x, ‖f x‖ ≤ M * ‖x‖) : ‖f‖ ≤ M :=
cinfₛ_le bounds_bddBelow ⟨hMp, hM⟩
-#align normed_add_group_hom.op_norm_le_bound NormedAddGroupHom.op_norm_le_bound
-
-theorem op_norm_eq_of_bounds {M : ℝ} (M_nonneg : 0 ≤ M) (h_above : ∀ x, ‖f x‖ ≤ M * ‖x‖)
+#align normed_add_group_hom.op_norm_le_bound NormedAddGroupHom.opNorm_le_bound
+
+/- warning: normed_add_group_hom.op_norm_eq_of_bounds -> NormedAddGroupHom.opNorm_eq_of_bounds is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {M : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) M) -> (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) M (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))) -> (forall (N : Real), (GE.ge.{0} Real Real.hasLe N (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) N (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))) -> (LE.le.{0} Real Real.hasLe M N)) -> (Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) M)
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) {M : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) M) -> (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) M (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) x))) -> (forall (N : Real), (GE.ge.{0} Real Real.instLEReal N (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toNorm.{u2} V₂ _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) N (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toNorm.{u1} V₁ _inst_2) x))) -> (LE.le.{0} Real Real.instLEReal M N)) -> (Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) M)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_eq_of_bounds NormedAddGroupHom.opNorm_eq_of_boundsₓ'. -/
+theorem opNorm_eq_of_bounds {M : ℝ} (M_nonneg : 0 ≤ M) (h_above : ∀ x, ‖f x‖ ≤ M * ‖x‖)
(h_below : ∀ N ≥ 0, (∀ x, ‖f x‖ ≤ N * ‖x‖) → M ≤ N) : ‖f‖ = M :=
- le_antisymm (f.op_norm_le_bound M_nonneg h_above)
+ le_antisymm (f.opNorm_le_bound M_nonneg h_above)
((le_cinfₛ_iff NormedAddGroupHom.bounds_bddBelow ⟨M, M_nonneg, h_above⟩).mpr
fun N ⟨N_nonneg, hN⟩ => h_below N N_nonneg hN)
-#align normed_add_group_hom.op_norm_eq_of_bounds NormedAddGroupHom.op_norm_eq_of_bounds
-
-theorem op_norm_le_of_lipschitz {f : NormedAddGroupHom V₁ V₂} {K : ℝ≥0} (hf : LipschitzWith K f) :
+#align normed_add_group_hom.op_norm_eq_of_bounds NormedAddGroupHom.opNorm_eq_of_bounds
+
+/- warning: normed_add_group_hom.op_norm_le_of_lipschitz -> NormedAddGroupHom.opNorm_le_of_lipschitz is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {K : NNReal}, (LipschitzWith.{u1, u2} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_2)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3)) K (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) NNReal Real (HasLiftT.mk.{1, 1} NNReal Real (CoeTCₓ.coe.{1, 1} NNReal Real (coeBase.{1, 1} NNReal Real NNReal.Real.hasCoe))) K))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3} {K : NNReal}, (LipschitzWith.{u2, u1} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₁ _inst_2)) (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₂ _inst_3)) K (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f)) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) (NNReal.toReal K))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_le_of_lipschitz NormedAddGroupHom.opNorm_le_of_lipschitzₓ'. -/
+theorem opNorm_le_of_lipschitz {f : NormedAddGroupHom V₁ V₂} {K : ℝ≥0} (hf : LipschitzWith K f) :
‖f‖ ≤ K :=
- f.op_norm_le_bound K.2 fun x => by simpa only [dist_zero_right, map_zero] using hf.dist_le_mul x 0
-#align normed_add_group_hom.op_norm_le_of_lipschitz NormedAddGroupHom.op_norm_le_of_lipschitz
-
+ f.opNorm_le_bound K.2 fun x => by simpa only [dist_zero_right, map_zero] using hf.dist_le_mul x 0
+#align normed_add_group_hom.op_norm_le_of_lipschitz NormedAddGroupHom.opNorm_le_of_lipschitz
+
+/- warning: normed_add_group_hom.mk_normed_add_group_hom_norm_le -> NormedAddGroupHom.mkNormedAddGroupHom_norm_le is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C h)) C)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) C)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mk_normed_add_group_hom_norm_le NormedAddGroupHom.mkNormedAddGroupHom_norm_leₓ'. -/
/-- If a bounded group homomorphism map is constructed from a group homomorphism via the constructor
`mk_normed_add_group_hom`, then its norm is bounded by the bound given to the constructor if it is
nonnegative. -/
theorem mkNormedAddGroupHom_norm_le (f : V₁ →+ V₂) {C : ℝ} (hC : 0 ≤ C) (h : ∀ x, ‖f x‖ ≤ C * ‖x‖) :
‖f.mkNormedAddGroupHom C h‖ ≤ C :=
- op_norm_le_bound _ hC h
+ opNorm_le_bound _ hC h
#align normed_add_group_hom.mk_normed_add_group_hom_norm_le NormedAddGroupHom.mkNormedAddGroupHom_norm_le
+/- warning: normed_add_group_hom.mk_normed_add_group_hom_norm_le' -> NormedAddGroupHom.mkNormedAddGroupHom_norm_le' is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C h)) (LinearOrder.max.{0} Real Real.linearOrder C (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) (Max.max.{0} Real (LinearOrderedRing.toMax.{0} Real Real.instLinearOrderedRingReal) C (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mk_normed_add_group_hom_norm_le' NormedAddGroupHom.mkNormedAddGroupHom_norm_le'ₓ'. -/
/-- If a bounded group homomorphism map is constructed from a group homomorphism
via the constructor `mk_normed_add_group_hom`, then its norm is bounded by the bound
given to the constructor or zero if this bound is negative. -/
theorem mkNormedAddGroupHom_norm_le' (f : V₁ →+ V₂) {C : ℝ} (h : ∀ x, ‖f x‖ ≤ C * ‖x‖) :
‖f.mkNormedAddGroupHom C h‖ ≤ max C 0 :=
- op_norm_le_bound _ (le_max_right _ _) fun x =>
+ opNorm_le_bound _ (le_max_right _ _) fun x =>
(h x).trans <| mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg x)
#align normed_add_group_hom.mk_normed_add_group_hom_norm_le' NormedAddGroupHom.mkNormedAddGroupHom_norm_le'
+/- warning: add_monoid_hom.mk_normed_add_group_hom_norm_le -> AddMonoidHom.mkNormedAddGroupHom_norm_le is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C h)) C)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) C) -> (forall (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) C)
+Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom_norm_le AddMonoidHom.mkNormedAddGroupHom_norm_leₓ'. -/
alias mk_normed_add_group_hom_norm_le ← _root_.add_monoid_hom.mk_normed_add_group_hom_norm_le
#align add_monoid_hom.mk_normed_add_group_hom_norm_le AddMonoidHom.mkNormedAddGroupHom_norm_le
+/- warning: add_monoid_hom.mk_normed_add_group_hom_norm_le' -> AddMonoidHom.mkNormedAddGroupHom_norm_le' is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} V₂ (SeminormedAddCommGroup.toHasNorm.{u2} V₂ _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (fun (_x : AddMonoidHom.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) => V₁ -> V₂) (AddMonoidHom.hasCoeToFun.{u1, u2} V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C (Norm.norm.{u1} V₁ (SeminormedAddCommGroup.toHasNorm.{u1} V₁ _inst_2) x))), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3 f C h)) (LinearOrder.max.{0} Real Real.linearOrder C (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) {C : Real} (h : forall (x : V₁), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : V₁) => V₂) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (AddMonoidHom.addMonoidHomClass.{u2, u1} V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) f x)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C (Norm.norm.{u2} V₁ (SeminormedAddCommGroup.toNorm.{u2} V₁ _inst_2) x))), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (AddMonoidHom.mkNormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3 f C h)) (Max.max.{0} Real (LinearOrderedRing.toMax.{0} Real Real.instLinearOrderedRingReal) C (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
+Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mk_normed_add_group_hom_norm_le' AddMonoidHom.mkNormedAddGroupHom_norm_le'ₓ'. -/
alias mk_normed_add_group_hom_norm_le' ← _root_.add_monoid_hom.mk_normed_add_group_hom_norm_le'
#align add_monoid_hom.mk_normed_add_group_hom_norm_le' AddMonoidHom.mkNormedAddGroupHom_norm_le'
@@ -325,14 +555,20 @@ instance : Add (NormedAddGroupHom V₁ V₂) :=
(f.toAddMonoidHom + g.toAddMonoidHom).mkNormedAddGroupHom (‖f‖ + ‖g‖) fun v =>
calc
‖f v + g v‖ ≤ ‖f v‖ + ‖g v‖ := norm_add_le _ _
- _ ≤ ‖f‖ * ‖v‖ + ‖g‖ * ‖v‖ := (add_le_add (le_op_norm f v) (le_op_norm g v))
+ _ ≤ ‖f‖ * ‖v‖ + ‖g‖ * ‖v‖ := (add_le_add (le_opNorm f v) (le_opNorm g v))
_ = (‖f‖ + ‖g‖) * ‖v‖ := by rw [add_mul]
⟩
+/- warning: normed_add_group_hom.op_norm_add_le -> NormedAddGroupHom.opNorm_add_le is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (instHAdd.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasAdd.{u1, u2} V₁ V₂ _inst_2 _inst_3)) f g)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) g))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHAdd.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.add.{u2, u1} V₁ V₂ _inst_2 _inst_3)) f g)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) g))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_add_le NormedAddGroupHom.opNorm_add_leₓ'. -/
/-- The operator norm satisfies the triangle inequality. -/
-theorem op_norm_add_le : ‖f + g‖ ≤ ‖f‖ + ‖g‖ :=
- mkNormedAddGroupHom_norm_le _ (add_nonneg (op_norm_nonneg _) (op_norm_nonneg _)) _
-#align normed_add_group_hom.op_norm_add_le NormedAddGroupHom.op_norm_add_le
+theorem opNorm_add_le : ‖f + g‖ ≤ ‖f‖ + ‖g‖ :=
+ mkNormedAddGroupHom_norm_le _ (add_nonneg (opNorm_nonneg _) (opNorm_nonneg _)) _
+#align normed_add_group_hom.op_norm_add_le NormedAddGroupHom.opNorm_add_le
library_note "addition on function coercions"/--
Terms containing `@has_add.add (has_coe_to_fun.F ...) pi.has_add`
@@ -342,12 +578,24 @@ As a workaround, we add a type annotation: `(f + g : V₁ → V₂)`
-/
+/- warning: normed_add_group_hom.coe_add -> NormedAddGroupHom.coe_add is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (instHAdd.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasAdd.{u1, u2} V₁ V₂ _inst_2 _inst_3)) f g)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (V₁ -> V₂) (V₁ -> V₂) (V₁ -> V₂) (instHAdd.{max u1 u2} (V₁ -> V₂) (Pi.instAdd.{u1, u2} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => AddZeroClass.toHasAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHAdd.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.add.{u2, u1} V₁ V₂ _inst_2 _inst_3)) f g)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (V₁ -> V₂) (V₁ -> V₂) (V₁ -> V₂) (instHAdd.{max u2 u1} (V₁ -> V₂) (Pi.instAdd.{u2, u1} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_add NormedAddGroupHom.coe_addₓ'. -/
-- see Note [addition on function coercions]
@[simp]
theorem coe_add (f g : NormedAddGroupHom V₁ V₂) : ⇑(f + g) = (f + g : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_add NormedAddGroupHom.coe_add
+/- warning: normed_add_group_hom.add_apply -> NormedAddGroupHom.add_apply is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (instHAdd.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasAdd.{u1, u2} V₁ V₂ _inst_2 _inst_3)) f g) v) (HAdd.hAdd.{u2, u2, u2} V₂ V₂ V₂ (instHAdd.{u2} V₂ (AddZeroClass.toHasAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g v))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HAdd.hAdd.{max u2 u1, max u2 u1, max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHAdd.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.add.{u2, u1} V₁ V₂ _inst_2 _inst_3)) f g) v) (HAdd.hAdd.{u1, u1, u1} V₂ V₂ V₂ (instHAdd.{u1} V₂ (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g v))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.add_apply NormedAddGroupHom.add_applyₓ'. -/
@[simp]
theorem add_apply (f g : NormedAddGroupHom V₁ V₂) (v : V₁) :
(f + g : NormedAddGroupHom V₁ V₂) v = f v + g v :=
@@ -363,8 +611,14 @@ instance : Zero (NormedAddGroupHom V₁ V₂) :=
instance : Inhabited (NormedAddGroupHom V₁ V₂) :=
⟨0⟩
+/- warning: normed_add_group_hom.op_norm_zero -> NormedAddGroupHom.opNorm_zero is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂], Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ _inst_2 _inst_3))))) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂], Eq.{1} Real (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zero.{u2, u1} V₁ V₂ _inst_2 _inst_3)))) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_zero NormedAddGroupHom.opNorm_zeroₓ'. -/
/-- The norm of the `0` operator is `0`. -/
-theorem op_norm_zero : ‖(0 : NormedAddGroupHom V₁ V₂)‖ = 0 :=
+theorem opNorm_zero : ‖(0 : NormedAddGroupHom V₁ V₂)‖ = 0 :=
le_antisymm
(cinfₛ_le bounds_bddBelow
⟨ge_of_eq rfl, fun _ =>
@@ -372,29 +626,47 @@ theorem op_norm_zero : ‖(0 : NormedAddGroupHom V₁ V₂)‖ = 0 :=
(by
rw [zero_mul]
exact norm_zero)⟩)
- (op_norm_nonneg _)
-#align normed_add_group_hom.op_norm_zero NormedAddGroupHom.op_norm_zero
-
+ (opNorm_nonneg _)
+#align normed_add_group_hom.op_norm_zero NormedAddGroupHom.opNorm_zero
+
+/- warning: normed_add_group_hom.op_norm_zero_iff -> NormedAddGroupHom.opNorm_zero_iff is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_5 : NormedAddCommGroup.{u1} V₁] [_inst_6 : NormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)}, Iff (Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)) f) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)) f (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6))))))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_5 : NormedAddCommGroup.{u2} V₁] [_inst_6 : NormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)}, Iff (Eq.{1} Real (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)) f) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (Eq.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)) f (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)) (NormedAddGroupHom.zero.{u2, u1} V₁ V₂ (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₁ _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V₂ _inst_6)))))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_zero_iff NormedAddGroupHom.opNorm_zero_iffₓ'. -/
/-- For normed groups, an operator is zero iff its norm vanishes. -/
-theorem op_norm_zero_iff {V₁ V₂ : Type _} [NormedAddCommGroup V₁] [NormedAddCommGroup V₂]
+theorem opNorm_zero_iff {V₁ V₂ : Type _} [NormedAddCommGroup V₁] [NormedAddCommGroup V₂]
{f : NormedAddGroupHom V₁ V₂} : ‖f‖ = 0 ↔ f = 0 :=
Iff.intro
(fun hn =>
ext fun x =>
norm_le_zero_iff.1
(calc
- _ ≤ ‖f‖ * ‖x‖ := le_op_norm _ _
+ _ ≤ ‖f‖ * ‖x‖ := le_opNorm _ _
_ = _ := by rw [hn, zero_mul]
))
fun hf => by rw [hf, op_norm_zero]
-#align normed_add_group_hom.op_norm_zero_iff NormedAddGroupHom.op_norm_zero_iff
-
+#align normed_add_group_hom.op_norm_zero_iff NormedAddGroupHom.opNorm_zero_iff
+
+/- warning: normed_add_group_hom.coe_zero -> NormedAddGroupHom.coe_zero is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂], Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ _inst_2 _inst_3))))) (OfNat.ofNat.{max u1 u2} (V₁ -> V₂) 0 (OfNat.mk.{max u1 u2} (V₁ -> V₂) 0 (Zero.zero.{max u1 u2} (V₁ -> V₂) (Pi.instZero.{u1, u2} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))))))))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂], Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zero.{u2, u1} V₁ V₂ _inst_2 _inst_3)))) (OfNat.ofNat.{max u2 u1} (V₁ -> V₂) 0 (Zero.toOfNat0.{max u2 u1} (V₁ -> V₂) (Pi.instZero.{u2, u1} V₁ (fun (a : V₁) => V₂) (fun (i : V₁) => NegZeroClass.toZero.{u1} V₂ (SubNegZeroMonoid.toNegZeroClass.{u1} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u1} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u1} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_3)))))))))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_zero NormedAddGroupHom.coe_zeroₓ'. -/
-- see Note [addition on function coercions]
@[simp]
theorem coe_zero : ⇑(0 : NormedAddGroupHom V₁ V₂) = (0 : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_zero NormedAddGroupHom.coe_zero
+/- warning: normed_add_group_hom.zero_apply -> NormedAddGroupHom.zero_apply is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ _inst_2 _inst_3)))) v) (OfNat.ofNat.{u2} V₂ 0 (OfNat.mk.{u2} V₂ 0 (Zero.zero.{u2} V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))))))
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (v : V₁), Eq.{succ u2} V₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_2 _inst_3))) (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (Zero.toOfNat0.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zero.{u1, u2} V₁ V₂ _inst_2 _inst_3))) v) (OfNat.ofNat.{u2} V₂ 0 (Zero.toOfNat0.{u2} V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3))))))))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.zero_apply NormedAddGroupHom.zero_applyₓ'. -/
@[simp]
theorem zero_apply (v : V₁) : (0 : NormedAddGroupHom V₁ V₂) v = 0 :=
rfl
@@ -407,28 +679,48 @@ variable {f g}
variable (V)
+#print NormedAddGroupHom.id /-
/-- The identity as a continuous normed group hom. -/
@[simps]
def id : NormedAddGroupHom V V :=
(AddMonoidHom.id V).mkNormedAddGroupHom 1 (by simp [le_refl])
#align normed_add_group_hom.id NormedAddGroupHom.id
+-/
+/- warning: normed_add_group_hom.norm_id_le -> NormedAddGroupHom.norm_id_le is a dubious translation:
+lean 3 declaration is
+ forall (V : Type.{u1}) [_inst_1 : SeminormedAddCommGroup.{u1} V], LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.hasOpNorm.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.id.{u1} V _inst_1)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
+but is expected to have type
+ forall (V : Type.{u1}) [_inst_1 : SeminormedAddCommGroup.{u1} V], LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.hasOpNorm.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.id.{u1} V _inst_1)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_id_le NormedAddGroupHom.norm_id_leₓ'. -/
/-- The norm of the identity is at most `1`. It is in fact `1`, except when the norm of every
element vanishes, where it is `0`. (Since we are working with seminorms this can happen even if the
space is non-trivial.) It means that one can not do better than an inequality in general. -/
theorem norm_id_le : ‖(id V : NormedAddGroupHom V V)‖ ≤ 1 :=
- op_norm_le_bound _ zero_le_one fun x => by simp
+ opNorm_le_bound _ zero_le_one fun x => by simp
#align normed_add_group_hom.norm_id_le NormedAddGroupHom.norm_id_le
+/- warning: normed_add_group_hom.norm_id_of_nontrivial_seminorm -> NormedAddGroupHom.norm_id_of_nontrivial_seminorm is a dubious translation:
+lean 3 declaration is
+ forall (V : Type.{u1}) [_inst_1 : SeminormedAddCommGroup.{u1} V], (Exists.{succ u1} V (fun (x : V) => Ne.{1} Real (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) x) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.hasOpNorm.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.id.{u1} V _inst_1)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
+but is expected to have type
+ forall (V : Type.{u1}) [_inst_1 : SeminormedAddCommGroup.{u1} V], (Exists.{succ u1} V (fun (x : V) => Ne.{1} Real (Norm.norm.{u1} V (SeminormedAddCommGroup.toNorm.{u1} V _inst_1) x) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.hasOpNorm.{u1, u1} V V _inst_1 _inst_1) (NormedAddGroupHom.id.{u1} V _inst_1)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_id_of_nontrivial_seminorm NormedAddGroupHom.norm_id_of_nontrivial_seminormₓ'. -/
/-- If there is an element with norm different from `0`, then the norm of the identity equals `1`.
(Since we are working with seminorms supposing that the space is non-trivial is not enough.) -/
theorem norm_id_of_nontrivial_seminorm (h : ∃ x : V, ‖x‖ ≠ 0) : ‖id V‖ = 1 :=
le_antisymm (norm_id_le V) <| by
let ⟨x, hx⟩ := h
- have := (id V).ratio_le_op_norm x
+ have := (id V).ratio_le_opNorm x
rwa [id_apply, div_self hx] at this
#align normed_add_group_hom.norm_id_of_nontrivial_seminorm NormedAddGroupHom.norm_id_of_nontrivial_seminorm
+/- warning: normed_add_group_hom.norm_id -> NormedAddGroupHom.norm_id is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} [_inst_5 : NormedAddCommGroup.{u1} V] [_inst_6 : Nontrivial.{u1} V], Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} V V (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5)) (NormedAddGroupHom.hasOpNorm.{u1, u1} V V (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5)) (NormedAddGroupHom.id.{u1} V (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5))) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
+but is expected to have type
+ forall {V : Type.{u1}} [_inst_5 : NormedAddCommGroup.{u1} V] [_inst_6 : Nontrivial.{u1} V], Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} V V (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5)) (NormedAddGroupHom.hasOpNorm.{u1, u1} V V (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5) (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5)) (NormedAddGroupHom.id.{u1} V (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} V _inst_5))) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_id NormedAddGroupHom.norm_idₓ'. -/
/-- If a normed space is non-trivial, then the norm of the identity equals `1`. -/
theorem norm_id {V : Type _} [NormedAddCommGroup V] [Nontrivial V] : ‖id V‖ = 1 :=
by
@@ -437,9 +729,11 @@ theorem norm_id {V : Type _} [NormedAddCommGroup V] [Nontrivial V] : ‖id V‖
exact ⟨x, ne_of_gt (norm_pos_iff.2 hx)⟩
#align normed_add_group_hom.norm_id NormedAddGroupHom.norm_id
+#print NormedAddGroupHom.coe_id /-
theorem coe_id : (NormedAddGroupHom.id V : V → V) = (id : V → V) :=
rfl
#align normed_add_group_hom.coe_id NormedAddGroupHom.coe_id
+-/
/-! ### The negation of a normed group hom -/
@@ -448,21 +742,39 @@ theorem coe_id : (NormedAddGroupHom.id V : V → V) = (id : V → V) :=
instance : Neg (NormedAddGroupHom V₁ V₂) :=
⟨fun f => (-f.toAddMonoidHom).mkNormedAddGroupHom ‖f‖ fun v => by simp [le_op_norm f v]⟩
+/- warning: normed_add_group_hom.coe_neg -> NormedAddGroupHom.coe_neg is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (Neg.neg.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasNeg.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)) (Neg.neg.{max u1 u2} (V₁ -> V₂) (Pi.instNeg.{u1, u2} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => SubNegMonoid.toHasNeg.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (Neg.neg.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.neg.{u2, u1} V₁ V₂ _inst_2 _inst_3) f)) (Neg.neg.{max u2 u1} (V₁ -> V₂) (Pi.instNeg.{u2, u1} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => NegZeroClass.toNeg.{u1} V₂ (SubNegZeroMonoid.toNegZeroClass.{u1} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u1} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u1} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_3))))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_neg NormedAddGroupHom.coe_negₓ'. -/
-- see Note [addition on function coercions]
@[simp]
theorem coe_neg (f : NormedAddGroupHom V₁ V₂) : ⇑(-f) = (-f : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_neg NormedAddGroupHom.coe_neg
+/- warning: normed_add_group_hom.neg_apply -> NormedAddGroupHom.neg_apply is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (Neg.neg.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasNeg.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) v) (Neg.neg.{u2} V₂ (SubNegMonoid.toHasNeg.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (Neg.neg.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.neg.{u2, u1} V₁ V₂ _inst_2 _inst_3) f) v) (Neg.neg.{u1} V₂ (NegZeroClass.toNeg.{u1} V₂ (SubNegZeroMonoid.toNegZeroClass.{u1} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u1} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u1} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_3)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.neg_apply NormedAddGroupHom.neg_applyₓ'. -/
@[simp]
theorem neg_apply (f : NormedAddGroupHom V₁ V₂) (v : V₁) :
(-f : NormedAddGroupHom V₁ V₂) v = -f v :=
rfl
#align normed_add_group_hom.neg_apply NormedAddGroupHom.neg_apply
-theorem op_norm_neg (f : NormedAddGroupHom V₁ V₂) : ‖-f‖ = ‖f‖ := by
+/- warning: normed_add_group_hom.op_norm_neg -> NormedAddGroupHom.opNorm_neg is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{1} Real (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) (Neg.neg.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasNeg.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{1} Real (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) (Neg.neg.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.neg.{u2, u1} V₁ V₂ _inst_2 _inst_3) f)) (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u2, u1} V₁ V₂ _inst_2 _inst_3) f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.op_norm_neg NormedAddGroupHom.opNorm_negₓ'. -/
+theorem opNorm_neg (f : NormedAddGroupHom V₁ V₂) : ‖-f‖ = ‖f‖ := by
simp only [norm_def, coe_neg, norm_neg, Pi.neg_apply]
-#align normed_add_group_hom.op_norm_neg NormedAddGroupHom.op_norm_neg
+#align normed_add_group_hom.op_norm_neg NormedAddGroupHom.opNorm_neg
/-! ### Subtraction of normed group homs -/
@@ -476,12 +788,24 @@ instance : Sub (NormedAddGroupHom V₁ V₂) :=
simp only [AddMonoidHom.sub_apply, AddMonoidHom.toFun_eq_coe, sub_eq_add_neg]
exact (f + -g).bound' }⟩
+/- warning: normed_add_group_hom.coe_sub -> NormedAddGroupHom.coe_sub is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (instHSub.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasSub.{u1, u2} V₁ V₂ _inst_2 _inst_3)) f g)) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (V₁ -> V₂) (V₁ -> V₂) (V₁ -> V₂) (instHSub.{max u1 u2} (V₁ -> V₂) (Pi.instSub.{u1, u2} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => SubNegMonoid.toHasSub.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSub.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.sub.{u2, u1} V₁ V₂ _inst_2 _inst_3)) f g)) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (V₁ -> V₂) (V₁ -> V₂) (V₁ -> V₂) (instHSub.{max u2 u1} (V₁ -> V₂) (Pi.instSub.{u2, u1} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => SubNegMonoid.toSub.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_sub NormedAddGroupHom.coe_subₓ'. -/
-- see Note [addition on function coercions]
@[simp]
theorem coe_sub (f g : NormedAddGroupHom V₁ V₂) : ⇑(f - g) = (f - g : V₁ → V₂) :=
rfl
#align normed_add_group_hom.coe_sub NormedAddGroupHom.coe_sub
+/- warning: normed_add_group_hom.sub_apply -> NormedAddGroupHom.sub_apply is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (instHSub.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasSub.{u1, u2} V₁ V₂ _inst_2 _inst_3)) f g) v) (HSub.hSub.{u2, u2, u2} V₂ V₂ V₂ (instHSub.{u2} V₂ (SubNegMonoid.toHasSub.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) g v))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSub.hSub.{max u2 u1, max u2 u1, max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSub.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.sub.{u2, u1} V₁ V₂ _inst_2 _inst_3)) f g) v) (HSub.hSub.{u1, u1, u1} V₂ V₂ V₂ (instHSub.{u1} V₂ (SubNegMonoid.toSub.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) g v))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.sub_apply NormedAddGroupHom.sub_applyₓ'. -/
@[simp]
theorem sub_apply (f g : NormedAddGroupHom V₁ V₂) (v : V₁) :
(f - g : NormedAddGroupHom V₁ V₂) v = f v - g v :=
@@ -511,11 +835,23 @@ instance : SMul R (NormedAddGroupHom V₁ V₂)
refine' mul_le_mul_of_nonneg_left _ dist_nonneg
exact hb x⟩ }
+/- warning: normed_add_group_hom.coe_smul -> NormedAddGroupHom.coe_smul is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u3}} [_inst_5 : MonoidWithZero.{u3} R] [_inst_6 : DistribMulAction.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u3} R] [_inst_8 : BoundedSmul.{u3, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_5))) (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{succ (max u1 u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{u3, max u1 u2} R (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasSmul.{u1, u2, u3} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8) r f)) (SMul.smul.{u3, max u1 u2} R (V₁ -> V₂) (Function.hasSMul.{u1, u3, u2} V₁ R V₂ (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
+but is expected to have type
+ forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u1}} [_inst_5 : MonoidWithZero.{u1} R] [_inst_6 : DistribMulAction.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u1} R] [_inst_8 : BoundedSmul.{u1, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MonoidWithZero.toZero.{u1} R _inst_5) (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u3) (succ u2)} (V₁ -> V₂) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (instHSMul.{u1, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.smul.{u3, u2, u1} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8)) r f)) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} R (V₁ -> V₂) (V₁ -> V₂) (instHSMul.{u1, max u3 u2} R (V₁ -> V₂) (Pi.instSMul.{u3, u2, u1} V₁ R (fun (a : V₁) => V₂) (fun (i : V₁) => SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6))))) r (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) f))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_smul NormedAddGroupHom.coe_smulₓ'. -/
@[simp]
theorem coe_smul (r : R) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • f :=
rfl
#align normed_add_group_hom.coe_smul NormedAddGroupHom.coe_smul
+/- warning: normed_add_group_hom.smul_apply -> NormedAddGroupHom.smul_apply is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u3}} [_inst_5 : MonoidWithZero.{u3} R] [_inst_6 : DistribMulAction.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u3} R] [_inst_8 : BoundedSmul.{u3, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MulZeroClass.toHasZero.{u3} R (MulZeroOneClass.toMulZeroClass.{u3} R (MonoidWithZero.toMulZeroOneClass.{u3} R _inst_5))) (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{u3, max u1 u2} R (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasSmul.{u1, u2, u3} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8) r f) v) (SMul.smul.{u3, u2} R V₂ (SMulZeroClass.toHasSmul.{u3, u2} R V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSmulZeroClass.{u3, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u3, u2} R V₂ (MonoidWithZero.toMonoid.{u3} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
+but is expected to have type
+ forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {R : Type.{u1}} [_inst_5 : MonoidWithZero.{u1} R] [_inst_6 : DistribMulAction.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))] [_inst_7 : PseudoMetricSpace.{u1} R] [_inst_8 : BoundedSmul.{u1, u2} R V₂ _inst_7 (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_3) (MonoidWithZero.toZero.{u1} R _inst_5) (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))] (r : R) (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{u1, max u3 u2, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (instHSMul.{u1, max u3 u2} R (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.smul.{u3, u2, u1} V₁ V₂ _inst_2 _inst_3 R _inst_5 _inst_6 _inst_7 _inst_8)) r f) v) (HSMul.hSMul.{u1, u2, u2} R V₂ V₂ (instHSMul.{u1, u2} R V₂ (SMulZeroClass.toSMul.{u1, u2} R V₂ (NegZeroClass.toZero.{u2} V₂ (SubNegZeroMonoid.toNegZeroClass.{u2} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u2} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u2} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)))))) (DistribSMul.toSMulZeroClass.{u1, u2} R V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (DistribMulAction.toDistribSMul.{u1, u2} R V₂ (MonoidWithZero.toMonoid.{u1} R _inst_5) (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) _inst_6)))) r (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) f v))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.smul_apply NormedAddGroupHom.smul_applyₓ'. -/
@[simp]
theorem smul_apply (r : R) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r • f) v = r • f v :=
rfl
@@ -533,7 +869,8 @@ instance [DistribMulAction Rᵐᵒᵖ V₂] [IsCentralScalar R V₂] :
end SMul
-instance hasNatScalar : SMul ℕ (NormedAddGroupHom V₁ V₂)
+#print NormedAddGroupHom.natSMul /-
+instance natSMul : SMul ℕ (NormedAddGroupHom V₁ V₂)
where smul n f :=
{ toFun := n • f
map_add' := (n • f.toAddMonoidHom).map_add'
@@ -542,19 +879,33 @@ instance hasNatScalar : SMul ℕ (NormedAddGroupHom V₁ V₂)
⟨n • b, fun v => by
rw [Pi.smul_apply, nsmul_eq_mul, mul_assoc]
exact (norm_nsmul_le _ _).trans (mul_le_mul_of_nonneg_left (hb _) (Nat.cast_nonneg _))⟩ }
-#align normed_add_group_hom.has_nat_scalar NormedAddGroupHom.hasNatScalar
+#align normed_add_group_hom.has_nat_scalar NormedAddGroupHom.natSMul
+-/
+/- warning: normed_add_group_hom.coe_nsmul -> NormedAddGroupHom.coe_nsmul is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Nat) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{succ (max u1 u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Nat (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.natSMul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f)) (SMul.smul.{0, max u1 u2} Nat (V₁ -> V₂) (Function.hasSMul.{u1, 0, u2} V₁ Nat V₂ (AddMonoid.SMul.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Nat) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.natSMul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f)) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Nat (V₁ -> V₂) (V₁ -> V₂) (instHSMul.{0, max u2 u1} Nat (V₁ -> V₂) (AddMonoid.SMul.{max u2 u1} (V₁ -> V₂) (Pi.addMonoid.{u2, u1} V₁ (fun (a : V₁) => V₂) (fun (i : V₁) => SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_nsmul NormedAddGroupHom.coe_nsmulₓ'. -/
@[simp]
theorem coe_nsmul (r : ℕ) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • f :=
rfl
#align normed_add_group_hom.coe_nsmul NormedAddGroupHom.coe_nsmul
+/- warning: normed_add_group_hom.nsmul_apply -> NormedAddGroupHom.nsmul_apply is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Nat) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Nat (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.natSMul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f) v) (SMul.smul.{0, u2} Nat V₂ (AddMonoid.SMul.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Nat) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Nat (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.natSMul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f) v) (HSMul.hSMul.{0, u1, u1} Nat V₂ V₂ (instHSMul.{0, u1} Nat V₂ (AddMonoid.SMul.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.nsmul_apply NormedAddGroupHom.nsmul_applyₓ'. -/
@[simp]
theorem nsmul_apply (r : ℕ) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r • f) v = r • f v :=
rfl
#align normed_add_group_hom.nsmul_apply NormedAddGroupHom.nsmul_apply
-instance hasIntScalar : SMul ℤ (NormedAddGroupHom V₁ V₂)
+#print NormedAddGroupHom.intSMul /-
+instance intSMul : SMul ℤ (NormedAddGroupHom V₁ V₂)
where smul z f :=
{ toFun := z • f
map_add' := (z • f.toAddMonoidHom).map_add'
@@ -563,13 +914,26 @@ instance hasIntScalar : SMul ℤ (NormedAddGroupHom V₁ V₂)
⟨‖z‖ • b, fun v => by
rw [Pi.smul_apply, smul_eq_mul, mul_assoc]
exact (norm_zsmul_le _ _).trans (mul_le_mul_of_nonneg_left (hb _) <| norm_nonneg _)⟩ }
-#align normed_add_group_hom.has_int_scalar NormedAddGroupHom.hasIntScalar
+#align normed_add_group_hom.has_int_scalar NormedAddGroupHom.intSMul
+-/
+/- warning: normed_add_group_hom.coe_zsmul -> NormedAddGroupHom.coe_zsmul is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Int) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{succ (max u1 u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Int (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.intSMul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f)) (SMul.smul.{0, max u1 u2} Int (V₁ -> V₂) (Function.hasSMul.{u1, 0, u2} V₁ Int V₂ (SubNegMonoid.SMulInt.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Int) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.intSMul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f)) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Int (V₁ -> V₂) (V₁ -> V₂) (instHSMul.{0, max u2 u1} Int (V₁ -> V₂) (SubNegMonoid.SMulInt.{max u2 u1} (V₁ -> V₂) (Pi.subNegMonoid.{u2, u1} V₁ (fun (a : V₁) => V₂) (fun (i : V₁) => AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_zsmul NormedAddGroupHom.coe_zsmulₓ'. -/
@[simp]
theorem coe_zsmul (r : ℤ) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • f :=
rfl
#align normed_add_group_hom.coe_zsmul NormedAddGroupHom.coe_zsmul
+/- warning: normed_add_group_hom.zsmul_apply -> NormedAddGroupHom.zsmul_apply is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] (r : Int) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SMul.smul.{0, max u1 u2} Int (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.intSMul.{u1, u2} V₁ V₂ _inst_2 _inst_3) r f) v) (SMul.smul.{0, u2} Int V₂ (SubNegMonoid.SMulInt.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))) r (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f v))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] (r : Int) (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (HSMul.hSMul.{0, max u2 u1, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (instHSMul.{0, max u2 u1} Int (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.intSMul.{u2, u1} V₁ V₂ _inst_2 _inst_3)) r f) v) (HSMul.hSMul.{0, u1, u1} Int V₂ V₂ (instHSMul.{0, u1} Int V₂ (SubNegMonoid.SMulInt.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) r (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) f v))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.zsmul_apply NormedAddGroupHom.zsmul_applyₓ'. -/
@[simp]
theorem zsmul_apply (r : ℤ) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r • f) v = r • f v :=
rfl
@@ -583,44 +947,62 @@ instance : AddCommGroup (NormedAddGroupHom V₁ V₂) :=
coe_injective.AddCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
fun _ _ => rfl
+#print NormedAddGroupHom.toSeminormedAddCommGroup /-
/-- Normed group homomorphisms themselves form a seminormed group with respect to
the operator norm. -/
instance toSeminormedAddCommGroup : SeminormedAddCommGroup (NormedAddGroupHom V₁ V₂) :=
AddGroupSeminorm.toSeminormedAddCommGroup
{ toFun := opNorm
- map_zero' := op_norm_zero
- neg' := op_norm_neg
- add_le' := op_norm_add_le }
+ map_zero' := opNorm_zero
+ neg' := opNorm_neg
+ add_le' := opNorm_add_le }
#align normed_add_group_hom.to_seminormed_add_comm_group NormedAddGroupHom.toSeminormedAddCommGroup
+-/
+#print NormedAddGroupHom.toNormedAddCommGroup /-
/-- Normed group homomorphisms themselves form a normed group with respect to
the operator norm. -/
instance toNormedAddCommGroup {V₁ V₂ : Type _} [NormedAddCommGroup V₁] [NormedAddCommGroup V₂] :
NormedAddCommGroup (NormedAddGroupHom V₁ V₂) :=
AddGroupNorm.toNormedAddCommGroup
{ toFun := opNorm
- map_zero' := op_norm_zero
- neg' := op_norm_neg
- add_le' := op_norm_add_le
- eq_zero_of_map_eq_zero' := fun f => op_norm_zero_iff.1 }
+ map_zero' := opNorm_zero
+ neg' := opNorm_neg
+ add_le' := opNorm_add_le
+ eq_zero_of_map_eq_zero' := fun f => opNorm_zero_iff.1 }
#align normed_add_group_hom.to_normed_add_comm_group NormedAddGroupHom.toNormedAddCommGroup
+-/
+#print NormedAddGroupHom.coeAddHom /-
/-- Coercion of a `normed_add_group_hom` is an `add_monoid_hom`. Similar to `add_monoid_hom.coe_fn`.
-/
@[simps]
-def coeFnAddHom : NormedAddGroupHom V₁ V₂ →+ V₁ → V₂
+def coeAddHom : NormedAddGroupHom V₁ V₂ →+ V₁ → V₂
where
toFun := coeFn
map_zero' := coe_zero
map_add' := coe_add
-#align normed_add_group_hom.coe_fn_add_hom NormedAddGroupHom.coeFnAddHom
+#align normed_add_group_hom.coe_fn_add_hom NormedAddGroupHom.coeAddHom
+-/
+/- warning: normed_add_group_hom.coe_sum -> NormedAddGroupHom.coe_sum is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {ι : Type.{u3}} (s : Finset.{u3} ι) (f : ι -> (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3)), Eq.{max (succ u1) (succ u2)} (V₁ -> V₂) (coeFn.{succ (max u1 u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (Finset.sum.{max u1 u2, u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) ι (AddCommGroup.toAddCommMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.addCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)) s (fun (i : ι) => f i))) (Finset.sum.{max u1 u2, u3} (V₁ -> V₂) ι (Pi.addCommMonoid.{u1, u2} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => AddCommGroup.toAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3))) s (fun (i : ι) => coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (f i)))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {ι : Type.{u3}} (s : Finset.{u3} ι) (f : ι -> (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3)), Eq.{max (succ u2) (succ u1)} (V₁ -> V₂) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (Finset.sum.{max u2 u1, u3} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) ι (AddCommGroup.toAddCommMonoid.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toAddCommGroup.{u2, u1} V₁ V₂ _inst_2 _inst_3)) s (fun (i : ι) => f i))) (Finset.sum.{max u2 u1, u3} (V₁ -> V₂) ι (Pi.addCommMonoid.{u2, u1} V₁ (fun (ᾰ : V₁) => V₂) (fun (i : V₁) => AddCommGroup.toAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_3))) s (fun (i : ι) => FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (f i)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_sum NormedAddGroupHom.coe_sumₓ'. -/
@[simp]
theorem coe_sum {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V₁ V₂) :
⇑(∑ i in s, f i) = ∑ i in s, f i :=
- (coeFnAddHom : _ →+ V₁ → V₂).map_sum f s
+ (coeAddHom : _ →+ V₁ → V₂).map_sum f s
#align normed_add_group_hom.coe_sum NormedAddGroupHom.coe_sum
+/- warning: normed_add_group_hom.sum_apply -> NormedAddGroupHom.sum_apply is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] {ι : Type.{u3}} (s : Finset.{u3} ι) (f : ι -> (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3)) (v : V₁), Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (Finset.sum.{max u1 u2, u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) ι (AddCommGroup.toAddCommMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.addCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)) s (fun (i : ι) => f i)) v) (Finset.sum.{u2, u3} V₂ ι (AddCommGroup.toAddCommMonoid.{u2} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u2} V₂ _inst_3)) s (fun (i : ι) => coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) (f i) v))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u2} V₁] [_inst_3 : SeminormedAddCommGroup.{u1} V₂] {ι : Type.{u3}} (s : Finset.{u3} ι) (f : ι -> (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3)) (v : V₁), Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (Finset.sum.{max u2 u1, u3} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) ι (AddCommGroup.toAddCommMonoid.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toAddCommGroup.{u2, u1} V₁ V₂ _inst_2 _inst_3)) s (fun (i : ι) => f i)) v) (Finset.sum.{u1, u3} V₂ ι (AddCommGroup.toAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_3)) s (fun (i : ι) => FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_2 _inst_3))) (f i) v))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.sum_apply NormedAddGroupHom.sum_applyₓ'. -/
theorem sum_apply {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V₁ V₂) (v : V₁) :
(∑ i in s, f i) v = ∑ i in s, f i v := by simp only [coe_sum, Finset.sum_apply]
#align normed_add_group_hom.sum_apply NormedAddGroupHom.sum_apply
@@ -630,37 +1012,57 @@ theorem sum_apply {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V
instance {R : Type _} [MonoidWithZero R] [DistribMulAction R V₂] [PseudoMetricSpace R]
[BoundedSmul R V₂] : DistribMulAction R (NormedAddGroupHom V₁ V₂) :=
- Function.Injective.distribMulAction coeFnAddHom coe_injective coe_smul
+ Function.Injective.distribMulAction coeAddHom coe_injective coe_smul
instance {R : Type _} [Semiring R] [Module R V₂] [PseudoMetricSpace R] [BoundedSmul R V₂] :
Module R (NormedAddGroupHom V₁ V₂) :=
- Function.Injective.module _ coeFnAddHom coe_injective coe_smul
+ Function.Injective.module _ coeAddHom coe_injective coe_smul
/-! ### Composition of normed group homs -/
+#print NormedAddGroupHom.comp /-
/-- The composition of continuous normed group homs. -/
@[simps]
protected def comp (g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁ V₂) :
NormedAddGroupHom V₁ V₃ :=
(g.toAddMonoidHom.comp f.toAddMonoidHom).mkNormedAddGroupHom (‖g‖ * ‖f‖) fun v =>
calc
- ‖g (f v)‖ ≤ ‖g‖ * ‖f v‖ := le_op_norm _ _
- _ ≤ ‖g‖ * (‖f‖ * ‖v‖) := (mul_le_mul_of_nonneg_left (le_op_norm _ _) (op_norm_nonneg _))
+ ‖g (f v)‖ ≤ ‖g‖ * ‖f v‖ := le_opNorm _ _
+ _ ≤ ‖g‖ * (‖f‖ * ‖v‖) := (mul_le_mul_of_nonneg_left (le_opNorm _ _) (opNorm_nonneg _))
_ = ‖g‖ * ‖f‖ * ‖v‖ := by rw [mul_assoc]
#align normed_add_group_hom.comp NormedAddGroupHom.comp
+-/
+/- warning: normed_add_group_hom.norm_comp_le -> NormedAddGroupHom.norm_comp_le is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃] (g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u2, u3} V₂ V₃ _inst_3 _inst_4) g) (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u3} V₂] [_inst_4 : SeminormedAddCommGroup.{u2} V₃] (g : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4) (f : NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3), LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u3, u2} V₂ V₃ _inst_3 _inst_4) g) (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₂ _inst_2 _inst_3) f))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_comp_le NormedAddGroupHom.norm_comp_leₓ'. -/
theorem norm_comp_le (g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁ V₂) :
‖g.comp f‖ ≤ ‖g‖ * ‖f‖ :=
- mkNormedAddGroupHom_norm_le _ (mul_nonneg (op_norm_nonneg _) (op_norm_nonneg _)) _
+ mkNormedAddGroupHom_norm_le _ (mul_nonneg (opNorm_nonneg _) (opNorm_nonneg _)) _
#align normed_add_group_hom.norm_comp_le NormedAddGroupHom.norm_comp_le
+/- warning: normed_add_group_hom.norm_comp_le_of_le -> NormedAddGroupHom.norm_comp_le_of_le is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4} {C₁ : Real} {C₂ : Real}, (LE.le.{0} Real Real.hasLe (Norm.norm.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u2, u3} V₂ V₃ _inst_3 _inst_4) g) C₂) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) C₁) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C₂ C₁))
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u3} V₂] [_inst_4 : SeminormedAddCommGroup.{u2} V₃] {f : NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4} {C₁ : Real} {C₂ : Real}, (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u3, u2} V₂ V₃ _inst_3 _inst_4) g) C₂) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₂ _inst_2 _inst_3) f) C₁) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C₂ C₁))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_comp_le_of_le NormedAddGroupHom.norm_comp_le_of_leₓ'. -/
theorem norm_comp_le_of_le {g : NormedAddGroupHom V₂ V₃} {C₁ C₂ : ℝ} (hg : ‖g‖ ≤ C₂)
(hf : ‖f‖ ≤ C₁) : ‖g.comp f‖ ≤ C₂ * C₁ :=
le_trans (norm_comp_le g f) <| mul_le_mul hg hf (norm_nonneg _) (le_trans (norm_nonneg _) hg)
#align normed_add_group_hom.norm_comp_le_of_le NormedAddGroupHom.norm_comp_le_of_le
+/- warning: normed_add_group_hom.norm_comp_le_of_le' -> NormedAddGroupHom.norm_comp_le_of_le' is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4} (C₁ : Real) (C₂ : Real) (C₃ : Real), (Eq.{1} Real C₃ (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) C₂ C₁)) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u2, u3} V₂ V₃ _inst_3 _inst_4) g) C₂) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₂ _inst_2 _inst_3) f) C₁) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) C₃)
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u3} V₂] [_inst_4 : SeminormedAddCommGroup.{u2} V₃] {f : NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3} {g : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4} (C₁ : Real) (C₂ : Real) (C₃ : Real), (Eq.{1} Real C₃ (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) C₂ C₁)) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasOpNorm.{u3, u2} V₂ V₃ _inst_3 _inst_4) g) C₂) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u3} V₁ V₂ _inst_2 _inst_3) f) C₁) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) C₃)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_comp_le_of_le' NormedAddGroupHom.norm_comp_le_of_le'ₓ'. -/
theorem norm_comp_le_of_le' {g : NormedAddGroupHom V₂ V₃} (C₁ C₂ C₃ : ℝ) (h : C₃ = C₂ * C₁)
(hg : ‖g‖ ≤ C₂) (hf : ‖f‖ ≤ C₁) : ‖g.comp f‖ ≤ C₃ :=
by
@@ -668,6 +1070,12 @@ theorem norm_comp_le_of_le' {g : NormedAddGroupHom V₂ V₃} (C₁ C₂ C₃ :
exact norm_comp_le_of_le hg hf
#align normed_add_group_hom.norm_comp_le_of_le' NormedAddGroupHom.norm_comp_le_of_le'
+/- warning: normed_add_group_hom.comp_hom -> NormedAddGroupHom.compHom is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃], AddMonoidHom.{max u2 u3, max (max u1 u3) u1 u2} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (AddMonoidHom.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddMonoid.toAddZeroClass.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (SubNegMonoid.toAddMonoid.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (AddGroup.toSubNegMonoid.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (SeminormedAddGroup.toAddGroup.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u2, u3} V₂ V₃ _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{max (max u1 u3) u1 u2} (AddMonoidHom.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (SubNegMonoid.toAddMonoid.{max (max u1 u3) u1 u2} (AddMonoidHom.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddGroup.toSubNegMonoid.{max (max u1 u3) u1 u2} (AddMonoidHom.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddCommGroup.toAddGroup.{max (max u1 u3) u1 u2} (AddMonoidHom.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddMonoidHom.addCommGroup.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (NormedAddGroupHom.addCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃], AddMonoidHom.{max u3 u2, max (max u3 u1) u2 u1} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (AddMonoidHom.{max u2 u1, max u3 u1} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddMonoid.toAddZeroClass.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (SubNegMonoid.toAddMonoid.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (AddGroup.toSubNegMonoid.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (SeminormedAddGroup.toAddGroup.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u2, u3} V₂ V₃ _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{max (max u1 u2) u3} (AddMonoidHom.{max u2 u1, max u3 u1} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (SubNegMonoid.toAddMonoid.{max (max u1 u2) u3} (AddMonoidHom.{max u2 u1, max u3 u1} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddGroup.toSubNegMonoid.{max (max u1 u2) u3} (AddMonoidHom.{max u2 u1, max u3 u1} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddCommGroup.toAddGroup.{max (max u1 u2) u3} (AddMonoidHom.{max u2 u1, max u3 u1} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (AddMonoid.toAddZeroClass.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SubNegMonoid.toAddMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddGroup.toSubNegMonoid.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddGroup.toAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))) (AddMonoidHom.addCommGroup.{max u1 u2, max u1 u3} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (AddMonoid.toAddZeroClass.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SubNegMonoid.toAddMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (AddGroup.toSubNegMonoid.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddGroup.toAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (SeminormedAddCommGroup.toSeminormedAddGroup.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.toSeminormedAddCommGroup.{u1, u2} V₁ V₂ _inst_2 _inst_3)))))) (NormedAddGroupHom.toAddCommGroup.{u1, u3} V₁ V₃ _inst_2 _inst_4))))))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.comp_hom NormedAddGroupHom.compHomₓ'. -/
/-- Composition of normed groups hom as an additive group morphism. -/
def compHom : NormedAddGroupHom V₂ V₃ →+ NormedAddGroupHom V₁ V₂ →+ NormedAddGroupHom V₁ V₃ :=
AddMonoidHom.mk'
@@ -684,6 +1092,12 @@ def compHom : NormedAddGroupHom V₂ V₃ →+ NormedAddGroupHom V₁ V₂ →+
AddMonoidHom.mk'_apply, coe_add])
#align normed_add_group_hom.comp_hom NormedAddGroupHom.compHom
+/- warning: normed_add_group_hom.comp_zero -> NormedAddGroupHom.comp_zero is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4), Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 f (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ _inst_2 _inst_3))))) (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) 0 (OfNat.mk.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) 0 (Zero.zero.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasZero.{u1, u3} V₁ V₃ _inst_2 _inst_4))))
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u3} V₂] [_inst_4 : SeminormedAddCommGroup.{u2} V₃] (f : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_3 _inst_4), Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 f (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) 0 (Zero.toOfNat0.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_2 _inst_3) (NormedAddGroupHom.zero.{u1, u3} V₁ V₂ _inst_2 _inst_3)))) (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) 0 (Zero.toOfNat0.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.zero.{u1, u2} V₁ V₃ _inst_2 _inst_4)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.comp_zero NormedAddGroupHom.comp_zeroₓ'. -/
@[simp]
theorem comp_zero (f : NormedAddGroupHom V₂ V₃) : f.comp (0 : NormedAddGroupHom V₁ V₂) = 0 :=
by
@@ -691,6 +1105,12 @@ theorem comp_zero (f : NormedAddGroupHom V₂ V₃) : f.comp (0 : NormedAddGroup
exact map_zero f
#align normed_add_group_hom.comp_zero NormedAddGroupHom.comp_zero
+/- warning: normed_add_group_hom.zero_comp -> NormedAddGroupHom.zero_comp is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 (OfNat.ofNat.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) 0 (OfNat.mk.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) 0 (Zero.zero.{max u2 u3} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.hasZero.{u2, u3} V₂ V₃ _inst_3 _inst_4)))) f) (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) 0 (OfNat.mk.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) 0 (Zero.zero.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.hasZero.{u1, u3} V₁ V₃ _inst_2 _inst_4))))
+but is expected to have type
+ forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} {V₃ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u1} V₃] (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3), Eq.{max (succ u3) (succ u1)} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4) (NormedAddGroupHom.zero.{u2, u1} V₂ V₃ _inst_3 _inst_4))) f) (OfNat.ofNat.{max u3 u1} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) 0 (Zero.toOfNat0.{max u3 u1} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.zero.{u3, u1} V₁ V₃ _inst_2 _inst_4)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.zero_comp NormedAddGroupHom.zero_compₓ'. -/
@[simp]
theorem zero_comp (f : NormedAddGroupHom V₁ V₂) : (0 : NormedAddGroupHom V₂ V₃).comp f = 0 :=
by
@@ -698,13 +1118,21 @@ theorem zero_comp (f : NormedAddGroupHom V₁ V₂) : (0 : NormedAddGroupHom V
rfl
#align normed_add_group_hom.zero_comp NormedAddGroupHom.zero_comp
+#print NormedAddGroupHom.comp_assoc /-
theorem comp_assoc {V₄ : Type _} [SeminormedAddCommGroup V₄] (h : NormedAddGroupHom V₃ V₄)
(g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁ V₂) :
(h.comp g).comp f = h.comp (g.comp f) := by
ext
rfl
#align normed_add_group_hom.comp_assoc NormedAddGroupHom.comp_assoc
+-/
+/- warning: normed_add_group_hom.coe_comp -> NormedAddGroupHom.coe_comp is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_2 : SeminormedAddCommGroup.{u1} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4), Eq.{max (succ u1) (succ u3)} ((fun (_x : NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) => V₁ -> V₃) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) (fun (_x : NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_2 _inst_4) => V₁ -> V₃) (NormedAddGroupHom.hasCoeToFun.{u1, u3} V₁ V₃ _inst_2 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (Function.comp.{succ u1, succ u2, succ u3} V₁ V₂ V₃ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) (fun (_x : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_3 _inst_4) => V₂ -> V₃) (NormedAddGroupHom.hasCoeToFun.{u2, u3} V₂ V₃ _inst_3 _inst_4) g) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_2 _inst_3) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_2 _inst_3) f))
+but is expected to have type
+ forall {V₁ : Type.{u3}} {V₂ : Type.{u2}} {V₃ : Type.{u1}} [_inst_2 : SeminormedAddCommGroup.{u3} V₁] [_inst_3 : SeminormedAddCommGroup.{u2} V₂] [_inst_4 : SeminormedAddCommGroup.{u1} V₃] (f : NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) (g : NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4), Eq.{max (succ u3) (succ u1)} (V₁ -> V₃) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) V₁ (fun (_x : V₁) => V₃) (AddHomClass.toFunLike.{max u3 u1, u3, u1} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) V₁ V₃ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u1} V₃ (AddMonoid.toAddZeroClass.{u1} V₃ (SubNegMonoid.toAddMonoid.{u1} V₃ (AddGroup.toSubNegMonoid.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u1, u3, u1} (NormedAddGroupHom.{u3, u1} V₁ V₃ _inst_2 _inst_4) V₁ V₃ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u1} V₃ (SubNegMonoid.toAddMonoid.{u1} V₃ (AddGroup.toSubNegMonoid.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u1} V₁ V₃ _inst_2 _inst_4))) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V₂ V₃ _inst_2 _inst_3 _inst_4 g f)) (Function.comp.{succ u3, succ u2, succ u1} V₁ V₂ V₃ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4) V₂ (fun (_x : V₂) => V₃) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4) V₂ V₃ (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddZeroClass.toAdd.{u1} V₃ (AddMonoid.toAddZeroClass.{u1} V₃ (SubNegMonoid.toAddMonoid.{u1} V₃ (AddGroup.toSubNegMonoid.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₂ V₃ _inst_3 _inst_4) V₂ V₃ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (AddMonoid.toAddZeroClass.{u1} V₃ (SubNegMonoid.toAddMonoid.{u1} V₃ (AddGroup.toSubNegMonoid.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₂ V₃ _inst_3 _inst_4))) g) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddZeroClass.toAdd.{u3} V₁ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₁ V₂ _inst_2 _inst_3) V₁ V₂ (AddMonoid.toAddZeroClass.{u3} V₁ (SubNegMonoid.toAddMonoid.{u3} V₁ (AddGroup.toSubNegMonoid.{u3} V₁ (SeminormedAddGroup.toAddGroup.{u3} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₁ _inst_2))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₁ V₂ _inst_2 _inst_3))) f))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_comp NormedAddGroupHom.coe_compₓ'. -/
theorem coe_comp (f : NormedAddGroupHom V₁ V₂) (g : NormedAddGroupHom V₂ V₃) :
(g.comp f : V₁ → V₃) = (g : V₂ → V₃) ∘ (f : V₁ → V₂) :=
rfl
@@ -717,6 +1145,12 @@ namespace NormedAddGroupHom
variable {V W V₁ V₂ V₃ : Type _} [SeminormedAddCommGroup V] [SeminormedAddCommGroup W]
[SeminormedAddCommGroup V₁] [SeminormedAddCommGroup V₂] [SeminormedAddCommGroup V₃]
+/- warning: normed_add_group_hom.incl -> NormedAddGroupHom.incl is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} V] (s : AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))), NormedAddGroupHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) s) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 s) _inst_1
+but is expected to have type
+ forall {V : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} V] (s : AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))), NormedAddGroupHom.{u1, u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x s)) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 s) _inst_1
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.incl NormedAddGroupHom.inclₓ'. -/
/-- The inclusion of an `add_subgroup`, as bounded group homomorphism. -/
@[simps]
def incl (s : AddSubgroup V) : NormedAddGroupHom s V
@@ -729,6 +1163,12 @@ def incl (s : AddSubgroup V) : NormedAddGroupHom s V
rfl⟩
#align normed_add_group_hom.incl NormedAddGroupHom.incl
+/- warning: normed_add_group_hom.norm_incl -> NormedAddGroupHom.norm_incl is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} V] {V' : AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))} (x : coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V'), Eq.{1} Real (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) (coeFn.{succ u1, succ u1} (NormedAddGroupHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V') V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1) (fun (_x : NormedAddGroupHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V') V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1) => (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V') -> V) (NormedAddGroupHom.hasCoeToFun.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V') V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1) (NormedAddGroupHom.incl.{u1} V _inst_1 V') x)) (Norm.norm.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V') (SeminormedAddCommGroup.toHasNorm.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) V') (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V')) x)
+but is expected to have type
+ forall {V : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} V] {V' : AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))} (x : Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')), Eq.{1} Real (Norm.norm.{u1} V (SeminormedAddCommGroup.toNorm.{u1} V _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (NormedAddGroupHom.{u1, u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1) (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (fun (_x : Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) => V) (AddHomClass.toFunLike.{u1, u1, u1} (NormedAddGroupHom.{u1, u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1) (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) V (AddZeroClass.toAdd.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (AddMonoid.toAddZeroClass.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SubNegMonoid.toAddMonoid.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (AddGroup.toSubNegMonoid.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SeminormedAddGroup.toAddGroup.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V'))))))) (AddZeroClass.toAdd.{u1} V (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (NormedAddGroupHom.{u1, u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1) (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) V (AddMonoid.toAddZeroClass.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SubNegMonoid.toAddMonoid.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (AddGroup.toSubNegMonoid.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SeminormedAddGroup.toAddGroup.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V')))))) (AddMonoid.toAddZeroClass.{u1} V (SubNegMonoid.toAddMonoid.{u1} V (AddGroup.toSubNegMonoid.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V') _inst_1))) (NormedAddGroupHom.incl.{u1} V _inst_1 V') x)) (Norm.norm.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (SeminormedAddCommGroup.toNorm.{u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x V')) (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 V')) x)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_incl NormedAddGroupHom.norm_inclₓ'. -/
theorem norm_incl {V' : AddSubgroup V} (x : V') : ‖incl _ x‖ = ‖x‖ :=
rfl
#align normed_add_group_hom.norm_incl NormedAddGroupHom.norm_incl
@@ -740,18 +1180,32 @@ section Kernels
variable (f : NormedAddGroupHom V₁ V₂) (g : NormedAddGroupHom V₂ V₃)
+#print NormedAddGroupHom.ker /-
/-- The kernel of a bounded group homomorphism. Naturally endowed with a
`seminormed_add_comm_group` instance. -/
def ker : AddSubgroup V₁ :=
f.toAddMonoidHom.ker
#align normed_add_group_hom.ker NormedAddGroupHom.ker
+-/
+/- warning: normed_add_group_hom.mem_ker -> NormedAddGroupHom.mem_ker is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (v : V₁), Iff (Membership.Mem.{u1, u1} V₁ (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) v (NormedAddGroupHom.ker.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)) (Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_3 _inst_4) f v) (OfNat.ofNat.{u2} V₂ 0 (OfNat.mk.{u2} V₂ 0 (Zero.zero.{u2} V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))))))))))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (v : V₁), Iff (Membership.mem.{u2, u2} V₁ (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))) v (NormedAddGroupHom.ker.{u2, u1} V₁ V₂ _inst_3 _inst_4 f)) (Eq.{succ u1} V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_3 _inst_4))) f v) (OfNat.ofNat.{u1} V₂ 0 (Zero.toOfNat0.{u1} V₂ (NegZeroClass.toZero.{u1} V₂ (SubNegZeroMonoid.toNegZeroClass.{u1} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u1} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u1} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_4)))))))))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mem_ker NormedAddGroupHom.mem_kerₓ'. -/
theorem mem_ker (v : V₁) : v ∈ f.ker ↔ f v = 0 :=
by
erw [f.to_add_monoid_hom.mem_ker]
rfl
#align normed_add_group_hom.mem_ker NormedAddGroupHom.mem_ker
+/- warning: normed_add_group_hom.ker.lift -> NormedAddGroupHom.ker.lift is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5), (Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f) (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) 0 (OfNat.mk.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) 0 (Zero.zero.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.hasZero.{u1, u3} V₁ V₃ _inst_3 _inst_5))))) -> (NormedAddGroupHom.{u1, u2} V₁ (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g)) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g)))
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5), (Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f) (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) 0 (Zero.toOfNat0.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.zero.{u1, u3} V₁ V₃ _inst_3 _inst_5)))) -> (NormedAddGroupHom.{u1, u2} V₁ (Subtype.{succ u2} V₂ (fun (x : V₂) => Membership.mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) x (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g))) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.ker.lift NormedAddGroupHom.ker.liftₓ'. -/
/-- Given a normed group hom `f : V₁ → V₂` satisfying `g.comp f = 0` for some `g : V₂ → V₃`,
the corestriction of `f` to the kernel of `g`. -/
@[simps]
@@ -769,6 +1223,12 @@ def ker.lift (h : g.comp f = 0) : NormedAddGroupHom V₁ g.ker
bound' := f.bound'
#align normed_add_group_hom.ker.lift NormedAddGroupHom.ker.lift
+/- warning: normed_add_group_hom.ker.incl_comp_lift -> NormedAddGroupHom.ker.incl_comp_lift is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5) (h : Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f) (OfNat.ofNat.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) 0 (OfNat.mk.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) 0 (Zero.zero.{max u1 u3} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.hasZero.{u1, u3} V₁ V₃ _inst_3 _inst_5))))), Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.comp.{u1, u2, u2} V₁ (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g)) V₂ _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g)) _inst_4 (NormedAddGroupHom.incl.{u2} V₂ _inst_4 (NormedAddGroupHom.ker.{u2, u3} V₂ V₃ _inst_4 _inst_5 g)) (NormedAddGroupHom.ker.lift.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 f g h)) f
+but is expected to have type
+ forall {V₁ : Type.{u3}} {V₂ : Type.{u1}} {V₃ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u3} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] [_inst_5 : SeminormedAddCommGroup.{u2} V₃] (f : NormedAddGroupHom.{u3, u1} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u1, u2} V₂ V₃ _inst_4 _inst_5) (h : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f) (OfNat.ofNat.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₁ V₃ _inst_3 _inst_5) 0 (Zero.toOfNat0.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.zero.{u3, u2} V₁ V₃ _inst_3 _inst_5)))), Eq.{max (succ u3) (succ u1)} (NormedAddGroupHom.{u3, u1} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.comp.{u3, u1, u1} V₁ (Subtype.{succ u1} V₂ (fun (x : V₂) => Membership.mem.{u1, u1} V₂ (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))) x (NormedAddGroupHom.ker.{u1, u2} V₂ V₃ _inst_4 _inst_5 g))) V₂ _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V₂ _inst_4 (NormedAddGroupHom.ker.{u1, u2} V₂ V₃ _inst_4 _inst_5 g)) _inst_4 (NormedAddGroupHom.incl.{u1} V₂ _inst_4 (NormedAddGroupHom.ker.{u1, u2} V₂ V₃ _inst_4 _inst_5 g)) (NormedAddGroupHom.ker.lift.{u3, u1, u2} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 f g h)) f
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.ker.incl_comp_lift NormedAddGroupHom.ker.incl_comp_liftₓ'. -/
@[simp]
theorem ker.incl_comp_lift (h : g.comp f = 0) : (incl g.ker).comp (ker.lift f g h) = f :=
by
@@ -776,6 +1236,12 @@ theorem ker.incl_comp_lift (h : g.comp f = 0) : (incl g.ker).comp (ker.lift f g
rfl
#align normed_add_group_hom.ker.incl_comp_lift NormedAddGroupHom.ker.incl_comp_lift
+/- warning: normed_add_group_hom.ker_zero -> NormedAddGroupHom.ker_zero is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂], Eq.{succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (NormedAddGroupHom.ker.{u1, u2} V₁ V₂ _inst_3 _inst_4 (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ _inst_3 _inst_4))))) (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.hasTop.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂], Eq.{succ u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (NormedAddGroupHom.ker.{u2, u1} V₁ V₂ _inst_3 _inst_4 (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.zero.{u2, u1} V₁ V₂ _inst_3 _inst_4)))) (Top.top.{u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.ker_zero NormedAddGroupHom.ker_zeroₓ'. -/
@[simp]
theorem ker_zero : (0 : NormedAddGroupHom V₁ V₂).ker = ⊤ :=
by
@@ -783,10 +1249,22 @@ theorem ker_zero : (0 : NormedAddGroupHom V₁ V₂).ker = ⊤ :=
simp [mem_ker]
#align normed_add_group_hom.ker_zero NormedAddGroupHom.ker_zero
+/- warning: normed_add_group_hom.coe_ker -> NormedAddGroupHom.coe_ker is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4), Eq.{succ u1} (Set.{u1} V₁) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (Set.{u1} V₁) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (Set.{u1} V₁) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (Set.{u1} V₁) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (NormedAddGroupHom.ker.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)) (Set.preimage.{u1, u2} V₁ V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_3 _inst_4) f) (Singleton.singleton.{u2, u2} V₂ (Set.{u2} V₂) (Set.hasSingleton.{u2} V₂) (OfNat.ofNat.{u2} V₂ 0 (OfNat.mk.{u2} V₂ 0 (Zero.zero.{u2} V₂ (AddZeroClass.toHasZero.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))))))))))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4), Eq.{succ u2} (Set.{u2} V₁) (SetLike.coe.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (NormedAddGroupHom.ker.{u2, u1} V₁ V₂ _inst_3 _inst_4 f)) (Set.preimage.{u2, u1} V₁ V₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddZeroClass.toAdd.{u2} V₁ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u1} V₂ (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddMonoid.toAddZeroClass.{u2} V₁ (SubNegMonoid.toAddMonoid.{u2} V₁ (AddGroup.toSubNegMonoid.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u1} V₂ (SubNegMonoid.toAddMonoid.{u1} V₂ (AddGroup.toSubNegMonoid.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V₁ V₂ _inst_3 _inst_4))) f) (Singleton.singleton.{u1, u1} V₂ (Set.{u1} V₂) (Set.instSingletonSet.{u1} V₂) (OfNat.ofNat.{u1} V₂ 0 (Zero.toOfNat0.{u1} V₂ (NegZeroClass.toZero.{u1} V₂ (SubNegZeroMonoid.toNegZeroClass.{u1} V₂ (SubtractionMonoid.toSubNegZeroMonoid.{u1} V₂ (SubtractionCommMonoid.toSubtractionMonoid.{u1} V₂ (AddCommGroup.toDivisionAddCommMonoid.{u1} V₂ (SeminormedAddCommGroup.toAddCommGroup.{u1} V₂ _inst_4))))))))))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.coe_ker NormedAddGroupHom.coe_kerₓ'. -/
theorem coe_ker : (f.ker : Set V₁) = (f : V₁ → V₂) ⁻¹' {0} :=
rfl
#align normed_add_group_hom.coe_ker NormedAddGroupHom.coe_ker
+/- warning: normed_add_group_hom.is_closed_ker -> NormedAddGroupHom.isClosed_ker is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] {V₂ : Type.{u2}} [_inst_6 : NormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)), IsClosed.{u1} V₁ (UniformSpace.toTopologicalSpace.{u1} V₁ (PseudoMetricSpace.toUniformSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_3))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (Set.{u1} V₁) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (Set.{u1} V₁) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (Set.{u1} V₁) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (NormedAddGroupHom.ker.{u1, u2} V₁ V₂ _inst_3 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6) f))
+but is expected to have type
+ forall {V₁ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] {V₂ : Type.{u2}} [_inst_6 : NormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6)), IsClosed.{u1} V₁ (UniformSpace.toTopologicalSpace.{u1} V₁ (PseudoMetricSpace.toUniformSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_3))) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (NormedAddGroupHom.ker.{u1, u2} V₁ V₂ _inst_3 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} V₂ _inst_6) f))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.is_closed_ker NormedAddGroupHom.isClosed_kerₓ'. -/
theorem isClosed_ker {V₂ : Type _} [NormedAddCommGroup V₂] (f : NormedAddGroupHom V₁ V₂) :
IsClosed (f.ker : Set V₁) :=
f.coe_ker ▸ IsClosed.preimage f.Continuous (T1Space.t1 0)
@@ -801,35 +1279,67 @@ section Range
variable (f : NormedAddGroupHom V₁ V₂) (g : NormedAddGroupHom V₂ V₃)
+#print NormedAddGroupHom.range /-
/-- The image of a bounded group homomorphism. Naturally endowed with a
`seminormed_add_comm_group` instance. -/
def range : AddSubgroup V₂ :=
f.toAddMonoidHom.range
#align normed_add_group_hom.range NormedAddGroupHom.range
+-/
+/- warning: normed_add_group_hom.mem_range -> NormedAddGroupHom.mem_range is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (v : V₂), Iff (Membership.Mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.hasMem.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) v (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)) (Exists.{succ u1} V₁ (fun (w : V₁) => Eq.{succ u2} V₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_3 _inst_4) f w) v))
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (v : V₂), Iff (Membership.mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) v (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)) (Exists.{succ u1} V₁ (fun (w : V₁) => Eq.{succ u2} V₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_3 _inst_4))) f w) v))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mem_range NormedAddGroupHom.mem_rangeₓ'. -/
theorem mem_range (v : V₂) : v ∈ f.range ↔ ∃ w, f w = v :=
by
rw [range, AddMonoidHom.mem_range]
rfl
#align normed_add_group_hom.mem_range NormedAddGroupHom.mem_range
+/- warning: normed_add_group_hom.mem_range_self -> NormedAddGroupHom.mem_range_self is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (v : V₁), Membership.Mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.hasMem.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_3 _inst_4) f v) (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (v : V₁), Membership.mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u2} V₂ (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u2} V₂ (SubNegMonoid.toAddMonoid.{u2} V₂ (AddGroup.toSubNegMonoid.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₂ _inst_3 _inst_4))) f v) (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.mem_range_self NormedAddGroupHom.mem_range_selfₓ'. -/
@[simp]
theorem mem_range_self (v : V₁) : f v ∈ f.range :=
⟨v, rfl⟩
#align normed_add_group_hom.mem_range_self NormedAddGroupHom.mem_range_self
+/- warning: normed_add_group_hom.comp_range -> NormedAddGroupHom.comp_range is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5), Eq.{succ u3} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) (NormedAddGroupHom.range.{u1, u3} V₁ V₃ _inst_3 _inst_5 (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f)) (AddSubgroup.map.{u2, u3} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)) V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5)) (NormedAddGroupHom.toAddMonoidHom.{u2, u3} V₂ V₃ _inst_4 _inst_5 g) (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] (f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (g : NormedAddGroupHom.{u1, u3} V₂ V₃ _inst_4 _inst_5), Eq.{succ u3} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) (NormedAddGroupHom.range.{u2, u3} V₁ V₃ _inst_3 _inst_5 (NormedAddGroupHom.comp.{u2, u1, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f)) (AddSubgroup.map.{u1, u3} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)) V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5)) (NormedAddGroupHom.toAddMonoidHom.{u1, u3} V₂ V₃ _inst_4 _inst_5 g) (NormedAddGroupHom.range.{u2, u1} V₁ V₂ _inst_3 _inst_4 f))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.comp_range NormedAddGroupHom.comp_rangeₓ'. -/
theorem comp_range : (g.comp f).range = AddSubgroup.map g.toAddMonoidHom f.range :=
by
erw [AddMonoidHom.map_range]
rfl
#align normed_add_group_hom.comp_range NormedAddGroupHom.comp_range
+/- warning: normed_add_group_hom.incl_range -> NormedAddGroupHom.incl_range is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] (s : AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))), Eq.{succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (NormedAddGroupHom.range.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) s) V₁ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 s) _inst_3 (NormedAddGroupHom.incl.{u1} V₁ _inst_3 s)) s
+but is expected to have type
+ forall {V₁ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] (s : AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))), Eq.{succ u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (NormedAddGroupHom.range.{u1, u1} (Subtype.{succ u1} V₁ (fun (x : V₁) => Membership.mem.{u1, u1} V₁ (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) x s)) V₁ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 s) _inst_3 (NormedAddGroupHom.incl.{u1} V₁ _inst_3 s)) s
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.incl_range NormedAddGroupHom.incl_rangeₓ'. -/
theorem incl_range (s : AddSubgroup V₁) : (incl s).range = s :=
by
ext x
exact ⟨fun ⟨y, hy⟩ => by rw [← hy] <;> simp, fun hx => ⟨⟨x, hx⟩, by simp⟩⟩
#align normed_add_group_hom.incl_range NormedAddGroupHom.incl_range
+/- warning: normed_add_group_hom.range_comp_incl_top -> NormedAddGroupHom.range_comp_incl_top is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4), Eq.{succ u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (NormedAddGroupHom.range.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.hasTop.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.hasTop.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) _inst_4 (NormedAddGroupHom.comp.{u1, u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.hasTop.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) V₁ V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.hasTop.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) _inst_3 _inst_4 f (NormedAddGroupHom.incl.{u1} V₁ _inst_3 (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.hasTop.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))))) (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] (f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4), Eq.{succ u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (NormedAddGroupHom.range.{u1, u2} (Subtype.{succ u1} V₁ (fun (x : V₁) => Membership.mem.{u1, u1} V₁ (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) x (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) _inst_4 (NormedAddGroupHom.comp.{u1, u1, u2} (Subtype.{succ u1} V₁ (fun (x : V₁) => Membership.mem.{u1, u1} V₁ (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) x (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) V₁ V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) _inst_3 _inst_4 f (NormedAddGroupHom.incl.{u1} V₁ _inst_3 (Top.top.{u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (AddSubgroup.instTopAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))))) (NormedAddGroupHom.range.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.range_comp_incl_top NormedAddGroupHom.range_comp_incl_topₓ'. -/
@[simp]
theorem range_comp_incl_top : (f.comp (incl (⊤ : AddSubgroup V₁))).range = f.range := by
simpa [comp_range, incl_range, ← AddMonoidHom.range_eq_map]
@@ -839,13 +1349,21 @@ end Range
variable {f : NormedAddGroupHom V W}
+#print NormedAddGroupHom.NormNoninc /-
/-- A `normed_add_group_hom` is *norm-nonincreasing* if `‖f v‖ ≤ ‖v‖` for all `v`. -/
def NormNoninc (f : NormedAddGroupHom V W) : Prop :=
∀ v, ‖f v‖ ≤ ‖v‖
#align normed_add_group_hom.norm_noninc NormedAddGroupHom.NormNoninc
+-/
namespace NormNoninc
+/- warning: normed_add_group_hom.norm_noninc.norm_noninc_iff_norm_le_one -> NormedAddGroupHom.NormNoninc.normNoninc_iff_norm_le_one is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2}, Iff (NormedAddGroupHom.NormNoninc.{u1, u2} V W _inst_1 _inst_2 f) (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (NormedAddGroupHom.hasOpNorm.{u1, u2} V W _inst_1 _inst_2) f) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
+but is expected to have type
+ forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2}, Iff (NormedAddGroupHom.NormNoninc.{u2, u1} V W _inst_1 _inst_2 f) (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) (NormedAddGroupHom.hasOpNorm.{u2, u1} V W _inst_1 _inst_2) f) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_noninc.norm_noninc_iff_norm_le_one NormedAddGroupHom.NormNoninc.normNoninc_iff_norm_le_oneₓ'. -/
theorem normNoninc_iff_norm_le_one : f.NormNoninc ↔ ‖f‖ ≤ 1 :=
by
refine' ⟨fun h => _, fun h => fun v => _⟩
@@ -854,16 +1372,36 @@ theorem normNoninc_iff_norm_le_one : f.NormNoninc ↔ ‖f‖ ≤ 1 :=
· simpa using le_of_op_norm_le f h v
#align normed_add_group_hom.norm_noninc.norm_noninc_iff_norm_le_one NormedAddGroupHom.NormNoninc.normNoninc_iff_norm_le_one
+/- warning: normed_add_group_hom.norm_noninc.zero -> NormedAddGroupHom.NormNoninc.zero is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂], NormedAddGroupHom.NormNoninc.{u1, u2} V₁ V₂ _inst_3 _inst_4 (OfNat.ofNat.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) 0 (OfNat.mk.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) 0 (Zero.zero.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.hasZero.{u1, u2} V₁ V₂ _inst_3 _inst_4))))
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂], NormedAddGroupHom.NormNoninc.{u2, u1} V₁ V₂ _inst_3 _inst_4 (OfNat.ofNat.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) 0 (Zero.toOfNat0.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.zero.{u2, u1} V₁ V₂ _inst_3 _inst_4)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_noninc.zero NormedAddGroupHom.NormNoninc.zeroₓ'. -/
theorem zero : (0 : NormedAddGroupHom V₁ V₂).NormNoninc := fun v => by simp
#align normed_add_group_hom.norm_noninc.zero NormedAddGroupHom.NormNoninc.zero
+#print NormedAddGroupHom.NormNoninc.id /-
theorem id : (id V).NormNoninc := fun v => le_rfl
#align normed_add_group_hom.norm_noninc.id NormedAddGroupHom.NormNoninc.id
+-/
+/- warning: normed_add_group_hom.norm_noninc.comp -> NormedAddGroupHom.NormNoninc.comp is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] {g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5} {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4}, (NormedAddGroupHom.NormNoninc.{u2, u3} V₂ V₃ _inst_4 _inst_5 g) -> (NormedAddGroupHom.NormNoninc.{u1, u2} V₁ V₂ _inst_3 _inst_4 f) -> (NormedAddGroupHom.NormNoninc.{u1, u3} V₁ V₃ _inst_3 _inst_5 (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f))
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u3} V₂] [_inst_5 : SeminormedAddCommGroup.{u2} V₃] {g : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_4 _inst_5} {f : NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_3 _inst_4}, (NormedAddGroupHom.NormNoninc.{u3, u2} V₂ V₃ _inst_4 _inst_5 g) -> (NormedAddGroupHom.NormNoninc.{u1, u3} V₁ V₂ _inst_3 _inst_4 f) -> (NormedAddGroupHom.NormNoninc.{u1, u2} V₁ V₃ _inst_3 _inst_5 (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_noninc.comp NormedAddGroupHom.NormNoninc.compₓ'. -/
theorem comp {g : NormedAddGroupHom V₂ V₃} {f : NormedAddGroupHom V₁ V₂} (hg : g.NormNoninc)
(hf : f.NormNoninc) : (g.comp f).NormNoninc := fun v => (hg (f v)).trans (hf v)
#align normed_add_group_hom.norm_noninc.comp NormedAddGroupHom.NormNoninc.comp
+/- warning: normed_add_group_hom.norm_noninc.neg_iff -> NormedAddGroupHom.NormNoninc.neg_iff is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4}, Iff (NormedAddGroupHom.NormNoninc.{u1, u2} V₁ V₂ _inst_3 _inst_4 (Neg.neg.{max u1 u2} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.hasNeg.{u1, u2} V₁ V₂ _inst_3 _inst_4) f)) (NormedAddGroupHom.NormNoninc.{u1, u2} V₁ V₂ _inst_3 _inst_4 f)
+but is expected to have type
+ forall {V₁ : Type.{u2}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] {f : NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4}, Iff (NormedAddGroupHom.NormNoninc.{u2, u1} V₁ V₂ _inst_3 _inst_4 (Neg.neg.{max u2 u1} (NormedAddGroupHom.{u2, u1} V₁ V₂ _inst_3 _inst_4) (NormedAddGroupHom.neg.{u2, u1} V₁ V₂ _inst_3 _inst_4) f)) (NormedAddGroupHom.NormNoninc.{u2, u1} V₁ V₂ _inst_3 _inst_4 f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_noninc.neg_iff NormedAddGroupHom.NormNoninc.neg_iffₓ'. -/
@[simp]
theorem neg_iff {f : NormedAddGroupHom V₁ V₂} : (-f).NormNoninc ↔ f.NormNoninc :=
⟨fun h x => by simpa using h x, fun h x => (norm_neg (f x)).le.trans (h x)⟩
@@ -873,19 +1411,39 @@ end NormNoninc
section Isometry
+/- warning: normed_add_group_hom.norm_eq_of_isometry -> NormedAddGroupHom.norm_eq_of_isometry is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2}, (Isometry.{u1, u2} V W (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V _inst_1)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} W (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} W _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (fun (_x : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) => V -> W) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V W _inst_1 _inst_2) f)) -> (forall (v : V), Eq.{1} Real (Norm.norm.{u2} W (SeminormedAddCommGroup.toHasNorm.{u2} W _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (fun (_x : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) => V -> W) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V W _inst_1 _inst_2) f v)) (Norm.norm.{u1} V (SeminormedAddCommGroup.toHasNorm.{u1} V _inst_1) v))
+but is expected to have type
+ forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2}, (Isometry.{u2, u1} V W (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V _inst_1)) (PseudoMetricSpace.toPseudoEMetricSpace.{u1} W (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} W _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V (fun (_x : V) => W) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V W (AddZeroClass.toAdd.{u2} V (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))))) (AddZeroClass.toAdd.{u1} W (AddMonoid.toAddZeroClass.{u1} W (SubNegMonoid.toAddMonoid.{u1} W (AddGroup.toSubNegMonoid.{u1} W (SeminormedAddGroup.toAddGroup.{u1} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V W (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))))) (AddMonoid.toAddZeroClass.{u1} W (SubNegMonoid.toAddMonoid.{u1} W (AddGroup.toSubNegMonoid.{u1} W (SeminormedAddGroup.toAddGroup.{u1} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} W _inst_2))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V W _inst_1 _inst_2))) f)) -> (forall (v : V), Eq.{1} Real (Norm.norm.{u1} W (SeminormedAddCommGroup.toNorm.{u1} W _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V (fun (_x : V) => W) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V W (AddZeroClass.toAdd.{u2} V (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))))) (AddZeroClass.toAdd.{u1} W (AddMonoid.toAddZeroClass.{u1} W (SubNegMonoid.toAddMonoid.{u1} W (AddGroup.toSubNegMonoid.{u1} W (SeminormedAddGroup.toAddGroup.{u1} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V W (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))))) (AddMonoid.toAddZeroClass.{u1} W (SubNegMonoid.toAddMonoid.{u1} W (AddGroup.toSubNegMonoid.{u1} W (SeminormedAddGroup.toAddGroup.{u1} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} W _inst_2))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V W _inst_1 _inst_2))) f v)) (Norm.norm.{u2} V (SeminormedAddCommGroup.toNorm.{u2} V _inst_1) v))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_eq_of_isometry NormedAddGroupHom.norm_eq_of_isometryₓ'. -/
theorem norm_eq_of_isometry {f : NormedAddGroupHom V W} (hf : Isometry f) (v : V) : ‖f v‖ = ‖v‖ :=
(AddMonoidHomClass.isometry_iff_norm f).mp hf v
#align normed_add_group_hom.norm_eq_of_isometry NormedAddGroupHom.norm_eq_of_isometry
+#print NormedAddGroupHom.isometry_id /-
theorem isometry_id : @Isometry V V _ _ (id V) :=
isometry_id
#align normed_add_group_hom.isometry_id NormedAddGroupHom.isometry_id
+-/
+/- warning: normed_add_group_hom.isometry_comp -> NormedAddGroupHom.isometry_comp is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] {g : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5} {f : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4}, (Isometry.{u2, u3} V₂ V₃ (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_4)) (PseudoMetricSpace.toPseudoEMetricSpace.{u3} V₃ (SeminormedAddCommGroup.toPseudoMetricSpace.{u3} V₃ _inst_5)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5) (fun (_x : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5) => V₂ -> V₃) (NormedAddGroupHom.hasCoeToFun.{u2, u3} V₂ V₃ _inst_4 _inst_5) g)) -> (Isometry.{u1, u2} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_3)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₂ _inst_4)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (fun (_x : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) => V₁ -> V₂) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V₁ V₂ _inst_3 _inst_4) f)) -> (Isometry.{u1, u3} V₁ V₃ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_3)) (PseudoMetricSpace.toPseudoEMetricSpace.{u3} V₃ (SeminormedAddCommGroup.toPseudoMetricSpace.{u3} V₃ _inst_5)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) (fun (_x : NormedAddGroupHom.{u1, u3} V₁ V₃ _inst_3 _inst_5) => V₁ -> V₃) (NormedAddGroupHom.hasCoeToFun.{u1, u3} V₁ V₃ _inst_3 _inst_5) (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f)))
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u3}} {V₃ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u3} V₂] [_inst_5 : SeminormedAddCommGroup.{u2} V₃] {g : NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_4 _inst_5} {f : NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_3 _inst_4}, (Isometry.{u3, u2} V₂ V₃ (PseudoMetricSpace.toPseudoEMetricSpace.{u3} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u3} V₂ _inst_4)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₃ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₃ _inst_5)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_4 _inst_5) V₂ (fun (_x : V₂) => V₃) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_4 _inst_5) V₂ V₃ (AddZeroClass.toAdd.{u3} V₂ (AddMonoid.toAddZeroClass.{u3} V₂ (SubNegMonoid.toAddMonoid.{u3} V₂ (AddGroup.toSubNegMonoid.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4)))))) (AddZeroClass.toAdd.{u2} V₃ (AddMonoid.toAddZeroClass.{u2} V₃ (SubNegMonoid.toAddMonoid.{u2} V₃ (AddGroup.toSubNegMonoid.{u2} V₃ (SeminormedAddGroup.toAddGroup.{u2} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₃ _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (NormedAddGroupHom.{u3, u2} V₂ V₃ _inst_4 _inst_5) V₂ V₃ (AddMonoid.toAddZeroClass.{u3} V₂ (SubNegMonoid.toAddMonoid.{u3} V₂ (AddGroup.toSubNegMonoid.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4))))) (AddMonoid.toAddZeroClass.{u2} V₃ (SubNegMonoid.toAddMonoid.{u2} V₃ (AddGroup.toSubNegMonoid.{u2} V₃ (SeminormedAddGroup.toAddGroup.{u2} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₃ _inst_5))))) (NormedAddGroupHom.toAddMonoidHomClass.{u3, u2} V₂ V₃ _inst_4 _inst_5))) g)) -> (Isometry.{u1, u3} V₁ V₂ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_3)) (PseudoMetricSpace.toPseudoEMetricSpace.{u3} V₂ (SeminormedAddCommGroup.toPseudoMetricSpace.{u3} V₂ _inst_4)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_3 _inst_4) V₁ (fun (_x : V₁) => V₂) (AddHomClass.toFunLike.{max u1 u3, u1, u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u3} V₂ (AddMonoid.toAddZeroClass.{u3} V₂ (SubNegMonoid.toAddMonoid.{u3} V₂ (AddGroup.toSubNegMonoid.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u1, u3} (NormedAddGroupHom.{u1, u3} V₁ V₂ _inst_3 _inst_4) V₁ V₂ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u3} V₂ (SubNegMonoid.toAddMonoid.{u3} V₂ (AddGroup.toSubNegMonoid.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u3} V₁ V₂ _inst_3 _inst_4))) f)) -> (Isometry.{u1, u2} V₁ V₃ (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V₁ (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V₁ _inst_3)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V₃ (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V₃ _inst_5)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_3 _inst_5) V₁ (fun (_x : V₁) => V₃) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_3 _inst_5) V₁ V₃ (AddZeroClass.toAdd.{u1} V₁ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))))) (AddZeroClass.toAdd.{u2} V₃ (AddMonoid.toAddZeroClass.{u2} V₃ (SubNegMonoid.toAddMonoid.{u2} V₃ (AddGroup.toSubNegMonoid.{u2} V₃ (SeminormedAddGroup.toAddGroup.{u2} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₃ _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} V₁ V₃ _inst_3 _inst_5) V₁ V₃ (AddMonoid.toAddZeroClass.{u1} V₁ (SubNegMonoid.toAddMonoid.{u1} V₁ (AddGroup.toSubNegMonoid.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))))) (AddMonoid.toAddZeroClass.{u2} V₃ (SubNegMonoid.toAddMonoid.{u2} V₃ (AddGroup.toSubNegMonoid.{u2} V₃ (SeminormedAddGroup.toAddGroup.{u2} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₃ _inst_5))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} V₁ V₃ _inst_3 _inst_5))) (NormedAddGroupHom.comp.{u1, u3, u2} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 g f)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.isometry_comp NormedAddGroupHom.isometry_compₓ'. -/
theorem isometry_comp {g : NormedAddGroupHom V₂ V₃} {f : NormedAddGroupHom V₁ V₂} (hg : Isometry g)
(hf : Isometry f) : Isometry (g.comp f) :=
hg.comp hf
#align normed_add_group_hom.isometry_comp NormedAddGroupHom.isometry_comp
+/- warning: normed_add_group_hom.norm_noninc_of_isometry -> NormedAddGroupHom.normNoninc_of_isometry is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2}, (Isometry.{u1, u2} V W (PseudoMetricSpace.toPseudoEMetricSpace.{u1} V (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} V _inst_1)) (PseudoMetricSpace.toPseudoEMetricSpace.{u2} W (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} W _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (fun (_x : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) => V -> W) (NormedAddGroupHom.hasCoeToFun.{u1, u2} V W _inst_1 _inst_2) f)) -> (NormedAddGroupHom.NormNoninc.{u1, u2} V W _inst_1 _inst_2 f)
+but is expected to have type
+ forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2}, (Isometry.{u2, u1} V W (PseudoMetricSpace.toPseudoEMetricSpace.{u2} V (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} V _inst_1)) (PseudoMetricSpace.toPseudoEMetricSpace.{u1} W (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} W _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V (fun (_x : V) => W) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V W (AddZeroClass.toAdd.{u2} V (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))))) (AddZeroClass.toAdd.{u1} W (AddMonoid.toAddZeroClass.{u1} W (SubNegMonoid.toAddMonoid.{u1} W (AddGroup.toSubNegMonoid.{u1} W (SeminormedAddGroup.toAddGroup.{u1} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} W _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) V W (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))))) (AddMonoid.toAddZeroClass.{u1} W (SubNegMonoid.toAddMonoid.{u1} W (AddGroup.toSubNegMonoid.{u1} W (SeminormedAddGroup.toAddGroup.{u1} W (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} W _inst_2))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} V W _inst_1 _inst_2))) f)) -> (NormedAddGroupHom.NormNoninc.{u2, u1} V W _inst_1 _inst_2 f)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.norm_noninc_of_isometry NormedAddGroupHom.normNoninc_of_isometryₓ'. -/
theorem normNoninc_of_isometry (hf : Isometry f) : f.NormNoninc := fun v =>
le_of_eq <| norm_eq_of_isometry hf v
#align normed_add_group_hom.norm_noninc_of_isometry NormedAddGroupHom.normNoninc_of_isometry
@@ -903,27 +1461,47 @@ variable {f₂ g₂ : NormedAddGroupHom V₂ W₂}
variable {f₃ g₃ : NormedAddGroupHom V₃ W₃}
+#print NormedAddGroupHom.equalizer /-
/-- The equalizer of two morphisms `f g : normed_add_group_hom V W`. -/
def equalizer :=
(f - g).ker
#align normed_add_group_hom.equalizer NormedAddGroupHom.equalizer
+-/
namespace Equalizer
+/- warning: normed_add_group_hom.equalizer.ι -> NormedAddGroupHom.Equalizer.ι is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2), NormedAddGroupHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_1
+but is expected to have type
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2), NormedAddGroupHom.{u1, u1} (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g))) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_1
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.ι NormedAddGroupHom.Equalizer.ιₓ'. -/
/-- The inclusion of `f.equalizer g` as a `normed_add_group_hom`. -/
def ι : NormedAddGroupHom (f.equalizer g) V :=
incl _
-#align normed_add_group_hom.equalizer.ι NormedAddGroupHom.equalizer.ι
-
+#align normed_add_group_hom.equalizer.ι NormedAddGroupHom.Equalizer.ι
+
+/- warning: normed_add_group_hom.equalizer.comp_ι_eq -> NormedAddGroupHom.Equalizer.comp_ι_eq is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] (f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2) (g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) W (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_2) (NormedAddGroupHom.comp.{u1, u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) V W (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_1 _inst_2 f (NormedAddGroupHom.Equalizer.ι.{u1, u2} V W _inst_1 _inst_2 f g)) (NormedAddGroupHom.comp.{u1, u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) V W (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_1 _inst_2 g (NormedAddGroupHom.Equalizer.ι.{u1, u2} V W _inst_1 _inst_2 f g))
+but is expected to have type
+ forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] (f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2) (g : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) W (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_2) (NormedAddGroupHom.comp.{u2, u2, u1} (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) V W (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_1 _inst_2 f (NormedAddGroupHom.Equalizer.ι.{u2, u1} V W _inst_1 _inst_2 f g)) (NormedAddGroupHom.comp.{u2, u2, u1} (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) V W (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_1 _inst_2 g (NormedAddGroupHom.Equalizer.ι.{u2, u1} V W _inst_1 _inst_2 f g))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.comp_ι_eq NormedAddGroupHom.Equalizer.comp_ι_eqₓ'. -/
theorem comp_ι_eq : f.comp (ι f g) = g.comp (ι f g) :=
by
ext
rw [comp_apply, comp_apply, ← sub_eq_zero, ← NormedAddGroupHom.sub_apply]
exact x.2
-#align normed_add_group_hom.equalizer.comp_ι_eq NormedAddGroupHom.equalizer.comp_ι_eq
+#align normed_add_group_hom.equalizer.comp_ι_eq NormedAddGroupHom.Equalizer.comp_ι_eq
variable {f g}
+/- warning: normed_add_group_hom.equalizer.lift -> NormedAddGroupHom.Equalizer.lift is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1), (Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ)) -> (NormedAddGroupHom.{u3, u1} V₁ (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)))
+but is expected to have type
+ forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1), (Eq.{max (succ u2) (succ u3)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ)) -> (NormedAddGroupHom.{u3, u1} V₁ (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g))) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.lift NormedAddGroupHom.Equalizer.liftₓ'. -/
/-- If `φ : normed_add_group_hom V₁ V` is such that `f.comp φ = g.comp φ`, the induced morphism
`normed_add_group_hom V₁ (f.equalizer g)`. -/
@[simps]
@@ -940,15 +1518,27 @@ def lift (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) :
bound' := by
obtain ⟨C, C_pos, hC⟩ := φ.bound
exact ⟨C, hC⟩
-#align normed_add_group_hom.equalizer.lift NormedAddGroupHom.equalizer.lift
-
+#align normed_add_group_hom.equalizer.lift NormedAddGroupHom.Equalizer.lift
+
+/- warning: normed_add_group_hom.equalizer.ι_comp_lift -> NormedAddGroupHom.Equalizer.ι_comp_lift is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (h : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ)), Eq.{max (succ u3) (succ u1)} (NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (NormedAddGroupHom.comp.{u3, u1, u1} V₁ (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) V _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_1 (NormedAddGroupHom.Equalizer.ι.{u1, u2} V W _inst_1 _inst_2 f g) (NormedAddGroupHom.Equalizer.lift.{u1, u2, u3} V W V₁ _inst_1 _inst_2 _inst_3 f g φ h)) φ
+but is expected to have type
+ forall {V : Type.{u2}} {W : Type.{u1}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u2} V₁ V _inst_3 _inst_1) (h : Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u3, u1} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V W _inst_3 _inst_1 _inst_2 g φ)), Eq.{max (succ u2) (succ u3)} (NormedAddGroupHom.{u3, u2} V₁ V _inst_3 _inst_1) (NormedAddGroupHom.comp.{u3, u2, u2} V₁ (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) V _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_1 (NormedAddGroupHom.Equalizer.ι.{u2, u1} V W _inst_1 _inst_2 f g) (NormedAddGroupHom.Equalizer.lift.{u2, u1, u3} V W V₁ _inst_1 _inst_2 _inst_3 f g φ h)) φ
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.ι_comp_lift NormedAddGroupHom.Equalizer.ι_comp_liftₓ'. -/
@[simp]
theorem ι_comp_lift (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) :
(ι _ _).comp (lift φ h) = φ := by
ext
rfl
-#align normed_add_group_hom.equalizer.ι_comp_lift NormedAddGroupHom.equalizer.ι_comp_lift
-
+#align normed_add_group_hom.equalizer.ι_comp_lift NormedAddGroupHom.Equalizer.ι_comp_lift
+
+/- warning: normed_add_group_hom.equalizer.lift_equiv -> NormedAddGroupHom.Equalizer.liftEquiv is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2}, Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (fun (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) => Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ))) (NormedAddGroupHom.{u3, u1} V₁ (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)))
+but is expected to have type
+ forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2}, Equiv.{max 1 (succ u1) (succ u3), max (succ u1) (succ u3)} (Subtype.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (fun (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) => Eq.{max (succ u2) (succ u3)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ))) (NormedAddGroupHom.{u3, u1} V₁ (Subtype.{succ u1} V (fun (x : V) => Membership.mem.{u1, u1} V (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g))) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.lift_equiv NormedAddGroupHom.Equalizer.liftEquivₓ'. -/
/-- The lifting property of the equalizer as an equivalence. -/
@[simps]
def liftEquiv :
@@ -960,8 +1550,14 @@ def liftEquiv :
right_inv ψ := by
ext
rfl
-#align normed_add_group_hom.equalizer.lift_equiv NormedAddGroupHom.equalizer.liftEquiv
-
+#align normed_add_group_hom.equalizer.lift_equiv NormedAddGroupHom.Equalizer.liftEquiv
+
+/- warning: normed_add_group_hom.equalizer.map -> NormedAddGroupHom.Equalizer.map is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] {W₁ : Type.{u3}} {W₂ : Type.{u4}} [_inst_6 : SeminormedAddCommGroup.{u3} W₁] [_inst_7 : SeminormedAddCommGroup.{u4} W₂] {f₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} (φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (ψ : NormedAddGroupHom.{u3, u4} W₁ W₂ _inst_6 _inst_7), (Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) -> (Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)) -> (NormedAddGroupHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)))
+but is expected to have type
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] {W₁ : Type.{u3}} {W₂ : Type.{u4}} [_inst_6 : SeminormedAddCommGroup.{u3} W₁] [_inst_7 : SeminormedAddCommGroup.{u4} W₂] {f₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} (φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4) (ψ : NormedAddGroupHom.{u3, u4} W₁ W₂ _inst_6 _inst_7), (Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) -> (Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)) -> (NormedAddGroupHom.{u1, u2} (Subtype.{succ u1} V₁ (fun (x : V₁) => Membership.mem.{u1, u1} V₁ (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u2} V₂ (fun (x : V₂) => Membership.mem.{u2, u2} V₂ (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) x (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.map NormedAddGroupHom.Equalizer.mapₓ'. -/
/-- Given `φ : normed_add_group_hom V₁ V₂` and `ψ : normed_add_group_hom W₁ W₂` such that
`ψ.comp f₁ = f₂.comp φ` and `ψ.comp g₁ = g₂.comp φ`, the induced morphism
`normed_add_group_hom (f₁.equalizer g₁) (f₂.equalizer g₂)`. -/
@@ -970,30 +1566,54 @@ def map (φ : NormedAddGroupHom V₁ V₂) (ψ : NormedAddGroupHom W₁ W₂) (h
lift (φ.comp <| ι _ _) <| by
simp only [← comp_assoc, ← hf, ← hg]
simp only [comp_assoc, comp_ι_eq]
-#align normed_add_group_hom.equalizer.map NormedAddGroupHom.equalizer.map
+#align normed_add_group_hom.equalizer.map NormedAddGroupHom.Equalizer.map
variable {φ : NormedAddGroupHom V₁ V₂} {ψ : NormedAddGroupHom W₁ W₂}
variable {φ' : NormedAddGroupHom V₂ V₃} {ψ' : NormedAddGroupHom W₂ W₃}
+/- warning: normed_add_group_hom.equalizer.ι_comp_map -> NormedAddGroupHom.Equalizer.ι_comp_map is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] {W₁ : Type.{u3}} {W₂ : Type.{u4}} [_inst_6 : SeminormedAddCommGroup.{u3} W₁] [_inst_7 : SeminormedAddCommGroup.{u4} W₂] {f₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u3, u4} W₁ W₂ _inst_6 _inst_7} (hf : Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)), Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_4) (NormedAddGroupHom.comp.{u1, u2, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) _inst_4 (NormedAddGroupHom.Equalizer.ι.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂) (NormedAddGroupHom.Equalizer.map.{u1, u2, u3, u4} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg)) (NormedAddGroupHom.comp.{u1, u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) V₁ V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_3 _inst_4 φ (NormedAddGroupHom.Equalizer.ι.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁))
+but is expected to have type
+ forall {V₁ : Type.{u4}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u4} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] {W₁ : Type.{u2}} {W₂ : Type.{u3}} [_inst_6 : SeminormedAddCommGroup.{u2} W₁] [_inst_7 : SeminormedAddCommGroup.{u3} W₂] {f₁ : NormedAddGroupHom.{u4, u2} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u4, u2} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u1, u3} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u1, u3} V₂ W₂ _inst_4 _inst_7} {φ : NormedAddGroupHom.{u4, u1} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u2, u3} W₁ W₂ _inst_6 _inst_7} (hf : Eq.{max (succ u4) (succ u3)} (NormedAddGroupHom.{u4, u3} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u4, u2, u3} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u4, u1, u3} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u4) (succ u3)} (NormedAddGroupHom.{u4, u3} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u4, u2, u3} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u4, u1, u3} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)), Eq.{max (succ u4) (succ u1)} (NormedAddGroupHom.{u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) V₂ (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_4) (NormedAddGroupHom.comp.{u4, u1, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u1} V₂ (fun (x : V₂) => Membership.mem.{u1, u1} V₂ (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))) x (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) V₂ (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) _inst_4 (NormedAddGroupHom.Equalizer.ι.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂) (NormedAddGroupHom.Equalizer.map.{u4, u1, u2, u3} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg)) (NormedAddGroupHom.comp.{u4, u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) V₁ V₂ (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_3 _inst_4 φ (NormedAddGroupHom.Equalizer.ι.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.ι_comp_map NormedAddGroupHom.Equalizer.ι_comp_mapₓ'. -/
@[simp]
theorem ι_comp_map (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ) :
(ι f₂ g₂).comp (map φ ψ hf hg) = φ.comp (ι _ _) :=
ι_comp_lift _ _
-#align normed_add_group_hom.equalizer.ι_comp_map NormedAddGroupHom.equalizer.ι_comp_map
-
+#align normed_add_group_hom.equalizer.ι_comp_map NormedAddGroupHom.Equalizer.ι_comp_map
+
+/- warning: normed_add_group_hom.equalizer.map_id -> NormedAddGroupHom.Equalizer.map_id is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] {W₁ : Type.{u2}} [_inst_6 : SeminormedAddCommGroup.{u2} W₁] {f₁ : NormedAddGroupHom.{u1, u2} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u2} V₁ W₁ _inst_3 _inst_6}, Eq.{succ u1} (NormedAddGroupHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (NormedAddGroupHom.Equalizer.map.{u1, u1, u2, u2} V₁ V₁ _inst_3 _inst_3 W₁ W₁ _inst_6 _inst_6 f₁ g₁ f₁ g₁ (NormedAddGroupHom.id.{u1} V₁ _inst_3) (NormedAddGroupHom.id.{u2} W₁ _inst_6) (rfl.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ W₁ _inst_3 _inst_6) (NormedAddGroupHom.comp.{u1, u2, u2} V₁ W₁ W₁ _inst_3 _inst_6 _inst_6 (NormedAddGroupHom.id.{u2} W₁ _inst_6) f₁)) (rfl.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} V₁ W₁ _inst_3 _inst_6) (NormedAddGroupHom.comp.{u1, u2, u2} V₁ W₁ W₁ _inst_3 _inst_6 _inst_6 (NormedAddGroupHom.id.{u2} W₁ _inst_6) g₁))) (NormedAddGroupHom.id.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)))
+but is expected to have type
+ forall {V₁ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} V₁] {W₁ : Type.{u1}} [_inst_6 : SeminormedAddCommGroup.{u1} W₁] {f₁ : NormedAddGroupHom.{u2, u1} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u2, u1} V₁ W₁ _inst_3 _inst_6}, Eq.{succ u2} (NormedAddGroupHom.{u2, u2} (Subtype.{succ u2} V₁ (fun (x : V₁) => Membership.mem.{u2, u2} V₁ (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u2} V₁ (fun (x : V₁) => Membership.mem.{u2, u2} V₁ (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (AddSubgroup.seminormedAddCommGroup.{u2} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (NormedAddGroupHom.Equalizer.map.{u2, u2, u1, u1} V₁ V₁ _inst_3 _inst_3 W₁ W₁ _inst_6 _inst_6 f₁ g₁ f₁ g₁ (NormedAddGroupHom.id.{u2} V₁ _inst_3) (NormedAddGroupHom.id.{u1} W₁ _inst_6) (rfl.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ W₁ _inst_3 _inst_6) (NormedAddGroupHom.comp.{u2, u1, u1} V₁ W₁ W₁ _inst_3 _inst_6 _inst_6 (NormedAddGroupHom.id.{u1} W₁ _inst_6) f₁)) (rfl.{max (succ u2) (succ u1)} (NormedAddGroupHom.{u2, u1} V₁ W₁ _inst_3 _inst_6) (NormedAddGroupHom.comp.{u2, u1, u1} V₁ W₁ W₁ _inst_3 _inst_6 _inst_6 (NormedAddGroupHom.id.{u1} W₁ _inst_6) g₁))) (NormedAddGroupHom.id.{u2} (Subtype.{succ u2} V₁ (fun (x : V₁) => Membership.mem.{u2, u2} V₁ (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u2} V₁ (SeminormedAddGroup.toAddGroup.{u2} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (AddSubgroup.seminormedAddCommGroup.{u2} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u2, u1} V₁ W₁ _inst_3 _inst_6 f₁ g₁)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.map_id NormedAddGroupHom.Equalizer.map_idₓ'. -/
@[simp]
theorem map_id : map (id V₁) (id W₁) rfl rfl = id (f₁.equalizer g₁) :=
by
ext
rfl
-#align normed_add_group_hom.equalizer.map_id NormedAddGroupHom.equalizer.map_id
-
+#align normed_add_group_hom.equalizer.map_id NormedAddGroupHom.Equalizer.map_id
+
+/- warning: normed_add_group_hom.equalizer.comm_sq₂ -> NormedAddGroupHom.Equalizer.comm_sq₂ is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] {W₁ : Type.{u4}} {W₂ : Type.{u5}} {W₃ : Type.{u6}} [_inst_6 : SeminormedAddCommGroup.{u4} W₁] [_inst_7 : SeminormedAddCommGroup.{u5} W₂] [_inst_8 : SeminormedAddCommGroup.{u6} W₃] {f₁ : NormedAddGroupHom.{u1, u4} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u5} V₂ W₂ _inst_4 _inst_7} {f₃ : NormedAddGroupHom.{u3, u6} V₃ W₃ _inst_5 _inst_8} {φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u4, u5} W₁ W₂ _inst_6 _inst_7} {φ' : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5} {ψ' : NormedAddGroupHom.{u5, u6} W₂ W₃ _inst_7 _inst_8}, (Eq.{max (succ u1) (succ u5)} (NormedAddGroupHom.{u1, u5} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u4, u5} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u5} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) -> (Eq.{max (succ u2) (succ u6)} (NormedAddGroupHom.{u2, u6} V₂ W₃ _inst_4 _inst_8) (NormedAddGroupHom.comp.{u2, u5, u6} V₂ W₂ W₃ _inst_4 _inst_7 _inst_8 ψ' f₂) (NormedAddGroupHom.comp.{u2, u3, u6} V₂ V₃ W₃ _inst_4 _inst_5 _inst_8 f₃ φ')) -> (Eq.{max (succ u1) (succ u6)} (NormedAddGroupHom.{u1, u6} V₁ W₃ _inst_3 _inst_8) (NormedAddGroupHom.comp.{u1, u4, u6} V₁ W₁ W₃ _inst_3 _inst_6 _inst_8 (NormedAddGroupHom.comp.{u4, u5, u6} W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 ψ' ψ) f₁) (NormedAddGroupHom.comp.{u1, u3, u6} V₁ V₃ W₃ _inst_3 _inst_5 _inst_8 f₃ (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 φ' φ)))
+but is expected to have type
+ forall {V₁ : Type.{u6}} {V₂ : Type.{u3}} {V₃ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u6} V₁] [_inst_4 : SeminormedAddCommGroup.{u3} V₂] [_inst_5 : SeminormedAddCommGroup.{u1} V₃] {W₁ : Type.{u4}} {W₂ : Type.{u5}} {W₃ : Type.{u2}} [_inst_6 : SeminormedAddCommGroup.{u4} W₁] [_inst_7 : SeminormedAddCommGroup.{u5} W₂] [_inst_8 : SeminormedAddCommGroup.{u2} W₃] {f₁ : NormedAddGroupHom.{u6, u4} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u3, u5} V₂ W₂ _inst_4 _inst_7} {f₃ : NormedAddGroupHom.{u1, u2} V₃ W₃ _inst_5 _inst_8} {φ : NormedAddGroupHom.{u6, u3} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u4, u5} W₁ W₂ _inst_6 _inst_7} {φ' : NormedAddGroupHom.{u3, u1} V₂ V₃ _inst_4 _inst_5} {ψ' : NormedAddGroupHom.{u5, u2} W₂ W₃ _inst_7 _inst_8}, (Eq.{max (succ u6) (succ u5)} (NormedAddGroupHom.{u6, u5} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u6, u4, u5} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u6, u3, u5} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) -> (Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₂ W₃ _inst_4 _inst_8) (NormedAddGroupHom.comp.{u3, u5, u2} V₂ W₂ W₃ _inst_4 _inst_7 _inst_8 ψ' f₂) (NormedAddGroupHom.comp.{u3, u1, u2} V₂ V₃ W₃ _inst_4 _inst_5 _inst_8 f₃ φ')) -> (Eq.{max (succ u6) (succ u2)} (NormedAddGroupHom.{u6, u2} V₁ W₃ _inst_3 _inst_8) (NormedAddGroupHom.comp.{u6, u4, u2} V₁ W₁ W₃ _inst_3 _inst_6 _inst_8 (NormedAddGroupHom.comp.{u4, u5, u2} W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 ψ' ψ) f₁) (NormedAddGroupHom.comp.{u6, u1, u2} V₁ V₃ W₃ _inst_3 _inst_5 _inst_8 f₃ (NormedAddGroupHom.comp.{u6, u3, u1} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 φ' φ)))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.comm_sq₂ NormedAddGroupHom.Equalizer.comm_sq₂ₓ'. -/
theorem comm_sq₂ (hf : ψ.comp f₁ = f₂.comp φ) (hf' : ψ'.comp f₂ = f₃.comp φ') :
(ψ'.comp ψ).comp f₁ = f₃.comp (φ'.comp φ) := by
rw [comp_assoc, hf, ← comp_assoc, hf', comp_assoc]
-#align normed_add_group_hom.equalizer.comm_sq₂ NormedAddGroupHom.equalizer.comm_sq₂
-
+#align normed_add_group_hom.equalizer.comm_sq₂ NormedAddGroupHom.Equalizer.comm_sq₂
+
+/- warning: normed_add_group_hom.equalizer.map_comp_map -> NormedAddGroupHom.Equalizer.map_comp_map is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} {V₃ : Type.{u3}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] [_inst_5 : SeminormedAddCommGroup.{u3} V₃] {W₁ : Type.{u4}} {W₂ : Type.{u5}} {W₃ : Type.{u6}} [_inst_6 : SeminormedAddCommGroup.{u4} W₁] [_inst_7 : SeminormedAddCommGroup.{u5} W₂] [_inst_8 : SeminormedAddCommGroup.{u6} W₃] {f₁ : NormedAddGroupHom.{u1, u4} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u4} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u5} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u2, u5} V₂ W₂ _inst_4 _inst_7} {f₃ : NormedAddGroupHom.{u3, u6} V₃ W₃ _inst_5 _inst_8} {g₃ : NormedAddGroupHom.{u3, u6} V₃ W₃ _inst_5 _inst_8} {φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u4, u5} W₁ W₂ _inst_6 _inst_7} {φ' : NormedAddGroupHom.{u2, u3} V₂ V₃ _inst_4 _inst_5} {ψ' : NormedAddGroupHom.{u5, u6} W₂ W₃ _inst_7 _inst_8} (hf : Eq.{max (succ u1) (succ u5)} (NormedAddGroupHom.{u1, u5} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u4, u5} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u5} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u1) (succ u5)} (NormedAddGroupHom.{u1, u5} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u4, u5} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u1, u2, u5} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)) (hf' : Eq.{max (succ u2) (succ u6)} (NormedAddGroupHom.{u2, u6} V₂ W₃ _inst_4 _inst_8) (NormedAddGroupHom.comp.{u2, u5, u6} V₂ W₂ W₃ _inst_4 _inst_7 _inst_8 ψ' f₂) (NormedAddGroupHom.comp.{u2, u3, u6} V₂ V₃ W₃ _inst_4 _inst_5 _inst_8 f₃ φ')) (hg' : Eq.{max (succ u2) (succ u6)} (NormedAddGroupHom.{u2, u6} V₂ W₃ _inst_4 _inst_8) (NormedAddGroupHom.comp.{u2, u5, u6} V₂ W₂ W₃ _inst_4 _inst_7 _inst_8 ψ' g₂) (NormedAddGroupHom.comp.{u2, u3, u6} V₂ V₃ W₃ _inst_4 _inst_5 _inst_8 g₃ φ')), Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u1, u3} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u3, succ (succ u3)} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) V₃ (AddSubgroup.setLike.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5)))) (NormedAddGroupHom.equalizer.{u3, u6} V₃ W₃ _inst_5 _inst_8 f₃ g₃)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u3} V₃ _inst_5 (NormedAddGroupHom.equalizer.{u3, u6} V₃ W₃ _inst_5 _inst_8 f₃ g₃))) (NormedAddGroupHom.comp.{u1, u2, u3} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.equalizer.{u2, u5} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (coeSort.{succ u3, succ (succ u3)} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (AddSubgroup.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5))) V₃ (AddSubgroup.setLike.{u3} V₃ (SeminormedAddGroup.toAddGroup.{u3} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₃ _inst_5)))) (NormedAddGroupHom.equalizer.{u3, u6} V₃ W₃ _inst_5 _inst_8 f₃ g₃)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u5} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (AddSubgroup.seminormedAddCommGroup.{u3} V₃ _inst_5 (NormedAddGroupHom.equalizer.{u3, u6} V₃ W₃ _inst_5 _inst_8 f₃ g₃)) (NormedAddGroupHom.Equalizer.map.{u2, u3, u5, u6} V₂ V₃ _inst_4 _inst_5 W₂ W₃ _inst_7 _inst_8 f₂ g₂ f₃ g₃ φ' ψ' hf' hg') (NormedAddGroupHom.Equalizer.map.{u1, u2, u4, u5} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg)) (NormedAddGroupHom.Equalizer.map.{u1, u3, u4, u6} V₁ V₃ _inst_3 _inst_5 W₁ W₃ _inst_6 _inst_8 f₁ g₁ f₃ g₃ (NormedAddGroupHom.comp.{u1, u2, u3} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 φ' φ) (NormedAddGroupHom.comp.{u4, u5, u6} W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 ψ' ψ) (NormedAddGroupHom.Equalizer.comm_sq₂.{u1, u2, u3, u4, u5, u6} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 f₁ f₂ f₃ φ ψ φ' ψ' hf hf') (NormedAddGroupHom.Equalizer.comm_sq₂.{u1, u2, u3, u4, u5, u6} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 g₁ g₂ g₃ φ ψ φ' ψ' hg hg'))
+but is expected to have type
+ forall {V₁ : Type.{u6}} {V₂ : Type.{u3}} {V₃ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u6} V₁] [_inst_4 : SeminormedAddCommGroup.{u3} V₂] [_inst_5 : SeminormedAddCommGroup.{u1} V₃] {W₁ : Type.{u4}} {W₂ : Type.{u5}} {W₃ : Type.{u2}} [_inst_6 : SeminormedAddCommGroup.{u4} W₁] [_inst_7 : SeminormedAddCommGroup.{u5} W₂] [_inst_8 : SeminormedAddCommGroup.{u2} W₃] {f₁ : NormedAddGroupHom.{u6, u4} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u6, u4} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u3, u5} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u3, u5} V₂ W₂ _inst_4 _inst_7} {f₃ : NormedAddGroupHom.{u1, u2} V₃ W₃ _inst_5 _inst_8} {g₃ : NormedAddGroupHom.{u1, u2} V₃ W₃ _inst_5 _inst_8} {φ : NormedAddGroupHom.{u6, u3} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u4, u5} W₁ W₂ _inst_6 _inst_7} {φ' : NormedAddGroupHom.{u3, u1} V₂ V₃ _inst_4 _inst_5} {ψ' : NormedAddGroupHom.{u5, u2} W₂ W₃ _inst_7 _inst_8} (hf : Eq.{max (succ u6) (succ u5)} (NormedAddGroupHom.{u6, u5} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u6, u4, u5} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u6, u3, u5} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u6) (succ u5)} (NormedAddGroupHom.{u6, u5} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u6, u4, u5} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u6, u3, u5} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)) (hf' : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₂ W₃ _inst_4 _inst_8) (NormedAddGroupHom.comp.{u3, u5, u2} V₂ W₂ W₃ _inst_4 _inst_7 _inst_8 ψ' f₂) (NormedAddGroupHom.comp.{u3, u1, u2} V₂ V₃ W₃ _inst_4 _inst_5 _inst_8 f₃ φ')) (hg' : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₂ W₃ _inst_4 _inst_8) (NormedAddGroupHom.comp.{u3, u5, u2} V₂ W₂ W₃ _inst_4 _inst_7 _inst_8 ψ' g₂) (NormedAddGroupHom.comp.{u3, u1, u2} V₂ V₃ W₃ _inst_4 _inst_5 _inst_8 g₃ φ')), Eq.{max (succ u6) (succ u1)} (NormedAddGroupHom.{u6, u1} (Subtype.{succ u6} V₁ (fun (x : V₁) => Membership.mem.{u6, u6} V₁ (AddSubgroup.{u6} V₁ (SeminormedAddGroup.toAddGroup.{u6} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u6} V₁ _inst_3))) (SetLike.instMembership.{u6, u6} (AddSubgroup.{u6} V₁ (SeminormedAddGroup.toAddGroup.{u6} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u6} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u6} V₁ (SeminormedAddGroup.toAddGroup.{u6} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u6} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u6, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u1} V₃ (fun (x : V₃) => Membership.mem.{u1, u1} V₃ (AddSubgroup.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_5))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_5))) V₃ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_5)))) x (NormedAddGroupHom.equalizer.{u1, u2} V₃ W₃ _inst_5 _inst_8 f₃ g₃))) (AddSubgroup.seminormedAddCommGroup.{u6} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u6, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₃ _inst_5 (NormedAddGroupHom.equalizer.{u1, u2} V₃ W₃ _inst_5 _inst_8 f₃ g₃))) (NormedAddGroupHom.comp.{u6, u3, u1} (Subtype.{succ u6} V₁ (fun (x : V₁) => Membership.mem.{u6, u6} V₁ (AddSubgroup.{u6} V₁ (SeminormedAddGroup.toAddGroup.{u6} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u6} V₁ _inst_3))) (SetLike.instMembership.{u6, u6} (AddSubgroup.{u6} V₁ (SeminormedAddGroup.toAddGroup.{u6} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u6} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u6} V₁ (SeminormedAddGroup.toAddGroup.{u6} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u6} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u6, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u3} V₂ (fun (x : V₂) => Membership.mem.{u3, u3} V₂ (AddSubgroup.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4))) (SetLike.instMembership.{u3, u3} (AddSubgroup.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u3} V₂ (SeminormedAddGroup.toAddGroup.{u3} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u3} V₂ _inst_4)))) x (NormedAddGroupHom.equalizer.{u3, u5} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (Subtype.{succ u1} V₃ (fun (x : V₃) => Membership.mem.{u1, u1} V₃ (AddSubgroup.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_5))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_5))) V₃ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₃ (SeminormedAddGroup.toAddGroup.{u1} V₃ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₃ _inst_5)))) x (NormedAddGroupHom.equalizer.{u1, u2} V₃ W₃ _inst_5 _inst_8 f₃ g₃))) (AddSubgroup.seminormedAddCommGroup.{u6} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u6, u4} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u3} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u3, u5} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (AddSubgroup.seminormedAddCommGroup.{u1} V₃ _inst_5 (NormedAddGroupHom.equalizer.{u1, u2} V₃ W₃ _inst_5 _inst_8 f₃ g₃)) (NormedAddGroupHom.Equalizer.map.{u3, u1, u5, u2} V₂ V₃ _inst_4 _inst_5 W₂ W₃ _inst_7 _inst_8 f₂ g₂ f₃ g₃ φ' ψ' hf' hg') (NormedAddGroupHom.Equalizer.map.{u6, u3, u4, u5} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg)) (NormedAddGroupHom.Equalizer.map.{u6, u1, u4, u2} V₁ V₃ _inst_3 _inst_5 W₁ W₃ _inst_6 _inst_8 f₁ g₁ f₃ g₃ (NormedAddGroupHom.comp.{u6, u3, u1} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 φ' φ) (NormedAddGroupHom.comp.{u4, u5, u2} W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 ψ' ψ) (NormedAddGroupHom.Equalizer.comm_sq₂.{u1, u2, u3, u4, u5, u6} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 f₁ f₂ f₃ φ ψ φ' ψ' hf hf') (NormedAddGroupHom.Equalizer.comm_sq₂.{u1, u2, u3, u4, u5, u6} V₁ V₂ V₃ _inst_3 _inst_4 _inst_5 W₁ W₂ W₃ _inst_6 _inst_7 _inst_8 g₁ g₂ g₃ φ ψ φ' ψ' hg hg'))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.map_comp_map NormedAddGroupHom.Equalizer.map_comp_mapₓ'. -/
theorem map_comp_map (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ)
(hf' : ψ'.comp f₂ = f₃.comp φ') (hg' : ψ'.comp g₂ = g₃.comp φ') :
(map φ' ψ' hf' hg').comp (map φ ψ hf hg) =
@@ -1001,32 +1621,62 @@ theorem map_comp_map (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g
by
ext
rfl
-#align normed_add_group_hom.equalizer.map_comp_map NormedAddGroupHom.equalizer.map_comp_map
-
+#align normed_add_group_hom.equalizer.map_comp_map NormedAddGroupHom.Equalizer.map_comp_map
+
+/- warning: normed_add_group_hom.equalizer.ι_norm_noninc -> NormedAddGroupHom.Equalizer.ι_normNoninc is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2}, NormedAddGroupHom.NormNoninc.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) V (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_1 (NormedAddGroupHom.Equalizer.ι.{u1, u2} V W _inst_1 _inst_2 f g)
+but is expected to have type
+ forall {V : Type.{u2}} {W : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2}, NormedAddGroupHom.NormNoninc.{u2, u2} (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) V (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) _inst_1 (NormedAddGroupHom.Equalizer.ι.{u2, u1} V W _inst_1 _inst_2 f g)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.ι_norm_noninc NormedAddGroupHom.Equalizer.ι_normNonincₓ'. -/
theorem ι_normNoninc : (ι f g).NormNoninc := fun v => le_rfl
-#align normed_add_group_hom.equalizer.ι_norm_noninc NormedAddGroupHom.equalizer.ι_normNoninc
-
+#align normed_add_group_hom.equalizer.ι_norm_noninc NormedAddGroupHom.Equalizer.ι_normNoninc
+
+/- warning: normed_add_group_hom.equalizer.lift_norm_noninc -> NormedAddGroupHom.Equalizer.lift_normNoninc is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (h : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ)), (NormedAddGroupHom.NormNoninc.{u3, u1} V₁ V _inst_3 _inst_1 φ) -> (NormedAddGroupHom.NormNoninc.{u3, u1} V₁ (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) (NormedAddGroupHom.Equalizer.lift.{u1, u2, u3} V W V₁ _inst_1 _inst_2 _inst_3 f g φ h))
+but is expected to have type
+ forall {V : Type.{u2}} {W : Type.{u1}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u2} V₁ V _inst_3 _inst_1) (h : Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u3, u1} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V W _inst_3 _inst_1 _inst_2 g φ)), (NormedAddGroupHom.NormNoninc.{u3, u2} V₁ V _inst_3 _inst_1 φ) -> (NormedAddGroupHom.NormNoninc.{u3, u2} V₁ (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g)) (NormedAddGroupHom.Equalizer.lift.{u2, u1, u3} V W V₁ _inst_1 _inst_2 _inst_3 f g φ h))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.lift_norm_noninc NormedAddGroupHom.Equalizer.lift_normNonincₓ'. -/
/-- The lifting of a norm nonincreasing morphism is norm nonincreasing. -/
theorem lift_normNoninc (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) (hφ : φ.NormNoninc) :
(lift φ h).NormNoninc :=
hφ
-#align normed_add_group_hom.equalizer.lift_norm_noninc NormedAddGroupHom.equalizer.lift_normNoninc
-
+#align normed_add_group_hom.equalizer.lift_norm_noninc NormedAddGroupHom.Equalizer.lift_normNoninc
+
+/- warning: normed_add_group_hom.equalizer.norm_lift_le -> NormedAddGroupHom.Equalizer.norm_lift_le is a dubious translation:
+lean 3 declaration is
+ forall {V : Type.{u1}} {W : Type.{u2}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u1} V] [_inst_2 : SeminormedAddCommGroup.{u2} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u1, u2} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (h : Eq.{max (succ u3) (succ u2)} (NormedAddGroupHom.{u3, u2} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u1, u2} V₁ V W _inst_3 _inst_1 _inst_2 g φ)) (C : Real), (LE.le.{0} Real Real.hasLe (Norm.norm.{max u3 u1} (NormedAddGroupHom.{u3, u1} V₁ V _inst_3 _inst_1) (NormedAddGroupHom.hasOpNorm.{u3, u1} V₁ V _inst_3 _inst_1) φ) C) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u3 u1} (NormedAddGroupHom.{u3, u1} V₁ (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g))) (NormedAddGroupHom.hasOpNorm.{u3, u1} V₁ (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1))) V (AddSubgroup.setLike.{u1} V (SeminormedAddGroup.toAddGroup.{u1} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V _inst_1)))) (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g)) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u1} V _inst_1 (NormedAddGroupHom.equalizer.{u1, u2} V W _inst_1 _inst_2 f g))) (NormedAddGroupHom.Equalizer.lift.{u1, u2, u3} V W V₁ _inst_1 _inst_2 _inst_3 f g φ h)) C)
+but is expected to have type
+ forall {V : Type.{u2}} {W : Type.{u1}} {V₁ : Type.{u3}} [_inst_1 : SeminormedAddCommGroup.{u2} V] [_inst_2 : SeminormedAddCommGroup.{u1} W] [_inst_3 : SeminormedAddCommGroup.{u3} V₁] {f : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} {g : NormedAddGroupHom.{u2, u1} V W _inst_1 _inst_2} (φ : NormedAddGroupHom.{u3, u2} V₁ V _inst_3 _inst_1) (h : Eq.{max (succ u1) (succ u3)} (NormedAddGroupHom.{u3, u1} V₁ W _inst_3 _inst_2) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V W _inst_3 _inst_1 _inst_2 f φ) (NormedAddGroupHom.comp.{u3, u2, u1} V₁ V W _inst_3 _inst_1 _inst_2 g φ)) (C : Real), (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u2 u3} (NormedAddGroupHom.{u3, u2} V₁ V _inst_3 _inst_1) (NormedAddGroupHom.hasOpNorm.{u3, u2} V₁ V _inst_3 _inst_1) φ) C) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u3 u2} (NormedAddGroupHom.{u3, u2} V₁ (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) (NormedAddGroupHom.hasOpNorm.{u3, u2} V₁ (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1))) V (AddSubgroup.instSetLikeAddSubgroup.{u2} V (SeminormedAddGroup.toAddGroup.{u2} V (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V _inst_1)))) x (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) _inst_3 (AddSubgroup.seminormedAddCommGroup.{u2} V _inst_1 (NormedAddGroupHom.equalizer.{u2, u1} V W _inst_1 _inst_2 f g))) (NormedAddGroupHom.Equalizer.lift.{u2, u1, u3} V W V₁ _inst_1 _inst_2 _inst_3 f g φ h)) C)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.norm_lift_le NormedAddGroupHom.Equalizer.norm_lift_leₓ'. -/
/-- If `φ` satisfies `‖φ‖ ≤ C`, then the same is true for the lifted morphism. -/
theorem norm_lift_le (φ : NormedAddGroupHom V₁ V) (h : f.comp φ = g.comp φ) (C : ℝ) (hφ : ‖φ‖ ≤ C) :
‖lift φ h‖ ≤ C :=
hφ
-#align normed_add_group_hom.equalizer.norm_lift_le NormedAddGroupHom.equalizer.norm_lift_le
-
+#align normed_add_group_hom.equalizer.norm_lift_le NormedAddGroupHom.Equalizer.norm_lift_le
+
+/- warning: normed_add_group_hom.equalizer.map_norm_noninc -> NormedAddGroupHom.Equalizer.map_normNoninc is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] {W₁ : Type.{u3}} {W₂ : Type.{u4}} [_inst_6 : SeminormedAddCommGroup.{u3} W₁] [_inst_7 : SeminormedAddCommGroup.{u4} W₂] {f₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u3, u4} W₁ W₂ _inst_6 _inst_7} (hf : Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)), (NormedAddGroupHom.NormNoninc.{u1, u2} V₁ V₂ _inst_3 _inst_4 φ) -> (NormedAddGroupHom.NormNoninc.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (NormedAddGroupHom.Equalizer.map.{u1, u2, u3, u4} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg))
+but is expected to have type
+ forall {V₁ : Type.{u4}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u4} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] {W₁ : Type.{u2}} {W₂ : Type.{u3}} [_inst_6 : SeminormedAddCommGroup.{u2} W₁] [_inst_7 : SeminormedAddCommGroup.{u3} W₂] {f₁ : NormedAddGroupHom.{u4, u2} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u4, u2} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u1, u3} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u1, u3} V₂ W₂ _inst_4 _inst_7} {φ : NormedAddGroupHom.{u4, u1} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u2, u3} W₁ W₂ _inst_6 _inst_7} (hf : Eq.{max (succ u4) (succ u3)} (NormedAddGroupHom.{u4, u3} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u4, u2, u3} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u4, u1, u3} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u4) (succ u3)} (NormedAddGroupHom.{u4, u3} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u4, u2, u3} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u4, u1, u3} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)), (NormedAddGroupHom.NormNoninc.{u4, u1} V₁ V₂ _inst_3 _inst_4 φ) -> (NormedAddGroupHom.NormNoninc.{u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u1} V₂ (fun (x : V₂) => Membership.mem.{u1, u1} V₂ (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))) x (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (NormedAddGroupHom.Equalizer.map.{u4, u1, u2, u3} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.map_norm_noninc NormedAddGroupHom.Equalizer.map_normNonincₓ'. -/
theorem map_normNoninc (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ)
(hφ : φ.NormNoninc) : (map φ ψ hf hg).NormNoninc :=
lift_normNoninc _ _ <| hφ.comp ι_normNoninc
-#align normed_add_group_hom.equalizer.map_norm_noninc NormedAddGroupHom.equalizer.map_normNoninc
-
+#align normed_add_group_hom.equalizer.map_norm_noninc NormedAddGroupHom.Equalizer.map_normNoninc
+
+/- warning: normed_add_group_hom.equalizer.norm_map_le -> NormedAddGroupHom.Equalizer.norm_map_le is a dubious translation:
+lean 3 declaration is
+ forall {V₁ : Type.{u1}} {V₂ : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u1} V₁] [_inst_4 : SeminormedAddCommGroup.{u2} V₂] {W₁ : Type.{u3}} {W₂ : Type.{u4}} [_inst_6 : SeminormedAddCommGroup.{u3} W₁] [_inst_7 : SeminormedAddCommGroup.{u4} W₂] {f₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u1, u3} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u2, u4} V₂ W₂ _inst_4 _inst_7} {φ : NormedAddGroupHom.{u1, u2} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u3, u4} W₁ W₂ _inst_6 _inst_7} (hf : Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u1) (succ u4)} (NormedAddGroupHom.{u1, u4} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u1, u3, u4} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u1, u2, u4} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)) (C : Real), (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_4) (NormedAddGroupHom.hasOpNorm.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_4) (NormedAddGroupHom.comp.{u1, u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) V₁ V₂ (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_3 _inst_4 φ (NormedAddGroupHom.Equalizer.ι.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) C) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (NormedAddGroupHom.hasOpNorm.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3))) V₁ (AddSubgroup.setLike.{u1} V₁ (SeminormedAddGroup.toAddGroup.{u1} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₁ _inst_3)))) (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (coeSort.{succ u2, succ (succ u2)} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (AddSubgroup.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4))) V₂ (AddSubgroup.setLike.{u2} V₂ (SeminormedAddGroup.toAddGroup.{u2} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} V₂ _inst_4)))) (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂)) (AddSubgroup.seminormedAddCommGroup.{u1} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u1, u3} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u2} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u2, u4} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (NormedAddGroupHom.Equalizer.map.{u1, u2, u3, u4} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg)) C)
+but is expected to have type
+ forall {V₁ : Type.{u4}} {V₂ : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u4} V₁] [_inst_4 : SeminormedAddCommGroup.{u1} V₂] {W₁ : Type.{u2}} {W₂ : Type.{u3}} [_inst_6 : SeminormedAddCommGroup.{u2} W₁] [_inst_7 : SeminormedAddCommGroup.{u3} W₂] {f₁ : NormedAddGroupHom.{u4, u2} V₁ W₁ _inst_3 _inst_6} {g₁ : NormedAddGroupHom.{u4, u2} V₁ W₁ _inst_3 _inst_6} {f₂ : NormedAddGroupHom.{u1, u3} V₂ W₂ _inst_4 _inst_7} {g₂ : NormedAddGroupHom.{u1, u3} V₂ W₂ _inst_4 _inst_7} {φ : NormedAddGroupHom.{u4, u1} V₁ V₂ _inst_3 _inst_4} {ψ : NormedAddGroupHom.{u2, u3} W₁ W₂ _inst_6 _inst_7} (hf : Eq.{max (succ u4) (succ u3)} (NormedAddGroupHom.{u4, u3} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u4, u2, u3} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ f₁) (NormedAddGroupHom.comp.{u4, u1, u3} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 f₂ φ)) (hg : Eq.{max (succ u4) (succ u3)} (NormedAddGroupHom.{u4, u3} V₁ W₂ _inst_3 _inst_7) (NormedAddGroupHom.comp.{u4, u2, u3} V₁ W₁ W₂ _inst_3 _inst_6 _inst_7 ψ g₁) (NormedAddGroupHom.comp.{u4, u1, u3} V₁ V₂ W₂ _inst_3 _inst_4 _inst_7 g₂ φ)) (C : Real), (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u4} (NormedAddGroupHom.{u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) V₂ (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_4) (NormedAddGroupHom.hasOpNorm.{u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) V₂ (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_4) (NormedAddGroupHom.comp.{u4, u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) V₁ V₂ (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) _inst_3 _inst_4 φ (NormedAddGroupHom.Equalizer.ι.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) C) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u4} (NormedAddGroupHom.{u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u1} V₂ (fun (x : V₂) => Membership.mem.{u1, u1} V₂ (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))) x (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (NormedAddGroupHom.hasOpNorm.{u4, u1} (Subtype.{succ u4} V₁ (fun (x : V₁) => Membership.mem.{u4, u4} V₁ (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) (SetLike.instMembership.{u4, u4} (AddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3))) V₁ (AddSubgroup.instSetLikeAddSubgroup.{u4} V₁ (SeminormedAddGroup.toAddGroup.{u4} V₁ (SeminormedAddCommGroup.toSeminormedAddGroup.{u4} V₁ _inst_3)))) x (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁))) (Subtype.{succ u1} V₂ (fun (x : V₂) => Membership.mem.{u1, u1} V₂ (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4))) V₂ (AddSubgroup.instSetLikeAddSubgroup.{u1} V₂ (SeminormedAddGroup.toAddGroup.{u1} V₂ (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} V₂ _inst_4)))) x (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (AddSubgroup.seminormedAddCommGroup.{u4} V₁ _inst_3 (NormedAddGroupHom.equalizer.{u4, u2} V₁ W₁ _inst_3 _inst_6 f₁ g₁)) (AddSubgroup.seminormedAddCommGroup.{u1} V₂ _inst_4 (NormedAddGroupHom.equalizer.{u1, u3} V₂ W₂ _inst_4 _inst_7 f₂ g₂))) (NormedAddGroupHom.Equalizer.map.{u4, u1, u2, u3} V₁ V₂ _inst_3 _inst_4 W₁ W₂ _inst_6 _inst_7 f₁ g₁ f₂ g₂ φ ψ hf hg)) C)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.equalizer.norm_map_le NormedAddGroupHom.Equalizer.norm_map_leₓ'. -/
theorem norm_map_le (hf : ψ.comp f₁ = f₂.comp φ) (hg : ψ.comp g₁ = g₂.comp φ) (C : ℝ)
(hφ : ‖φ.comp (ι f₁ g₁)‖ ≤ C) : ‖map φ ψ hf hg‖ ≤ C :=
norm_lift_le _ _ _ hφ
-#align normed_add_group_hom.equalizer.norm_map_le NormedAddGroupHom.equalizer.norm_map_le
+#align normed_add_group_hom.equalizer.norm_map_le NormedAddGroupHom.Equalizer.norm_map_le
end Equalizer
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -209,7 +209,7 @@ def opNorm (f : NormedAddGroupHom V₁ V₂) :=
infₛ { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ }
#align normed_add_group_hom.op_norm NormedAddGroupHom.opNorm
-instance hasOpNorm : HasNorm (NormedAddGroupHom V₁ V₂) :=
+instance hasOpNorm : Norm (NormedAddGroupHom V₁ V₂) :=
⟨opNorm⟩
#align normed_add_group_hom.has_op_norm NormedAddGroupHom.hasOpNorm
mathlib commit https://github.com/leanprover-community/mathlib/commit/3b267e70a936eebb21ab546f49a8df34dd300b25
@@ -494,8 +494,8 @@ theorem sub_apply (f g : NormedAddGroupHom V₁ V₂) (v : V₁) :
section SMul
variable {R R' : Type _} [MonoidWithZero R] [DistribMulAction R V₂] [PseudoMetricSpace R]
- [HasBoundedSmul R V₂] [MonoidWithZero R'] [DistribMulAction R' V₂] [PseudoMetricSpace R']
- [HasBoundedSmul R' V₂]
+ [BoundedSmul R V₂] [MonoidWithZero R'] [DistribMulAction R' V₂] [PseudoMetricSpace R']
+ [BoundedSmul R' V₂]
instance : SMul R (NormedAddGroupHom V₁ V₂)
where smul r f :=
@@ -629,10 +629,10 @@ theorem sum_apply {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V
instance {R : Type _} [MonoidWithZero R] [DistribMulAction R V₂] [PseudoMetricSpace R]
- [HasBoundedSmul R V₂] : DistribMulAction R (NormedAddGroupHom V₁ V₂) :=
+ [BoundedSmul R V₂] : DistribMulAction R (NormedAddGroupHom V₁ V₂) :=
Function.Injective.distribMulAction coeFnAddHom coe_injective coe_smul
-instance {R : Type _} [Semiring R] [Module R V₂] [PseudoMetricSpace R] [HasBoundedSmul R V₂] :
+instance {R : Type _} [Semiring R] [Module R V₂] [PseudoMetricSpace R] [BoundedSmul R V₂] :
Module R (NormedAddGroupHom V₁ V₂) :=
Function.Injective.module _ coeFnAddHom coe_injective coe_smul
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -325,7 +325,7 @@ instance : Add (NormedAddGroupHom V₁ V₂) :=
(f.toAddMonoidHom + g.toAddMonoidHom).mkNormedAddGroupHom (‖f‖ + ‖g‖) fun v =>
calc
‖f v + g v‖ ≤ ‖f v‖ + ‖g v‖ := norm_add_le _ _
- _ ≤ ‖f‖ * ‖v‖ + ‖g‖ * ‖v‖ := add_le_add (le_op_norm f v) (le_op_norm g v)
+ _ ≤ ‖f‖ * ‖v‖ + ‖g‖ * ‖v‖ := (add_le_add (le_op_norm f v) (le_op_norm g v))
_ = (‖f‖ + ‖g‖) * ‖v‖ := by rw [add_mul]
⟩
@@ -646,7 +646,7 @@ protected def comp (g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁
(g.toAddMonoidHom.comp f.toAddMonoidHom).mkNormedAddGroupHom (‖g‖ * ‖f‖) fun v =>
calc
‖g (f v)‖ ≤ ‖g‖ * ‖f v‖ := le_op_norm _ _
- _ ≤ ‖g‖ * (‖f‖ * ‖v‖) := mul_le_mul_of_nonneg_left (le_op_norm _ _) (op_norm_nonneg _)
+ _ ≤ ‖g‖ * (‖f‖ * ‖v‖) := (mul_le_mul_of_nonneg_left (le_op_norm _ _) (op_norm_nonneg _))
_ = ‖g‖ * ‖f‖ * ‖v‖ := by rw [mul_assoc]
#align normed_add_group_hom.comp NormedAddGroupHom.comp
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -869,11 +869,8 @@ variable {W₁ W₂ W₃ : Type*} [SeminormedAddCommGroup W₁] [SeminormedAddCo
[SeminormedAddCommGroup W₃]
variable (f) (g : NormedAddGroupHom V W)
-
variable {f₁ g₁ : NormedAddGroupHom V₁ W₁}
-
variable {f₂ g₂ : NormedAddGroupHom V₂ W₂}
-
variable {f₃ g₃ : NormedAddGroupHom V₃ W₃}
/-- The equalizer of two morphisms `f g : NormedAddGroupHom V W`. -/
@@ -945,7 +942,6 @@ def map (φ : NormedAddGroupHom V₁ V₂) (ψ : NormedAddGroupHom W₁ W₂) (h
#align normed_add_group_hom.equalizer.map NormedAddGroupHom.Equalizer.map
variable {φ : NormedAddGroupHom V₁ V₂} {ψ : NormedAddGroupHom W₁ W₂}
-
variable {φ' : NormedAddGroupHom V₂ V₃} {ψ' : NormedAddGroupHom W₂ W₃}
@[simp]
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -89,7 +89,7 @@ instance funLike : FunLike (NormedAddGroupHom V₁ V₂) V₁ V₂ where
coe := toFun
coe_injective' := fun f g h => by cases f; cases g; congr
--- porting note: moved this declaration up so we could get a `FunLike` instance sooner.
+-- Porting note: moved this declaration up so we could get a `FunLike` instance sooner.
instance toAddMonoidHomClass : AddMonoidHomClass (NormedAddGroupHom V₁ V₂) V₁ V₂ where
map_add f := f.map_add'
map_zero f := (AddMonoidHom.mk' f.toFun f.map_add').map_zero
@@ -124,7 +124,7 @@ theorem toFun_eq_coe : f.toFun = f :=
rfl
#align normed_add_group_hom.to_fun_eq_coe NormedAddGroupHom.toFun_eq_coe
--- porting note: removed `simp` because `simpNF` complains the LHS doesn't simplify.
+-- Porting note: removed `simp` because `simpNF` complains the LHS doesn't simplify.
theorem coe_mk (f) (h₁) (h₂) (h₃) : ⇑(⟨f, h₁, h₂, h₃⟩ : NormedAddGroupHom V₁ V₂) = f :=
rfl
#align normed_add_group_hom.coe_mk NormedAddGroupHom.coe_mk
@@ -337,7 +337,7 @@ theorem opNorm_add_le : ‖f + g‖ ≤ ‖f‖ + ‖g‖ :=
mkNormedAddGroupHom_norm_le _ (add_nonneg (opNorm_nonneg _) (opNorm_nonneg _)) _
#align normed_add_group_hom.op_norm_add_le NormedAddGroupHom.opNorm_add_le
--- porting note: this library note doesn't seem to apply anymore
+-- Porting note: this library note doesn't seem to apply anymore
/-
library_note "addition on function coercions"/--
Terms containing `@has_add.add (has_coe_to_fun.F ...) pi.has_add`
The FunLike hierarchy is very big and gets scanned through each time we need a coercion (via the CoeFun
instance). It looks like unbundled inheritance suits Lean 4 better here. The only class that still extends FunLike
is EquivLike
, since that has a custom coe_injective'
field that is easier to implement. All other classes should take FunLike
or EquivLike
as a parameter.
Previously, morphism classes would be Type
-valued and extend FunLike
:
/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
extends FunLike F A B :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))
After this PR, they should be Prop
-valued and take FunLike
as a parameter:
/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
[FunLike F A B] : Prop :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))
(Note that A B
stay marked as outParam
even though they are not purely required to be so due to the FunLike
parameter already filling them in. This is required to see through type synonyms, which is important in the category theory library. Also, I think keeping them as outParam
is slightly faster.)
Similarly, MyEquivClass
should take EquivLike
as a parameter.
As a result, every mention of [MyHomClass F A B]
should become [FunLike F A B] [MyHomClass F A B]
.
While overall this gives some great speedups, there are some cases that are noticeably slower. In particular, a failing application of a lemma such as map_mul
is more expensive. This is due to suboptimal processing of arguments. For example:
variable [FunLike F M N] [Mul M] [Mul N] (f : F) (x : M) (y : M)
theorem map_mul [MulHomClass F M N] : f (x * y) = f x * f y
example [AddHomClass F A B] : f (x * y) = f x * f y := map_mul f _ _
Before this PR, applying map_mul f
gives the goals [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]
. Since M
and N
are out_param
s, [MulHomClass F ?M ?N]
is synthesized first, supplies values for ?M
and ?N
and then the Mul M
and Mul N
instances can be found.
After this PR, the goals become [FunLike F ?M ?N] [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]
. Now [FunLike F ?M ?N]
is synthesized first, supplies values for ?M
and ?N
and then the Mul M
and Mul N
instances can be found, before trying MulHomClass F M N
which fails. Since the Mul
hierarchy is very big, this can be slow to fail, especially when there is no such Mul
instance.
A long-term but harder to achieve solution would be to specify the order in which instance goals get solved. For example, we'd like to change the arguments to map_mul
to look like [FunLike F M N] [Mul M] [Mul N] [highPriority <| MulHomClass F M N]
because MulHomClass
fails or succeeds much faster than the others.
As a consequence, the simpNF
linter is much slower since by design it tries and fails to apply many map_
lemmas. The same issue occurs a few times in existing calls to simp [map_mul]
, where map_mul
is tried "too soon" and fails. Thanks to the speedup of leanprover/lean4#2478 the impact is very limited, only in files that already were close to the timeout.
simp
not firing sometimesThis affects map_smulₛₗ
and related definitions. For simp
lemmas Lean apparently uses a slightly different mechanism to find instances, so that rw
can find every argument to map_smulₛₗ
successfully but simp
can't: leanprover/lean4#3701.
Especially in the category theory library, we might sometimes have a type A
which is also accessible as a synonym (Bundled A hA).1
. Instance synthesis doesn't always work if we have f : A →* B
but x * y : (Bundled A hA).1
or vice versa. This seems to be mostly fixed by keeping A B
as outParam
s in MulHomClass F A B
. (Presumably because Lean will do a definitional check A =?= (Bundled A hA).1
instead of using the syntax in the discrimination tree.)
The timeouts can be worked around for now by specifying which map_mul
we mean, either as map_mul f
for some explicit f
, or as e.g. MonoidHomClass.map_mul
.
map_smulₛₗ
not firing as simp
lemma can be worked around by going back to the pre-FunLike situation and making LinearMap.map_smulₛₗ
a simp
lemma instead of the generic map_smulₛₗ
. Writing simp [map_smulₛₗ _]
also works.
Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@@ -85,19 +85,15 @@ variable {f g : NormedAddGroupHom V₁ V₂}
def ofLipschitz (f : V₁ →+ V₂) {K : ℝ≥0} (h : LipschitzWith K f) : NormedAddGroupHom V₁ V₂ :=
f.mkNormedAddGroupHom K fun x ↦ by simpa only [map_zero, dist_zero_right] using h.dist_le_mul x 0
--- porting note: moved this declaration up so we could get a `DFunLike` instance sooner.
-instance toAddMonoidHomClass : AddMonoidHomClass (NormedAddGroupHom V₁ V₂) V₁ V₂ where
+instance funLike : FunLike (NormedAddGroupHom V₁ V₂) V₁ V₂ where
coe := toFun
coe_injective' := fun f g h => by cases f; cases g; congr
+
+-- porting note: moved this declaration up so we could get a `FunLike` instance sooner.
+instance toAddMonoidHomClass : AddMonoidHomClass (NormedAddGroupHom V₁ V₂) V₁ V₂ where
map_add f := f.map_add'
map_zero f := (AddMonoidHom.mk' f.toFun f.map_add').map_zero
-/--
-Helper instance for when there are too many metavariables to apply `DFunLike.coeFun` directly.
--/
-instance coeFun : CoeFun (NormedAddGroupHom V₁ V₂) fun _ => V₁ → V₂ :=
- ⟨DFunLike.coe⟩
-
initialize_simps_projections NormedAddGroupHom (toFun → apply)
theorem coe_inj (H : (f : V₁ → V₂) = g) : f = g := by
FunLike
to DFunLike
(#9785)
This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.
This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:
sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@@ -85,16 +85,18 @@ variable {f g : NormedAddGroupHom V₁ V₂}
def ofLipschitz (f : V₁ →+ V₂) {K : ℝ≥0} (h : LipschitzWith K f) : NormedAddGroupHom V₁ V₂ :=
f.mkNormedAddGroupHom K fun x ↦ by simpa only [map_zero, dist_zero_right] using h.dist_le_mul x 0
--- porting note: moved this declaration up so we could get a `FunLike` instance sooner.
+-- porting note: moved this declaration up so we could get a `DFunLike` instance sooner.
instance toAddMonoidHomClass : AddMonoidHomClass (NormedAddGroupHom V₁ V₂) V₁ V₂ where
coe := toFun
coe_injective' := fun f g h => by cases f; cases g; congr
map_add f := f.map_add'
map_zero f := (AddMonoidHom.mk' f.toFun f.map_add').map_zero
-/-- Helper instance for when there are too many metavariables to apply `FunLike.coeFun` directly. -/
+/--
+Helper instance for when there are too many metavariables to apply `DFunLike.coeFun` directly.
+-/
instance coeFun : CoeFun (NormedAddGroupHom V₁ V₂) fun _ => V₁ → V₂ :=
- ⟨FunLike.coe⟩
+ ⟨DFunLike.coe⟩
initialize_simps_projections NormedAddGroupHom (toFun → apply)
@@ -611,7 +613,7 @@ instance toNormedAddCommGroup {V₁ V₂ : Type*} [NormedAddCommGroup V₁] [Nor
/-- Coercion of a `NormedAddGroupHom` is an `AddMonoidHom`. Similar to `AddMonoidHom.coeFn`. -/
@[simps]
def coeAddHom : NormedAddGroupHom V₁ V₂ →+ V₁ → V₂ where
- toFun := FunLike.coe
+ toFun := DFunLike.coe
map_zero' := coe_zero
map_add' := coe_add
#align normed_add_group_hom.coe_fn_add_hom NormedAddGroupHom.coeAddHom
@@ -619,7 +619,7 @@ def coeAddHom : NormedAddGroupHom V₁ V₂ →+ V₁ → V₂ where
@[simp]
theorem coe_sum {ι : Type*} (s : Finset ι) (f : ι → NormedAddGroupHom V₁ V₂) :
⇑(∑ i in s, f i) = ∑ i in s, (f i : V₁ → V₂) :=
- (coeAddHom : _ →+ V₁ → V₂).map_sum f s
+ map_sum coeAddHom f s
#align normed_add_group_hom.coe_sum NormedAddGroupHom.coe_sum
theorem sum_apply {ι : Type*} (s : Finset ι) (f : ι → NormedAddGroupHom V₁ V₂) (v : V₁) :
@@ -153,7 +153,7 @@ theorem coe_toAddMonoidHom : ⇑f.toAddMonoidHom = f :=
theorem toAddMonoidHom_injective :
Function.Injective (@NormedAddGroupHom.toAddMonoidHom V₁ V₂ _ _) := fun f g h =>
- coe_inj <| by rw [←coe_toAddMonoidHom f, ←coe_toAddMonoidHom g, h]
+ coe_inj <| by rw [← coe_toAddMonoidHom f, ← coe_toAddMonoidHom g, h]
#align normed_add_group_hom.to_add_monoid_hom_injective NormedAddGroupHom.toAddMonoidHom_injective
@[simp]
@@ -747,7 +747,7 @@ theorem mem_ker (v : V₁) : v ∈ f.ker ↔ f v = 0 := by
the corestriction of `f` to the kernel of `g`. -/
@[simps]
def ker.lift (h : g.comp f = 0) : NormedAddGroupHom V₁ g.ker where
- toFun v := ⟨f v, by rw [g.mem_ker, ←comp_apply g f, h, zero_apply]⟩
+ toFun v := ⟨f v, by rw [g.mem_ker, ← comp_apply g f, h, zero_apply]⟩
map_add' v w := by simp only [map_add, AddSubmonoid.mk_add_mk]
bound' := f.bound'
#align normed_add_group_hom.ker.lift NormedAddGroupHom.ker.lift
@@ -315,10 +315,10 @@ theorem mkNormedAddGroupHom_norm_le' (f : V₁ →+ V₂) {C : ℝ} (h : ∀ x,
(h x).trans <| by gcongr; apply le_max_left
#align normed_add_group_hom.mk_normed_add_group_hom_norm_le' NormedAddGroupHom.mkNormedAddGroupHom_norm_le'
-alias mkNormedAddGroupHom_norm_le ← _root_.AddMonoidHom.mkNormedAddGroupHom_norm_le
+alias _root_.AddMonoidHom.mkNormedAddGroupHom_norm_le := mkNormedAddGroupHom_norm_le
#align add_monoid_hom.mk_normed_add_group_hom_norm_le AddMonoidHom.mkNormedAddGroupHom_norm_le
-alias mkNormedAddGroupHom_norm_le' ← _root_.AddMonoidHom.mkNormedAddGroupHom_norm_le'
+alias _root_.AddMonoidHom.mkNormedAddGroupHom_norm_le' := mkNormedAddGroupHom_norm_le'
#align add_monoid_hom.mk_normed_add_group_hom_norm_le' AddMonoidHom.mkNormedAddGroupHom_norm_le'
/-! ### Addition of normed group homs -/
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -32,7 +32,7 @@ open NNReal BigOperators
-- TODO: migrate to the new morphism / morphism_class style
/-- A morphism of seminormed abelian groups is a bounded group homomorphism. -/
-structure NormedAddGroupHom (V W : Type _) [SeminormedAddCommGroup V]
+structure NormedAddGroupHom (V W : Type*) [SeminormedAddCommGroup V]
[SeminormedAddCommGroup W] where
/-- The function underlying a `NormedAddGroupHom` -/
toFun : V → W
@@ -44,7 +44,7 @@ structure NormedAddGroupHom (V W : Type _) [SeminormedAddCommGroup V]
namespace AddMonoidHom
-variable {V W : Type _} [SeminormedAddCommGroup V] [SeminormedAddCommGroup W]
+variable {V W : Type*} [SeminormedAddCommGroup V] [SeminormedAddCommGroup W]
{f g : NormedAddGroupHom V W}
/-- Associate to a group homomorphism a bounded group homomorphism under a norm control condition.
@@ -64,7 +64,7 @@ def mkNormedAddGroupHom' (f : V →+ W) (C : ℝ≥0) (hC : ∀ x, ‖f x‖₊
end AddMonoidHom
-theorem exists_pos_bound_of_bound {V W : Type _} [SeminormedAddCommGroup V]
+theorem exists_pos_bound_of_bound {V W : Type*} [SeminormedAddCommGroup V]
[SeminormedAddCommGroup W] {f : V → W} (M : ℝ) (h : ∀ x, ‖f x‖ ≤ M * ‖x‖) :
∃ N, 0 < N ∧ ∀ x, ‖f x‖ ≤ N * ‖x‖ :=
⟨max M 1, lt_of_lt_of_le zero_lt_one (le_max_right _ _), fun x =>
@@ -76,7 +76,7 @@ theorem exists_pos_bound_of_bound {V W : Type _} [SeminormedAddCommGroup V]
namespace NormedAddGroupHom
-variable {V V₁ V₂ V₃ : Type _} [SeminormedAddCommGroup V] [SeminormedAddCommGroup V₁]
+variable {V V₁ V₂ V₃ : Type*} [SeminormedAddCommGroup V] [SeminormedAddCommGroup V₁]
[SeminormedAddCommGroup V₂] [SeminormedAddCommGroup V₃]
variable {f g : NormedAddGroupHom V₁ V₂}
@@ -382,7 +382,7 @@ theorem opNorm_zero : ‖(0 : NormedAddGroupHom V₁ V₂)‖ = 0 :=
#align normed_add_group_hom.op_norm_zero NormedAddGroupHom.opNorm_zero
/-- For normed groups, an operator is zero iff its norm vanishes. -/
-theorem opNorm_zero_iff {V₁ V₂ : Type _} [NormedAddCommGroup V₁] [NormedAddCommGroup V₂]
+theorem opNorm_zero_iff {V₁ V₂ : Type*} [NormedAddCommGroup V₁] [NormedAddCommGroup V₂]
{f : NormedAddGroupHom V₁ V₂} : ‖f‖ = 0 ↔ f = 0 :=
Iff.intro
(fun hn =>
@@ -435,7 +435,7 @@ theorem norm_id_of_nontrivial_seminorm (h : ∃ x : V, ‖x‖ ≠ 0) : ‖id V
#align normed_add_group_hom.norm_id_of_nontrivial_seminorm NormedAddGroupHom.norm_id_of_nontrivial_seminorm
/-- If a normed space is non-trivial, then the norm of the identity equals `1`. -/
-theorem norm_id {V : Type _} [NormedAddCommGroup V] [Nontrivial V] : ‖id V‖ = 1 := by
+theorem norm_id {V : Type*} [NormedAddCommGroup V] [Nontrivial V] : ‖id V‖ = 1 := by
refine' norm_id_of_nontrivial_seminorm V _
obtain ⟨x, hx⟩ := exists_ne (0 : V)
exact ⟨x, ne_of_gt (norm_pos_iff.2 hx)⟩
@@ -494,7 +494,7 @@ theorem sub_apply (f g : NormedAddGroupHom V₁ V₂) (v : V₁) :
section SMul
-variable {R R' : Type _} [MonoidWithZero R] [DistribMulAction R V₂] [PseudoMetricSpace R]
+variable {R R' : Type*} [MonoidWithZero R] [DistribMulAction R V₂] [PseudoMetricSpace R]
[BoundedSMul R V₂] [MonoidWithZero R'] [DistribMulAction R' V₂] [PseudoMetricSpace R']
[BoundedSMul R' V₂]
@@ -598,7 +598,7 @@ instance toSeminormedAddCommGroup : SeminormedAddCommGroup (NormedAddGroupHom V
/-- Normed group homomorphisms themselves form a normed group with respect to
the operator norm. -/
-instance toNormedAddCommGroup {V₁ V₂ : Type _} [NormedAddCommGroup V₁] [NormedAddCommGroup V₂] :
+instance toNormedAddCommGroup {V₁ V₂ : Type*} [NormedAddCommGroup V₁] [NormedAddCommGroup V₂] :
NormedAddCommGroup (NormedAddGroupHom V₁ V₂) :=
AddGroupNorm.toNormedAddCommGroup
{ toFun := opNorm
@@ -617,23 +617,23 @@ def coeAddHom : NormedAddGroupHom V₁ V₂ →+ V₁ → V₂ where
#align normed_add_group_hom.coe_fn_add_hom NormedAddGroupHom.coeAddHom
@[simp]
-theorem coe_sum {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V₁ V₂) :
+theorem coe_sum {ι : Type*} (s : Finset ι) (f : ι → NormedAddGroupHom V₁ V₂) :
⇑(∑ i in s, f i) = ∑ i in s, (f i : V₁ → V₂) :=
(coeAddHom : _ →+ V₁ → V₂).map_sum f s
#align normed_add_group_hom.coe_sum NormedAddGroupHom.coe_sum
-theorem sum_apply {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V₁ V₂) (v : V₁) :
+theorem sum_apply {ι : Type*} (s : Finset ι) (f : ι → NormedAddGroupHom V₁ V₂) (v : V₁) :
(∑ i in s, f i) v = ∑ i in s, f i v := by simp only [coe_sum, Finset.sum_apply]
#align normed_add_group_hom.sum_apply NormedAddGroupHom.sum_apply
/-! ### Module structure on normed group homs -/
-instance distribMulAction {R : Type _} [MonoidWithZero R] [DistribMulAction R V₂]
+instance distribMulAction {R : Type*} [MonoidWithZero R] [DistribMulAction R V₂]
[PseudoMetricSpace R] [BoundedSMul R V₂] : DistribMulAction R (NormedAddGroupHom V₁ V₂) :=
Function.Injective.distribMulAction coeAddHom coe_injective coe_smul
-instance module {R : Type _} [Semiring R] [Module R V₂] [PseudoMetricSpace R] [BoundedSMul R V₂] :
+instance module {R : Type*} [Semiring R] [Module R V₂] [PseudoMetricSpace R] [BoundedSMul R V₂] :
Module R (NormedAddGroupHom V₁ V₂) :=
Function.Injective.module _ coeAddHom coe_injective coe_smul
@@ -695,7 +695,7 @@ theorem zero_comp (f : NormedAddGroupHom V₁ V₂) : (0 : NormedAddGroupHom V
rfl
#align normed_add_group_hom.zero_comp NormedAddGroupHom.zero_comp
-theorem comp_assoc {V₄ : Type _} [SeminormedAddCommGroup V₄] (h : NormedAddGroupHom V₃ V₄)
+theorem comp_assoc {V₄ : Type*} [SeminormedAddCommGroup V₄] (h : NormedAddGroupHom V₃ V₄)
(g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁ V₂) :
(h.comp g).comp f = h.comp (g.comp f) := by
ext
@@ -711,7 +711,7 @@ end NormedAddGroupHom
namespace NormedAddGroupHom
-variable {V W V₁ V₂ V₃ : Type _} [SeminormedAddCommGroup V] [SeminormedAddCommGroup W]
+variable {V W V₁ V₂ V₃ : Type*} [SeminormedAddCommGroup V] [SeminormedAddCommGroup W]
[SeminormedAddCommGroup V₁] [SeminormedAddCommGroup V₂] [SeminormedAddCommGroup V₃]
/-- The inclusion of an `AddSubgroup`, as bounded group homomorphism. -/
@@ -768,7 +768,7 @@ theorem coe_ker : (f.ker : Set V₁) = (f : V₁ → V₂) ⁻¹' {0} :=
rfl
#align normed_add_group_hom.coe_ker NormedAddGroupHom.coe_ker
-theorem isClosed_ker {V₂ : Type _} [NormedAddCommGroup V₂] (f : NormedAddGroupHom V₁ V₂) :
+theorem isClosed_ker {V₂ : Type*} [NormedAddCommGroup V₂] (f : NormedAddGroupHom V₁ V₂) :
IsClosed (f.ker : Set V₁) :=
f.coe_ker ▸ IsClosed.preimage f.continuous (T1Space.t1 0)
#align normed_add_group_hom.is_closed_ker NormedAddGroupHom.isClosed_ker
@@ -867,7 +867,7 @@ theorem normNoninc_of_isometry (hf : Isometry f) : f.NormNoninc := fun v =>
end Isometry
-variable {W₁ W₂ W₃ : Type _} [SeminormedAddCommGroup W₁] [SeminormedAddCommGroup W₂]
+variable {W₁ W₂ W₃ : Type*} [SeminormedAddCommGroup W₁] [SeminormedAddCommGroup W₂]
[SeminormedAddCommGroup W₃]
variable (f) (g : NormedAddGroupHom V W)
@@ -2,14 +2,11 @@
Copyright (c) 2021 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin
-
-! This file was ported from Lean 3 source module analysis.normed.group.hom
-! leanprover-community/mathlib commit 3c4225288b55380a90df078ebae0991080b12393
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Analysis.Normed.Group.Basic
+#align_import analysis.normed.group.hom from "leanprover-community/mathlib"@"3c4225288b55380a90df078ebae0991080b12393"
+
/-!
# Normed groups homomorphisms
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -243,7 +243,7 @@ theorem le_opNorm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ := by
obtain ⟨C, _Cpos, hC⟩ := f.bound
replace hC := hC x
by_cases h : ‖x‖ = 0
- · rwa [h, mul_zero] at hC⊢
+ · rwa [h, mul_zero] at hC ⊢
have hlt : 0 < ‖x‖ := lt_of_le_of_ne (norm_nonneg x) (Ne.symm h)
exact
(div_le_iff hlt).mp
@@ -73,7 +73,7 @@ theorem exists_pos_bound_of_bound {V W : Type _} [SeminormedAddCommGroup V]
⟨max M 1, lt_of_lt_of_le zero_lt_one (le_max_right _ _), fun x =>
calc
‖f x‖ ≤ M * ‖x‖ := h x
- _ ≤ max M 1 * ‖x‖ := mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg _)
+ _ ≤ max M 1 * ‖x‖ := by gcongr; apply le_max_left
⟩
#align exists_pos_bound_of_bound exists_pos_bound_of_bound
@@ -189,7 +189,7 @@ theorem SurjectiveOnWith.mono {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup
use g, rfl
by_cases Hg : ‖f g‖ = 0
· simpa [Hg] using hg
- · exact hg.trans ((mul_le_mul_right <| (Ne.symm Hg).le_iff_lt.mp (norm_nonneg _)).mpr H)
+ · exact hg.trans (by gcongr)
#align normed_add_group_hom.surjective_on_with.mono NormedAddGroupHom.SurjectiveOnWith.mono
theorem SurjectiveOnWith.exists_pos {f : NormedAddGroupHom V₁ V₂} {K : AddSubgroup V₂} {C : ℝ}
@@ -251,11 +251,11 @@ theorem le_opNorm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ := by
#align normed_add_group_hom.le_op_norm NormedAddGroupHom.le_opNorm
theorem le_opNorm_of_le {c : ℝ} {x} (h : ‖x‖ ≤ c) : ‖f x‖ ≤ ‖f‖ * c :=
- le_trans (f.le_opNorm x) (mul_le_mul_of_nonneg_left h f.opNorm_nonneg)
+ le_trans (f.le_opNorm x) (by gcongr; exact f.opNorm_nonneg)
#align normed_add_group_hom.le_op_norm_of_le NormedAddGroupHom.le_opNorm_of_le
theorem le_of_opNorm_le {c : ℝ} (h : ‖f‖ ≤ c) (x : V₁) : ‖f x‖ ≤ c * ‖x‖ :=
- (f.le_opNorm x).trans (mul_le_mul_of_nonneg_right h (norm_nonneg x))
+ (f.le_opNorm x).trans (by gcongr)
#align normed_add_group_hom.le_of_op_norm_le NormedAddGroupHom.le_of_opNorm_le
/-- continuous linear maps are Lipschitz continuous. -/
@@ -315,7 +315,7 @@ given to the constructor or zero if this bound is negative. -/
theorem mkNormedAddGroupHom_norm_le' (f : V₁ →+ V₂) {C : ℝ} (h : ∀ x, ‖f x‖ ≤ C * ‖x‖) :
‖f.mkNormedAddGroupHom C h‖ ≤ max C 0 :=
opNorm_le_bound _ (le_max_right _ _) fun x =>
- (h x).trans <| mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg x)
+ (h x).trans <| by gcongr; apply le_max_left
#align normed_add_group_hom.mk_normed_add_group_hom_norm_le' NormedAddGroupHom.mkNormedAddGroupHom_norm_le'
alias mkNormedAddGroupHom_norm_le ← _root_.AddMonoidHom.mkNormedAddGroupHom_norm_le
@@ -333,7 +333,7 @@ instance add : Add (NormedAddGroupHom V₁ V₂) :=
(f.toAddMonoidHom + g.toAddMonoidHom).mkNormedAddGroupHom (‖f‖ + ‖g‖) fun v =>
calc
‖f v + g v‖ ≤ ‖f v‖ + ‖g v‖ := norm_add_le _ _
- _ ≤ ‖f‖ * ‖v‖ + ‖g‖ * ‖v‖ := (add_le_add (le_opNorm f v) (le_opNorm g v))
+ _ ≤ ‖f‖ * ‖v‖ + ‖g‖ * ‖v‖ := by gcongr <;> apply le_opNorm
_ = (‖f‖ + ‖g‖) * ‖v‖ := by rw [add_mul]
⟩
@@ -512,7 +512,7 @@ instance smul : SMul R (NormedAddGroupHom V₁ V₂) where
rw [map_zero, smul_zero, dist_zero_right, dist_zero_right] at this
rw [mul_assoc]
refine' this.trans _
- refine' mul_le_mul_of_nonneg_left _ dist_nonneg
+ gcongr
exact hb x⟩ }
@[simp]
@@ -547,7 +547,7 @@ instance nsmul : SMul ℕ (NormedAddGroupHom V₁ V₂) where
let ⟨b, hb⟩ := f.bound'
⟨n • b, fun v => by
rw [Pi.smul_apply, nsmul_eq_mul, mul_assoc]
- exact (norm_nsmul_le _ _).trans (mul_le_mul_of_nonneg_left (hb _) (Nat.cast_nonneg _))⟩ }
+ exact (norm_nsmul_le _ _).trans (by gcongr; apply hb)⟩ }
#align normed_add_group_hom.has_nat_scalar NormedAddGroupHom.nsmul
@[simp]
@@ -568,7 +568,7 @@ instance zsmul : SMul ℤ (NormedAddGroupHom V₁ V₂) where
let ⟨b, hb⟩ := f.bound'
⟨‖z‖ • b, fun v => by
rw [Pi.smul_apply, smul_eq_mul, mul_assoc]
- exact (norm_zsmul_le _ _).trans (mul_le_mul_of_nonneg_left (hb _) <| norm_nonneg _)⟩ }
+ exact (norm_zsmul_le _ _).trans (by gcongr; apply hb)⟩ }
#align normed_add_group_hom.has_int_scalar NormedAddGroupHom.zsmul
@[simp]
@@ -650,7 +650,7 @@ protected def comp (g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁
(g.toAddMonoidHom.comp f.toAddMonoidHom).mkNormedAddGroupHom (‖g‖ * ‖f‖) fun v =>
calc
‖g (f v)‖ ≤ ‖g‖ * ‖f v‖ := le_opNorm _ _
- _ ≤ ‖g‖ * (‖f‖ * ‖v‖) := (mul_le_mul_of_nonneg_left (le_opNorm _ _) (opNorm_nonneg _))
+ _ ≤ ‖g‖ * (‖f‖ * ‖v‖) := by gcongr; apply le_opNorm
_ = ‖g‖ * ‖f‖ * ‖v‖ := by rw [mul_assoc]
#align normed_add_group_hom.comp NormedAddGroupHom.comp
@@ -661,7 +661,7 @@ theorem norm_comp_le (g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V
theorem norm_comp_le_of_le {g : NormedAddGroupHom V₂ V₃} {C₁ C₂ : ℝ} (hg : ‖g‖ ≤ C₂)
(hf : ‖f‖ ≤ C₁) : ‖g.comp f‖ ≤ C₂ * C₁ :=
- le_trans (norm_comp_le g f) <| mul_le_mul hg hf (norm_nonneg _) (le_trans (norm_nonneg _) hg)
+ le_trans (norm_comp_le g f) <| by gcongr; exact le_trans (norm_nonneg _) hg
#align normed_add_group_hom.norm_comp_le_of_le NormedAddGroupHom.norm_comp_le_of_le
theorem norm_comp_le_of_le' {g : NormedAddGroupHom V₂ V₃} (C₁ C₂ C₃ : ℝ) (h : C₃ = C₂ * C₁)
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -210,18 +210,18 @@ theorem SurjectiveOnWith.surjOn {f : NormedAddGroupHom V₁ V₂} {K : AddSubgro
/-- The operator norm of a seminormed group homomorphism is the inf of all its bounds. -/
def opNorm (f : NormedAddGroupHom V₁ V₂) :=
- infₛ { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ }
+ sInf { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ }
#align normed_add_group_hom.op_norm NormedAddGroupHom.opNorm
instance hasOpNorm : Norm (NormedAddGroupHom V₁ V₂) :=
⟨opNorm⟩
#align normed_add_group_hom.has_op_norm NormedAddGroupHom.hasOpNorm
-theorem norm_def : ‖f‖ = infₛ { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } :=
+theorem norm_def : ‖f‖ = sInf { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } :=
rfl
#align normed_add_group_hom.norm_def NormedAddGroupHom.norm_def
--- So that invocations of `le_cinfₛ` make sense: we show that the set of
+-- So that invocations of `le_csInf` make sense: we show that the set of
-- bounds is nonempty and bounded below.
theorem bounds_nonempty {f : NormedAddGroupHom V₁ V₂} :
∃ c, c ∈ { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } :=
@@ -235,7 +235,7 @@ theorem bounds_bddBelow {f : NormedAddGroupHom V₁ V₂} :
#align normed_add_group_hom.bounds_bdd_below NormedAddGroupHom.bounds_bddBelow
theorem opNorm_nonneg : 0 ≤ ‖f‖ :=
- le_cinfₛ bounds_nonempty fun _ ⟨hx, _⟩ => hx
+ le_csInf bounds_nonempty fun _ ⟨hx, _⟩ => hx
#align normed_add_group_hom.op_norm_nonneg NormedAddGroupHom.opNorm_nonneg
/-- The fundamental property of the operator norm: `‖f x‖ ≤ ‖f‖ * ‖x‖`. -/
@@ -247,7 +247,7 @@ theorem le_opNorm (x : V₁) : ‖f x‖ ≤ ‖f‖ * ‖x‖ := by
have hlt : 0 < ‖x‖ := lt_of_le_of_ne (norm_nonneg x) (Ne.symm h)
exact
(div_le_iff hlt).mp
- (le_cinfₛ bounds_nonempty fun c ⟨_, hc⟩ => (div_le_iff hlt).mpr <| by apply hc)
+ (le_csInf bounds_nonempty fun c ⟨_, hc⟩ => (div_le_iff hlt).mpr <| by apply hc)
#align normed_add_group_hom.le_op_norm NormedAddGroupHom.le_opNorm
theorem le_opNorm_of_le {c : ℝ} {x} (h : ‖x‖ ≤ c) : ‖f x‖ ≤ ‖f‖ * c :=
@@ -280,13 +280,13 @@ theorem ratio_le_opNorm (x : V₁) : ‖f x‖ / ‖x‖ ≤ ‖f‖ :=
/-- If one controls the norm of every `f x`, then one controls the norm of `f`. -/
theorem opNorm_le_bound {M : ℝ} (hMp : 0 ≤ M) (hM : ∀ x, ‖f x‖ ≤ M * ‖x‖) : ‖f‖ ≤ M :=
- cinfₛ_le bounds_bddBelow ⟨hMp, hM⟩
+ csInf_le bounds_bddBelow ⟨hMp, hM⟩
#align normed_add_group_hom.op_norm_le_bound NormedAddGroupHom.opNorm_le_bound
theorem opNorm_eq_of_bounds {M : ℝ} (M_nonneg : 0 ≤ M) (h_above : ∀ x, ‖f x‖ ≤ M * ‖x‖)
(h_below : ∀ N ≥ 0, (∀ x, ‖f x‖ ≤ N * ‖x‖) → M ≤ N) : ‖f‖ = M :=
le_antisymm (f.opNorm_le_bound M_nonneg h_above)
- ((le_cinfₛ_iff NormedAddGroupHom.bounds_bddBelow ⟨M, M_nonneg, h_above⟩).mpr
+ ((le_csInf_iff NormedAddGroupHom.bounds_bddBelow ⟨M, M_nonneg, h_above⟩).mpr
fun N ⟨N_nonneg, hN⟩ => h_below N N_nonneg hN)
#align normed_add_group_hom.op_norm_eq_of_bounds NormedAddGroupHom.opNorm_eq_of_bounds
@@ -375,7 +375,7 @@ instance inhabited : Inhabited (NormedAddGroupHom V₁ V₂) :=
/-- The norm of the `0` operator is `0`. -/
theorem opNorm_zero : ‖(0 : NormedAddGroupHom V₁ V₂)‖ = 0 :=
le_antisymm
- (cinfₛ_le bounds_bddBelow
+ (csInf_le bounds_bddBelow
⟨ge_of_eq rfl, fun _ =>
le_of_eq
(by
This PR fixes two things:
align
statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align
). This is often seen in the mathport output after ending calc
blocks.#align
statements. (This was needed for a script I wrote for #3630.)@@ -652,7 +652,6 @@ protected def comp (g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁
‖g (f v)‖ ≤ ‖g‖ * ‖f v‖ := le_opNorm _ _
_ ≤ ‖g‖ * (‖f‖ * ‖v‖) := (mul_le_mul_of_nonneg_left (le_opNorm _ _) (opNorm_nonneg _))
_ = ‖g‖ * ‖f‖ * ‖v‖ := by rw [mul_assoc]
-
#align normed_add_group_hom.comp NormedAddGroupHom.comp
theorem norm_comp_le (g : NormedAddGroupHom V₂ V₃) (f : NormedAddGroupHom V₁ V₂) :
@@ -632,7 +632,7 @@ theorem sum_apply {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V
/-! ### Module structure on normed group homs -/
-instance distribMulActoin {R : Type _} [MonoidWithZero R] [DistribMulAction R V₂]
+instance distribMulAction {R : Type _} [MonoidWithZero R] [DistribMulAction R V₂]
[PseudoMetricSpace R] [BoundedSMul R V₂] : DistribMulAction R (NormedAddGroupHom V₁ V₂) :=
Function.Injective.distribMulAction coeAddHom coe_injective coe_smul
@@ -156,10 +156,7 @@ theorem coe_toAddMonoidHom : ⇑f.toAddMonoidHom = f :=
theorem toAddMonoidHom_injective :
Function.Injective (@NormedAddGroupHom.toAddMonoidHom V₁ V₂ _ _) := fun f g h =>
- coe_inj <|
- show ⇑f.toAddMonoidHom = g by
- rw [h]
- rfl
+ coe_inj <| by rw [←coe_toAddMonoidHom f, ←coe_toAddMonoidHom g, h]
#align normed_add_group_hom.to_add_monoid_hom_injective NormedAddGroupHom.toAddMonoidHom_injective
@[simp]
@@ -257,14 +254,13 @@ theorem le_opNorm_of_le {c : ℝ} {x} (h : ‖x‖ ≤ c) : ‖f x‖ ≤ ‖f
le_trans (f.le_opNorm x) (mul_le_mul_of_nonneg_left h f.opNorm_nonneg)
#align normed_add_group_hom.le_op_norm_of_le NormedAddGroupHom.le_opNorm_of_le
-theorem le_of_op_norm_le {c : ℝ} (h : ‖f‖ ≤ c) (x : V₁) : ‖f x‖ ≤ c * ‖x‖ :=
+theorem le_of_opNorm_le {c : ℝ} (h : ‖f‖ ≤ c) (x : V₁) : ‖f x‖ ≤ c * ‖x‖ :=
(f.le_opNorm x).trans (mul_le_mul_of_nonneg_right h (norm_nonneg x))
-#align normed_add_group_hom.le_of_op_norm_le NormedAddGroupHom.le_of_op_norm_le
+#align normed_add_group_hom.le_of_op_norm_le NormedAddGroupHom.le_of_opNorm_le
/-- continuous linear maps are Lipschitz continuous. -/
theorem lipschitz : LipschitzWith ⟨‖f‖, opNorm_nonneg f⟩ f :=
- LipschitzWith.of_dist_le_mul fun x y =>
- by
+ LipschitzWith.of_dist_le_mul fun x y => by
rw [dist_eq_norm, dist_eq_norm, ← map_sub]
apply le_opNorm
#align normed_add_group_hom.lipschitz NormedAddGroupHom.lipschitz
@@ -481,8 +477,7 @@ theorem opNorm_neg (f : NormedAddGroupHom V₁ V₂) : ‖-f‖ = ‖f‖ := by
instance sub : Sub (NormedAddGroupHom V₁ V₂) :=
⟨fun f g =>
{ f.toAddMonoidHom - g.toAddMonoidHom with
- bound' :=
- by
+ bound' := by
simp only [AddMonoidHom.sub_apply, AddMonoidHom.toFun_eq_coe, sub_eq_add_neg]
exact (f + -g).bound' }⟩
@@ -503,11 +498,11 @@ theorem sub_apply (f g : NormedAddGroupHom V₁ V₂) (v : V₁) :
section SMul
variable {R R' : Type _} [MonoidWithZero R] [DistribMulAction R V₂] [PseudoMetricSpace R]
- [BoundedSmul R V₂] [MonoidWithZero R'] [DistribMulAction R' V₂] [PseudoMetricSpace R']
- [BoundedSmul R' V₂]
+ [BoundedSMul R V₂] [MonoidWithZero R'] [DistribMulAction R' V₂] [PseudoMetricSpace R']
+ [BoundedSMul R' V₂]
-instance smul : SMul R (NormedAddGroupHom V₁ V₂)
- where smul r f :=
+instance smul : SMul R (NormedAddGroupHom V₁ V₂) where
+ smul r f :=
{ toFun := r • ⇑f
map_add' := (r • f.toAddMonoidHom).map_add'
bound' :=
@@ -544,8 +539,8 @@ instance isCentralScalar [DistribMulAction Rᵐᵒᵖ V₂] [IsCentralScalar R V
end SMul
-instance natSMul : SMul ℕ (NormedAddGroupHom V₁ V₂)
- where smul n f :=
+instance nsmul : SMul ℕ (NormedAddGroupHom V₁ V₂) where
+ smul n f :=
{ toFun := n • ⇑f
map_add' := (n • f.toAddMonoidHom).map_add'
bound' :=
@@ -553,7 +548,7 @@ instance natSMul : SMul ℕ (NormedAddGroupHom V₁ V₂)
⟨n • b, fun v => by
rw [Pi.smul_apply, nsmul_eq_mul, mul_assoc]
exact (norm_nsmul_le _ _).trans (mul_le_mul_of_nonneg_left (hb _) (Nat.cast_nonneg _))⟩ }
-#align normed_add_group_hom.has_nat_scalar NormedAddGroupHom.natSMul
+#align normed_add_group_hom.has_nat_scalar NormedAddGroupHom.nsmul
@[simp]
theorem coe_nsmul (r : ℕ) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • ⇑f :=
@@ -565,7 +560,7 @@ theorem nsmul_apply (r : ℕ) (f : NormedAddGroupHom V₁ V₂) (v : V₁) : (r
rfl
#align normed_add_group_hom.nsmul_apply NormedAddGroupHom.nsmul_apply
-instance intSMul : SMul ℤ (NormedAddGroupHom V₁ V₂) where
+instance zsmul : SMul ℤ (NormedAddGroupHom V₁ V₂) where
smul z f :=
{ toFun := z • ⇑f
map_add' := (z • f.toAddMonoidHom).map_add'
@@ -574,7 +569,7 @@ instance intSMul : SMul ℤ (NormedAddGroupHom V₁ V₂) where
⟨‖z‖ • b, fun v => by
rw [Pi.smul_apply, smul_eq_mul, mul_assoc]
exact (norm_zsmul_le _ _).trans (mul_le_mul_of_nonneg_left (hb _) <| norm_nonneg _)⟩ }
-#align normed_add_group_hom.has_int_scalar NormedAddGroupHom.intSMul
+#align normed_add_group_hom.has_int_scalar NormedAddGroupHom.zsmul
@[simp]
theorem coe_zsmul (r : ℤ) (f : NormedAddGroupHom V₁ V₂) : ⇑(r • f) = r • ⇑f :=
@@ -618,8 +613,7 @@ instance toNormedAddCommGroup {V₁ V₂ : Type _} [NormedAddCommGroup V₁] [No
/-- Coercion of a `NormedAddGroupHom` is an `AddMonoidHom`. Similar to `AddMonoidHom.coeFn`. -/
@[simps]
-def coeAddHom : NormedAddGroupHom V₁ V₂ →+ V₁ → V₂
- where
+def coeAddHom : NormedAddGroupHom V₁ V₂ →+ V₁ → V₂ where
toFun := FunLike.coe
map_zero' := coe_zero
map_add' := coe_add
@@ -639,10 +633,10 @@ theorem sum_apply {ι : Type _} (s : Finset ι) (f : ι → NormedAddGroupHom V
instance distribMulActoin {R : Type _} [MonoidWithZero R] [DistribMulAction R V₂]
- [PseudoMetricSpace R] [BoundedSmul R V₂] : DistribMulAction R (NormedAddGroupHom V₁ V₂) :=
+ [PseudoMetricSpace R] [BoundedSMul R V₂] : DistribMulAction R (NormedAddGroupHom V₁ V₂) :=
Function.Injective.distribMulAction coeAddHom coe_injective coe_smul
-instance module {R : Type _} [Semiring R] [Module R V₂] [PseudoMetricSpace R] [BoundedSmul R V₂] :
+instance module {R : Type _} [Semiring R] [Module R V₂] [PseudoMetricSpace R] [BoundedSMul R V₂] :
Module R (NormedAddGroupHom V₁ V₂) :=
Function.Injective.module _ coeAddHom coe_injective coe_smul
@@ -726,14 +720,10 @@ variable {V W V₁ V₂ V₃ : Type _} [SeminormedAddCommGroup V] [SeminormedAdd
/-- The inclusion of an `AddSubgroup`, as bounded group homomorphism. -/
@[simps!]
-def incl (s : AddSubgroup V) : NormedAddGroupHom s V
- where
+def incl (s : AddSubgroup V) : NormedAddGroupHom s V where
toFun := (Subtype.val : s → V)
map_add' v w := AddSubgroup.coe_add _ _ _
- bound' :=
- ⟨1, fun v => by
- rw [one_mul]
- rfl⟩
+ bound' := ⟨1, fun v => by rw [one_mul, AddSubgroup.coe_norm]⟩
#align normed_add_group_hom.incl NormedAddGroupHom.incl
theorem norm_incl {V' : AddSubgroup V} (x : V') : ‖incl _ x‖ = ‖x‖ :=
@@ -754,24 +744,15 @@ def ker : AddSubgroup V₁ :=
#align normed_add_group_hom.ker NormedAddGroupHom.ker
theorem mem_ker (v : V₁) : v ∈ f.ker ↔ f v = 0 := by
- erw [f.toAddMonoidHom.mem_ker]
- rfl
+ erw [f.toAddMonoidHom.mem_ker, coe_toAddMonoidHom]
#align normed_add_group_hom.mem_ker NormedAddGroupHom.mem_ker
/-- Given a normed group hom `f : V₁ → V₂` satisfying `g.comp f = 0` for some `g : V₂ → V₃`,
the corestriction of `f` to the kernel of `g`. -/
@[simps]
-def ker.lift (h : g.comp f = 0) : NormedAddGroupHom V₁ g.ker
- where
- toFun v :=
- ⟨f v, by
- erw [g.mem_ker]
- show (g.comp f) v = 0
- rw [h]
- rfl⟩
- map_add' v w := by
- simp only [map_add]
- rfl
+def ker.lift (h : g.comp f = 0) : NormedAddGroupHom V₁ g.ker where
+ toFun v := ⟨f v, by rw [g.mem_ker, ←comp_apply g f, h, zero_apply]⟩
+ map_add' v w := by simp only [map_add, AddSubmonoid.mk_add_mk]
bound' := f.bound'
#align normed_add_group_hom.ker.lift NormedAddGroupHom.ker.lift
@@ -849,7 +830,7 @@ theorem normNoninc_iff_norm_le_one : f.NormNoninc ↔ ‖f‖ ≤ 1 := by
refine' ⟨fun h => _, fun h => fun v => _⟩
· refine' opNorm_le_bound _ zero_le_one fun v => _
simpa [one_mul] using h v
- · simpa using le_of_op_norm_le f h v
+ · simpa using le_of_opNorm_le f h v
#align normed_add_group_hom.norm_noninc.norm_noninc_iff_norm_le_one NormedAddGroupHom.NormNoninc.normNoninc_iff_norm_le_one
theorem zero : (0 : NormedAddGroupHom V₁ V₂).NormNoninc := fun v => by simp
@@ -84,12 +84,15 @@ variable {V V₁ V₂ V₃ : Type _} [SeminormedAddCommGroup V] [SeminormedAddCo
variable {f g : NormedAddGroupHom V₁ V₂}
+/-- A Lipschitz continuous additive homomorphism is a normed additive group homomorphism. -/
+def ofLipschitz (f : V₁ →+ V₂) {K : ℝ≥0} (h : LipschitzWith K f) : NormedAddGroupHom V₁ V₂ :=
+ f.mkNormedAddGroupHom K fun x ↦ by simpa only [map_zero, dist_zero_right] using h.dist_le_mul x 0
+
-- porting note: moved this declaration up so we could get a `FunLike` instance sooner.
-instance toAddMonoidHomClass : AddMonoidHomClass (NormedAddGroupHom V₁ V₂) V₁ V₂
- where
+instance toAddMonoidHomClass : AddMonoidHomClass (NormedAddGroupHom V₁ V₂) V₁ V₂ where
coe := toFun
coe_injective' := fun f g h => by cases f; cases g; congr
- map_add f := (AddMonoidHom.mk' f.toFun f.map_add').map_add
+ map_add f := f.map_add'
map_zero f := (AddMonoidHom.mk' f.toFun f.map_add').map_zero
/-- Helper instance for when there are too many metavariables to apply `FunLike.coeFun` directly. -/
@@ -304,6 +307,12 @@ theorem mkNormedAddGroupHom_norm_le (f : V₁ →+ V₂) {C : ℝ} (hC : 0 ≤ C
opNorm_le_bound _ hC h
#align normed_add_group_hom.mk_normed_add_group_hom_norm_le NormedAddGroupHom.mkNormedAddGroupHom_norm_le
+/-- If a bounded group homomorphism map is constructed from a group homomorphism via the constructor
+`NormedAddGroupHom.ofLipschitz`, then its norm is bounded by the bound given to the constructor. -/
+theorem ofLipschitz_norm_le (f : V₁ →+ V₂) {K : ℝ≥0} (h : LipschitzWith K f) :
+ ‖ofLipschitz f h‖ ≤ K :=
+ mkNormedAddGroupHom_norm_le f K.coe_nonneg _
+
/-- If a bounded group homomorphism map is constructed from a group homomorphism
via the constructor `AddMonoidHom.mkNormedAddGroupHom`, then its norm is bounded by the bound
given to the constructor or zero if this bound is negative. -/
@@ -802,9 +811,7 @@ def range : AddSubgroup V₂ :=
f.toAddMonoidHom.range
#align normed_add_group_hom.range NormedAddGroupHom.range
-theorem mem_range (v : V₂) : v ∈ f.range ↔ ∃ w, f w = v := by
- rw [range, AddMonoidHom.mem_range]
- rfl
+theorem mem_range (v : V₂) : v ∈ f.range ↔ ∃ w, f w = v := Iff.rfl
#align normed_add_group_hom.mem_range NormedAddGroupHom.mem_range
@[simp]
The unported dependencies are
algebra.order.module
init.core
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file