File: Mathlib/Analysis/NormedSpace/OperatorNorm/Basic.lean

full_name: norm_image_of_norm_zero
code: /-- If `‖x‖ = 0` and `f` is continuous then `‖f x‖ = 0`. -/
theorem norm_image_of_norm_zero [SemilinearMapClass 𝓕 σ₁₂ E F] (f : 𝓕) (hf : Continuous f) {x : E}
    (hx : ‖x‖ = 0) : ‖f x‖ = 0 
goal: ‖f x‖ = 0

full_name: SemilinearMapClass.bound_of_shell_semi_normed
code: theorem SemilinearMapClass.bound_of_shell_semi_normed [SemilinearMapClass 𝓕 σ₁₂ E F] (f : 𝓕)
    {ε C : ℝ} (ε_pos : 0 < ε) {c : 𝕜} (hc : 1 < ‖c‖)
    (hf : ∀ x, ε / ‖c‖ ≤ ‖x‖ → ‖x‖ < ε → ‖f x‖ ≤ C * ‖x‖) {x : E} (hx : ‖x‖ ≠ 0) :
    ‖f x‖ ≤ C * ‖x‖ 
goal: ‖f x‖ ≤ C * ‖x‖

full_name: SemilinearMapClass.bound_of_continuous
code: /-- A continuous linear map between seminormed spaces is bounded when the field is nontrivially
normed. The continuity ensures boundedness on a ball of some radius `ε`. The nontriviality of the
norm is then used to rescale any element into an element of norm in `[ε/C, ε]`, whose image has a
controlled norm. The norm control for the original element follows by rescaling. -/
theorem SemilinearMapClass.bound_of_continuous [SemilinearMapClass 𝓕 σ₁₂ E F] (f : 𝓕)
    (hf : Continuous f) : ∃ C, 0 < C ∧ ∀ x : E, ‖f x‖ ≤ C * ‖x‖ 
goal: ∃ C, 0 < C ∧ ∀ (x : E), ‖f x‖ ≤ C * ‖x‖

full_name: ContinuousLinearMap.bound
code: theorem bound [RingHomIsometric σ₁₂] (f : E →SL[σ₁₂] F) : ∃ C, 0 < C ∧ ∀ x : E, ‖f x‖ ≤ C * ‖x‖ 
goal: ∃ C, 0 < C ∧ ∀ (x : E), ‖f x‖ ≤ C * ‖x‖

full_name: LinearIsometry.toSpanSingleton
code: /-- Given a unit-length element `x` of a normed space `E` over a field `𝕜`, the natural linear
    isometry map from `𝕜` to `E` by taking multiples of `x`. -/
def _root_.LinearIsometry.toSpanSingleton {v : E} (hv : ‖v‖ = 1) : 𝕜 →ₗᵢ[𝕜] E 
goal: 𝕜 →ₗᵢ[𝕜] E

full_name: LinearIsometry.toSpanSingleton_apply
code: @[simp]
theorem _root_.LinearIsometry.toSpanSingleton_apply {v : E} (hv : ‖v‖ = 1) (a : 𝕜) :
    LinearIsometry.toSpanSingleton 𝕜 E hv a = a • v 
goal: (LinearIsometry.toSpanSingleton 𝕜 E hv) a = a • v

full_name: LinearIsometry.coe_toSpanSingleton
code: @[simp]
theorem _root_.LinearIsometry.coe_toSpanSingleton {v : E} (hv : ‖v‖ = 1) :
    (LinearIsometry.toSpanSingleton 𝕜 E hv).toLinearMap = LinearMap.toSpanSingleton 𝕜 E v 
goal: (LinearIsometry.toSpanSingleton 𝕜 E hv).toLinearMap = LinearMap.toSpanSingleton 𝕜 E v

full_name: ContinuousLinearMap.opNorm
code: /-- The operator norm of a continuous linear map is the inf of all its bounds. -/
def opNorm (f : E →SL[σ₁₂] F) 
goal: ℝ

full_name: ContinuousLinearMap.hasOpNorm
code: instance hasOpNorm : Norm (E →SL[σ₁₂] F) 
goal: Norm (E →SL[σ₁₂] F)

full_name: ContinuousLinearMap.norm_def
code: theorem norm_def (f : E →SL[σ₁₂] F) : ‖f‖ = sInf { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } 
goal: ‖f‖ = sInf {c | 0 ≤ c ∧ ∀ (x : E), ‖f x‖ ≤ c * ‖x‖}

full_name: ContinuousLinearMap.bounds_nonempty
code: theorem bounds_nonempty [RingHomIsometric σ₁₂] {f : E →SL[σ₁₂] F} :
    ∃ c, c ∈ { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } 
goal: ∃ c, c ∈ {c | 0 ≤ c ∧ ∀ (x : E), ‖f x‖ ≤ c * ‖x‖}

full_name: ContinuousLinearMap.bounds_bddBelow
code: theorem bounds_bddBelow {f : E →SL[σ₁₂] F} : BddBelow { c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖ } 
goal: BddBelow {c | 0 ≤ c ∧ ∀ (x : E), ‖f x‖ ≤ c * ‖x‖}

full_name: ContinuousLinearMap.isLeast_opNorm
code: theorem isLeast_opNorm [RingHomIsometric σ₁₂] (f : E →SL[σ₁₂] F) :
    IsLeast {c | 0 ≤ c ∧ ∀ x, ‖f x‖ ≤ c * ‖x‖} ‖f‖ 
goal: IsLeast {c | 0 ≤ c ∧ ∀ (x : E), ‖f x‖ ≤ c * ‖x‖} ‖f‖

full_name: ContinuousLinearMap.opNorm_le_bound
code: /-- If one controls the norm of every `A x`, then one controls the norm of `A`. -/
theorem opNorm_le_bound (f : E →SL[σ₁₂] F) {M : ℝ} (hMp : 0 ≤ M) (hM : ∀ x, ‖f x‖ ≤ M * ‖x‖) :
    ‖f‖ ≤ M 
goal: ‖f‖ ≤ M

full_name: ContinuousLinearMap.opNorm_le_bound'
code: /-- If one controls the norm of every `A x`, `‖x‖ ≠ 0`, then one controls the norm of `A`. -/
theorem opNorm_le_bound' (f : E →SL[σ₁₂] F) {M : ℝ} (hMp : 0 ≤ M)
    (hM : ∀ x, ‖x‖ ≠ 0 → ‖f x‖ ≤ M * ‖x‖) : ‖f‖ ≤ M 
goal: ‖f‖ ≤ M

full_name: ContinuousLinearMap.opNorm_le_of_lipschitz
code: theorem opNorm_le_of_lipschitz {f : E →SL[σ₁₂] F} {K : ℝ≥0} (hf : LipschitzWith K f) : ‖f‖ ≤ K 
goal: ‖f‖ ≤ ↑K

full_name: ContinuousLinearMap.opNorm_eq_of_bounds
code: theorem opNorm_eq_of_bounds {φ : E →SL[σ₁₂] F} {M : ℝ} (M_nonneg : 0 ≤ M)
    (h_above : ∀ x, ‖φ x‖ ≤ M * ‖x‖) (h_below : ∀ N ≥ 0, (∀ x, ‖φ x‖ ≤ N * ‖x‖) → M ≤ N) :
    ‖φ‖ = M 
goal: ‖φ‖ = M

full_name: ContinuousLinearMap.opNorm_neg
code: theorem opNorm_neg (f : E →SL[σ₁₂] F) : ‖-f‖ = ‖f‖ 
goal: ‖-f‖ = ‖f‖

full_name: ContinuousLinearMap.opNorm_nonneg
code: theorem opNorm_nonneg (f : E →SL[σ₁₂] F) : 0 ≤ ‖f‖ 
goal: 0 ≤ ‖f‖

full_name: ContinuousLinearMap.opNorm_zero
code: /-- The norm of the `0` operator is `0`. -/
theorem opNorm_zero : ‖(0 : E →SL[σ₁₂] F)‖ = 0 
goal: ‖0‖ = 0

full_name: ContinuousLinearMap.norm_id_le
code: /-- The norm of the identity is at most `1`. It is in fact `1`, except when the space is trivial
where it is `0`. It means that one can not do better than an inequality in general. -/
theorem norm_id_le : ‖id 𝕜 E‖ ≤ 1 
goal: ‖ContinuousLinearMap.id 𝕜 E‖ ≤ 1

full_name: ContinuousLinearMap.le_opNorm
code: /-- The fundamental property of the operator norm: `‖f x‖ ≤ ‖f‖ * ‖x‖`. -/
theorem le_opNorm : ‖f x‖ ≤ ‖f‖ * ‖x‖ 
goal: ‖f x‖ ≤ ‖f‖ * ‖x‖

full_name: ContinuousLinearMap.dist_le_opNorm
code: theorem dist_le_opNorm (x y : E) : dist (f x) (f y) ≤ ‖f‖ * dist x y 
goal: dist (f x) (f y) ≤ ‖f‖ * dist x y

full_name: ContinuousLinearMap.le_of_opNorm_le_of_le
code: theorem le_of_opNorm_le_of_le {x} {a b : ℝ} (hf : ‖f‖ ≤ a) (hx : ‖x‖ ≤ b) :
    ‖f x‖ ≤ a * b 
goal: ‖f x‖ ≤ a * b

full_name: ContinuousLinearMap.le_opNorm_of_le
code: theorem le_opNorm_of_le {c : ℝ} {x} (h : ‖x‖ ≤ c) : ‖f x‖ ≤ ‖f‖ * c 
goal: ‖f x‖ ≤ ‖f‖ * c

full_name: ContinuousLinearMap.le_of_opNorm_le
code: theorem le_of_opNorm_le {c : ℝ} (h : ‖f‖ ≤ c) (x : E) : ‖f x‖ ≤ c * ‖x‖ 
goal: ‖f x‖ ≤ c * ‖x‖

full_name: ContinuousLinearMap.opNorm_le_iff
code: theorem opNorm_le_iff {f : E →SL[σ₁₂] F} {M : ℝ} (hMp : 0 ≤ M) :
    ‖f‖ ≤ M ↔ ∀ x, ‖f x‖ ≤ M * ‖x‖ 
goal: ‖f‖ ≤ M ↔ ∀ (x : E), ‖f x‖ ≤ M * ‖x‖

full_name: ContinuousLinearMap.ratio_le_opNorm
code: theorem ratio_le_opNorm : ‖f x‖ / ‖x‖ ≤ ‖f‖ 
goal: ‖f x‖ / ‖x‖ ≤ ‖f‖

full_name: ContinuousLinearMap.unit_le_opNorm
code: /-- The image of the unit ball under a continuous linear map is bounded. -/
theorem unit_le_opNorm : ‖x‖ ≤ 1 → ‖f x‖ ≤ ‖f‖ 
goal: ‖x‖ ≤ 1 → ‖f x‖ ≤ ‖f‖

full_name: ContinuousLinearMap.opNorm_le_of_shell
code: theorem opNorm_le_of_shell {f : E →SL[σ₁₂] F} {ε C : ℝ} (ε_pos : 0 < ε) (hC : 0 ≤ C) {c : 𝕜}
    (hc : 1 < ‖c‖) (hf : ∀ x, ε / ‖c‖ ≤ ‖x‖ → ‖x‖ < ε → ‖f x‖ ≤ C * ‖x‖) : ‖f‖ ≤ C 
goal: ‖f‖ ≤ C

full_name: ContinuousLinearMap.opNorm_le_of_ball
code: theorem opNorm_le_of_ball {f : E →SL[σ₁₂] F} {ε : ℝ} {C : ℝ} (ε_pos : 0 < ε) (hC : 0 ≤ C)
    (hf : ∀ x ∈ ball (0 : E) ε, ‖f x‖ ≤ C * ‖x‖) : ‖f‖ ≤ C 
goal: ‖f‖ ≤ C

full_name: ContinuousLinearMap.opNorm_le_of_nhds_zero
code: theorem opNorm_le_of_nhds_zero {f : E →SL[σ₁₂] F} {C : ℝ} (hC : 0 ≤ C)
    (hf : ∀ᶠ x in 𝓝 (0 : E), ‖f x‖ ≤ C * ‖x‖) : ‖f‖ ≤ C 
goal: ‖f‖ ≤ C

full_name: ContinuousLinearMap.opNorm_le_of_shell'
code: theorem opNorm_le_of_shell' {f : E →SL[σ₁₂] F} {ε C : ℝ} (ε_pos : 0 < ε) (hC : 0 ≤ C) {c : 𝕜}
    (hc : ‖c‖ < 1) (hf : ∀ x, ε * ‖c‖ ≤ ‖x‖ → ‖x‖ < ε → ‖f x‖ ≤ C * ‖x‖) : ‖f‖ ≤ C 
goal: ‖f‖ ≤ C

full_name: ContinuousLinearMap.opNorm_le_of_unit_norm
code: /-- For a continuous real linear map `f`, if one controls the norm of every `f x`, `‖x‖ = 1`, then
one controls the norm of `f`. -/
theorem opNorm_le_of_unit_norm [NormedSpace ℝ E] [NormedSpace ℝ F] {f : E →L[ℝ] F} {C : ℝ}
    (hC : 0 ≤ C) (hf : ∀ x, ‖x‖ = 1 → ‖f x‖ ≤ C) : ‖f‖ ≤ C 
goal: ‖f‖ ≤ C

full_name: ContinuousLinearMap.opNorm_add_le
code: /-- The operator norm satisfies the triangle inequality. -/
theorem opNorm_add_le : ‖f + g‖ ≤ ‖f‖ + ‖g‖ 
goal: ‖f + g‖ ≤ ‖f‖ + ‖g‖

full_name: ContinuousLinearMap.norm_id_of_nontrivial_seminorm
code: /-- 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 : E, ‖x‖ ≠ 0) : ‖id 𝕜 E‖ = 1 
goal: ‖ContinuousLinearMap.id 𝕜 E‖ = 1

full_name: ContinuousLinearMap.opNorm_smul_le
code: theorem opNorm_smul_le {𝕜' : Type*} [NormedField 𝕜'] [NormedSpace 𝕜' F] [SMulCommClass 𝕜₂ 𝕜' F]
    (c : 𝕜') (f : E →SL[σ₁₂] F) : ‖c • f‖ ≤ ‖c‖ * ‖f‖ 
goal: ‖c • f‖ ≤ ‖c‖ * ‖f‖

full_name: ContinuousLinearMap.seminorm
code: /-- Operator seminorm on the space of continuous (semi)linear maps, as `Seminorm`.

We use this seminorm to define a `SeminormedGroup` structure on `E →SL[σ] F`,
but we have to override the projection `UniformSpace`
so that it is definitionally equal to the one coming from the topologies on `E` and `F`. -/
protected def seminorm : Seminorm 𝕜₂ (E →SL[σ₁₂] F) 
goal: Seminorm 𝕜₂ (E →SL[σ₁₂] F)

full_name: _private.Mathlib.Analysis.NormedSpace.OperatorNorm.Basic.0.ContinuousLinearMap.uniformity_eq_seminorm
code: private lemma uniformity_eq_seminorm :
    𝓤 (E →SL[σ₁₂] F) = ⨅ r > 0, 𝓟 {f | ‖f.1 - f.2‖ < r} 
goal: 𝓤 (E →SL[σ₁₂] F) = ⨅ r, ⨅ (_ : r > 0), 𝓟 {f | ‖f.1 - f.2‖ < r}

full_name: ContinuousLinearMap.toPseudoMetricSpace
code: instance toPseudoMetricSpace : PseudoMetricSpace (E →SL[σ₁₂] F) 
goal: PseudoMetricSpace (E →SL[σ₁₂] F)

full_name: ContinuousLinearMap.toSeminormedAddCommGroup
code: /-- Continuous linear maps themselves form a seminormed space with respect to
    the operator norm. -/
instance toSeminormedAddCommGroup : SeminormedAddCommGroup (E →SL[σ₁₂] F) 
goal: SeminormedAddCommGroup (E →SL[σ₁₂] F)

full_name: ContinuousLinearMap.toNormedSpace
code: instance toNormedSpace {𝕜' : Type*} [NormedField 𝕜'] [NormedSpace 𝕜' F] [SMulCommClass 𝕜₂ 𝕜' F] :
    NormedSpace 𝕜' (E →SL[σ₁₂] F) 
goal: NormedSpace 𝕜' (E →SL[σ₁₂] F)

full_name: ContinuousLinearMap.opNorm_comp_le
code: /-- The operator norm is submultiplicative. -/
theorem opNorm_comp_le (f : E →SL[σ₁₂] F) : ‖h.comp f‖ ≤ ‖h‖ * ‖f‖ 
goal: ‖h.comp f‖ ≤ ‖h‖ * ‖f‖

full_name: ContinuousLinearMap.toSemiNormedRing
code: /-- Continuous linear maps form a seminormed ring with respect to the operator norm. -/
instance toSemiNormedRing : SeminormedRing (E →L[𝕜] E) 
goal: SeminormedRing (E →L[𝕜] E)

full_name: ContinuousLinearMap.toNormedAlgebra
code: /-- For a normed space `E`, continuous linear endomorphisms form a normed algebra with
respect to the operator norm. -/
instance toNormedAlgebra : NormedAlgebra 𝕜 (E →L[𝕜] E) 
goal: NormedAlgebra 𝕜 (E →L[𝕜] E)

full_name: ContinuousLinearMap.opNorm_subsingleton
code: @[simp, nontriviality]
theorem opNorm_subsingleton [Subsingleton E] : ‖f‖ = 0 
goal: ‖f‖ = 0

full_name: ContinuousLinearMap.norm_restrictScalars
code: @[simp]
theorem norm_restrictScalars (f : E →L[𝕜] Fₗ) : ‖f.restrictScalars 𝕜'‖ = ‖f‖ 
goal: ‖ContinuousLinearMap.restrictScalars 𝕜' f‖ = ‖f‖

full_name: ContinuousLinearMap.restrictScalarsIsometry
code: /-- `ContinuousLinearMap.restrictScalars` as a `LinearIsometry`. -/
def restrictScalarsIsometry : (E →L[𝕜] Fₗ) →ₗᵢ[𝕜''] E →L[𝕜'] Fₗ 
goal: (E →L[𝕜] Fₗ) →ₗᵢ[𝕜''] E →L[𝕜'] Fₗ

full_name: ContinuousLinearMap.coe_restrictScalarsIsometry
code: @[simp]
theorem coe_restrictScalarsIsometry :
    ⇑(restrictScalarsIsometry 𝕜 E Fₗ 𝕜' 𝕜'') = restrictScalars 𝕜' 
goal: ⇑(ContinuousLinearMap.restrictScalarsIsometry 𝕜 E Fₗ 𝕜' 𝕜'') = ContinuousLinearMap.restrictScalars 𝕜'

full_name: ContinuousLinearMap.restrictScalarsIsometry_toLinearMap
code: @[simp]
theorem restrictScalarsIsometry_toLinearMap :
    (restrictScalarsIsometry 𝕜 E Fₗ 𝕜' 𝕜'').toLinearMap = restrictScalarsₗ 𝕜 E Fₗ 𝕜' 𝕜'' 
goal: (ContinuousLinearMap.restrictScalarsIsometry 𝕜 E Fₗ 𝕜' 𝕜'').toLinearMap =
  ContinuousLinearMap.restrictScalarsₗ 𝕜 E Fₗ 𝕜' 𝕜''

full_name: ContinuousLinearMap.restrictScalarsL
code: /-- `ContinuousLinearMap.restrictScalars` as a `ContinuousLinearMap`. -/
def restrictScalarsL : (E →L[𝕜] Fₗ) →L[𝕜''] E →L[𝕜'] Fₗ 
goal: (E →L[𝕜] Fₗ) →L[𝕜''] E →L[𝕜'] Fₗ

full_name: ContinuousLinearMap.coe_restrictScalarsL
code: @[simp]
theorem coe_restrictScalarsL : (restrictScalarsL 𝕜 E Fₗ 𝕜' 𝕜'' : (E →L[𝕜] Fₗ) →ₗ[𝕜''] E →L[𝕜'] Fₗ) =
    restrictScalarsₗ 𝕜 E Fₗ 𝕜' 𝕜'' 
goal: ↑(ContinuousLinearMap.restrictScalarsL 𝕜 E Fₗ 𝕜' 𝕜'') = ContinuousLinearMap.restrictScalarsₗ 𝕜 E Fₗ 𝕜' 𝕜''

full_name: ContinuousLinearMap.coe_restrict_scalarsL'
code: @[simp]
theorem coe_restrict_scalarsL' : ⇑(restrictScalarsL 𝕜 E Fₗ 𝕜' 𝕜'') = restrictScalars 𝕜' 
goal: ⇑(ContinuousLinearMap.restrictScalarsL 𝕜 E Fₗ 𝕜' 𝕜'') = ContinuousLinearMap.restrictScalars 𝕜'

full_name: ContinuousLinearMap.norm_pi_le_of_le
code: lemma norm_pi_le_of_le {ι : Type*} [Fintype ι]
    {M : ι → Type*} [∀ i, SeminormedAddCommGroup (M i)] [∀ i, NormedSpace 𝕜 (M i)] {C : ℝ}
    {L : (i : ι) → (E →L[𝕜] M i)} (hL : ∀ i, ‖L i‖ ≤ C) (hC : 0 ≤ C) :
    ‖pi L‖ ≤ C 
goal: ‖ContinuousLinearMap.pi L‖ ≤ C

full_name: LinearMap.mkContinuous_norm_le
code: /-- If a continuous linear map is constructed from a linear map via the constructor `mkContinuous`,
then its norm is bounded by the bound given to the constructor if it is nonnegative. -/
theorem mkContinuous_norm_le (f : E →ₛₗ[σ₁₂] F) {C : ℝ} (hC : 0 ≤ C) (h : ∀ x, ‖f x‖ ≤ C * ‖x‖) :
    ‖f.mkContinuous C h‖ ≤ C 
goal: ‖f.mkContinuous C h‖ ≤ C

full_name: LinearMap.mkContinuous_norm_le'
code: /-- If a continuous linear map is constructed from a linear map via the constructor `mkContinuous`,
then its norm is bounded by the bound or zero if bound is negative. -/
theorem mkContinuous_norm_le' (f : E →ₛₗ[σ₁₂] F) {C : ℝ} (h : ∀ x, ‖f x‖ ≤ C * ‖x‖) :
    ‖f.mkContinuous C h‖ ≤ max C 0 
goal: ‖f.mkContinuous C h‖ ≤ max C 0

full_name: LinearIsometry.norm_toContinuousLinearMap_le
code: theorem norm_toContinuousLinearMap_le (f : E →ₛₗᵢ[σ₁₂] F) : ‖f.toContinuousLinearMap‖ ≤ 1 
goal: ‖f.toContinuousLinearMap‖ ≤ 1

full_name: Submodule.norm_subtypeL_le
code: theorem norm_subtypeL_le (K : Submodule 𝕜 E) : ‖K.subtypeL‖ ≤ 1 
goal: ‖K.subtypeL‖ ≤ 1