Documentation

Mathlib.Analysis.Normed.Module.FiniteDimension

Finite-dimensional normed spaces over complete fields #

Over a complete nontrivially normed field, in finite dimension, all norms are equivalent and all linear maps are continuous. Moreover, a finite-dimensional subspace is always complete and closed.

Main results: #

Implementation notes #

The fact that all norms are equivalent is not written explicitly, as it would mean having two norms on a single space, which is not the way type classes work. However, if one has a finite-dimensional vector space E with a norm, and a copy E' of this type with another norm, then the identities from E to E' and from E' to E are continuous thanks to LinearMap.continuous_of_finiteDimensional. This gives the desired norm equivalence.

noncomputable def LinearIsometry.toLinearIsometryEquiv {F : Type u_1} {E₁ : Type u_2} [SeminormedAddCommGroup F] [NormedAddCommGroup E₁] {R₁ : Type u_3} [Field R₁] [Module R₁ E₁] [Module R₁ F] [FiniteDimensional R₁ E₁] [FiniteDimensional R₁ F] (li : E₁ →ₗᵢ[R₁] F) (h : Module.finrank R₁ E₁ = Module.finrank R₁ F) :
E₁ ≃ₗᵢ[R₁] F

A linear isometry between finite-dimensional spaces of equal dimension can be upgraded to a linear isometry equivalence.

Equations
Instances For
    @[simp]
    theorem LinearIsometry.coe_toLinearIsometryEquiv {F : Type u_1} {E₁ : Type u_2} [SeminormedAddCommGroup F] [NormedAddCommGroup E₁] {R₁ : Type u_3} [Field R₁] [Module R₁ E₁] [Module R₁ F] [FiniteDimensional R₁ E₁] [FiniteDimensional R₁ F] (li : E₁ →ₗᵢ[R₁] F) (h : Module.finrank R₁ E₁ = Module.finrank R₁ F) :
    (li.toLinearIsometryEquiv h) = li
    @[simp]
    theorem LinearIsometry.toLinearIsometryEquiv_apply {F : Type u_1} {E₁ : Type u_2} [SeminormedAddCommGroup F] [NormedAddCommGroup E₁] {R₁ : Type u_3} [Field R₁] [Module R₁ E₁] [Module R₁ F] [FiniteDimensional R₁ E₁] [FiniteDimensional R₁ F] (li : E₁ →ₗᵢ[R₁] F) (h : Module.finrank R₁ E₁ = Module.finrank R₁ F) (x : E₁) :
    (li.toLinearIsometryEquiv h) x = li x
    noncomputable def AffineIsometry.toAffineIsometryEquiv {𝕜 : Type u_1} {V₁ : Type u_2} {V₂ : Type u_3} {P₁ : Type u_4} {P₂ : Type u_5} [NormedField 𝕜] [NormedAddCommGroup V₁] [SeminormedAddCommGroup V₂] [NormedSpace 𝕜 V₁] [NormedSpace 𝕜 V₂] [MetricSpace P₁] [PseudoMetricSpace P₂] [NormedAddTorsor V₁ P₁] [NormedAddTorsor V₂ P₂] [FiniteDimensional 𝕜 V₁] [FiniteDimensional 𝕜 V₂] [Inhabited P₁] (li : P₁ →ᵃⁱ[𝕜] P₂) (h : Module.finrank 𝕜 V₁ = Module.finrank 𝕜 V₂) :
    P₁ ≃ᵃⁱ[𝕜] P₂

    An affine isometry between finite-dimensional spaces of equal dimension can be upgraded to an affine isometry equivalence.

    Equations
    Instances For
      @[simp]
      theorem AffineIsometry.coe_toAffineIsometryEquiv {𝕜 : Type u_1} {V₁ : Type u_2} {V₂ : Type u_3} {P₁ : Type u_4} {P₂ : Type u_5} [NormedField 𝕜] [NormedAddCommGroup V₁] [SeminormedAddCommGroup V₂] [NormedSpace 𝕜 V₁] [NormedSpace 𝕜 V₂] [MetricSpace P₁] [PseudoMetricSpace P₂] [NormedAddTorsor V₁ P₁] [NormedAddTorsor V₂ P₂] [FiniteDimensional 𝕜 V₁] [FiniteDimensional 𝕜 V₂] [Inhabited P₁] (li : P₁ →ᵃⁱ[𝕜] P₂) (h : Module.finrank 𝕜 V₁ = Module.finrank 𝕜 V₂) :
      (li.toAffineIsometryEquiv h) = li
      @[simp]
      theorem AffineIsometry.toAffineIsometryEquiv_apply {𝕜 : Type u_1} {V₁ : Type u_2} {V₂ : Type u_3} {P₁ : Type u_4} {P₂ : Type u_5} [NormedField 𝕜] [NormedAddCommGroup V₁] [SeminormedAddCommGroup V₂] [NormedSpace 𝕜 V₁] [NormedSpace 𝕜 V₂] [MetricSpace P₁] [PseudoMetricSpace P₂] [NormedAddTorsor V₁ P₁] [NormedAddTorsor V₂ P₂] [FiniteDimensional 𝕜 V₁] [FiniteDimensional 𝕜 V₂] [Inhabited P₁] (li : P₁ →ᵃⁱ[𝕜] P₂) (h : Module.finrank 𝕜 V₁ = Module.finrank 𝕜 V₂) (x : P₁) :
      (li.toAffineIsometryEquiv h) x = li x
      theorem AffineMap.continuous_of_finiteDimensional {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] {PE : Type u_1} {PF : Type u_2} [MetricSpace PE] [NormedAddTorsor E PE] [MetricSpace PF] [NormedAddTorsor F PF] [FiniteDimensional 𝕜 E] (f : PE →ᵃ[𝕜] PF) :
      theorem AffineEquiv.continuous_of_finiteDimensional {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] {PE : Type u_1} {PF : Type u_2} [MetricSpace PE] [NormedAddTorsor E PE] [MetricSpace PF] [NormedAddTorsor F PF] [FiniteDimensional 𝕜 E] (f : PE ≃ᵃ[𝕜] PF) :
      def AffineEquiv.toHomeomorphOfFiniteDimensional {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] {PE : Type u_1} {PF : Type u_2} [MetricSpace PE] [NormedAddTorsor E PE] [MetricSpace PF] [NormedAddTorsor F PF] [FiniteDimensional 𝕜 E] (f : PE ≃ᵃ[𝕜] PF) :
      PE ≃ₜ PF

      Reinterpret an affine equivalence as a homeomorphism.

      Equations
      Instances For
        @[simp]
        theorem AffineMap.lipschitzWith_of_finiteDimensional {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] {PE : Type u_1} {PF : Type u_2} [MetricSpace PE] [NormedAddTorsor E PE] [MetricSpace PF] [NormedAddTorsor F PF] [FiniteDimensional 𝕜 E] (f : PE →ᵃ[𝕜] PF) :
        ∃ (K : NNReal), LipschitzWith K f

        An affine map from a finite-dimensional space is automatically Lipschitz.

        @[irreducible]

        Any K-Lipschitz map from a subset s of a metric space α to a finite-dimensional real vector space E' can be extended to a Lipschitz map on the whole space α, with a slightly worse constant C * K where C only depends on E'. We record a working value for this constant C as lipschitzExtensionConstant E'.

        Equations
        Instances For
          theorem LipschitzOnWith.extend_finite_dimension {α : Type u_1} [PseudoMetricSpace α] {E' : Type u_2} [NormedAddCommGroup E'] [NormedSpace E'] [FiniteDimensional E'] {s : Set α} {f : αE'} {K : NNReal} (hf : LipschitzOnWith K f s) :
          ∃ (g : αE'), LipschitzWith (lipschitzExtensionConstant E' * K) g Set.EqOn f g s

          Any K-Lipschitz map from a subset s of a metric space α to a finite-dimensional real vector space E' can be extended to a Lipschitz map on the whole space α, with a slightly worse constant lipschitzExtensionConstant E' * K.

          theorem LinearMap.exists_antilipschitzWith {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] [FiniteDimensional 𝕜 E] (f : E →ₗ[𝕜] F) (hf : f.ker = ) :
          K > 0, AntilipschitzWith K f

          A LinearMap on a finite-dimensional space over a complete field is injective iff it is anti-Lipschitz.

          theorem AffineMap.antilipschitzWith_of_finiteDimensional {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] {PE : Type u_1} {PF : Type u_2} [MetricSpace PE] [NormedAddTorsor E PE] [MetricSpace PF] [NormedAddTorsor F PF] [FiniteDimensional 𝕜 E] {f : PE →ᵃ[𝕜] PF} (hf : Function.Injective f) :
          ∃ (K : NNReal), AntilipschitzWith K f

          An injective affine map from a finite-dimensional space is automatically anti-Lipschitz.

          The set of injective continuous linear maps E → F is open, if E is finite-dimensional over a complete field.

          theorem LinearIndependent.eventually {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] [CompleteSpace 𝕜] {ι : Type u_1} [Finite ι] {f : ιE} (hf : LinearIndependent 𝕜 f) :
          ∀ᶠ (g : ιE) in nhds f, LinearIndependent 𝕜 g
          theorem isOpen_setOf_linearIndependent {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] [CompleteSpace 𝕜] {ι : Type u_1} [Finite ι] :
          IsOpen {f : ιE | LinearIndependent 𝕜 f}
          theorem isOpen_setOf_nat_le_rank {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] (n : ) :
          IsOpen {f : E →L[𝕜] F | n (↑f).rank}
          theorem isOpen_setOf_affineIndependent {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] [CompleteSpace 𝕜] {ι : Type u_1} [Finite ι] :
          IsOpen {p : ιE | AffineIndependent 𝕜 p}
          theorem Module.Basis.opNNNorm_le {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] {ι : Type u_1} [Fintype ι] (v : Basis ι 𝕜 E) {u : E →L[𝕜] F} (M : NNReal) (hu : ∀ (i : ι), u (v i)‖₊ M) :
          theorem Module.Basis.opNorm_le {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] {ι : Type u_1} [Fintype ι] (v : Basis ι 𝕜 E) {u : E →L[𝕜] F} {M : } (hM : 0 M) (hu : ∀ (i : ι), u (v i) M) :
          theorem Module.Basis.exists_opNNNorm_le {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] {ι : Type u_1} [Finite ι] (v : Basis ι 𝕜 E) :
          C > 0, ∀ {u : E →L[𝕜] F} (M : NNReal), (∀ (i : ι), u (v i)‖₊ M)u‖₊ C * M

          A weaker version of Basis.opNNNorm_le that abstracts away the value of C.

          theorem Module.Basis.exists_opNorm_le {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] {ι : Type u_1} [Finite ι] (v : Basis ι 𝕜 E) :
          C > 0, ∀ {u : E →L[𝕜] F} {M : }, 0 M(∀ (i : ι), u (v i) M)u C * M

          A weaker version of Basis.opNorm_le that abstracts away the value of C.

          theorem exists_norm_le_le_norm_sub_of_finset {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] [CompleteSpace 𝕜] {c : 𝕜} (hc : 1 < c) {R : } (hR : c < R) (h : ¬FiniteDimensional 𝕜 E) (s : Finset E) :
          ∃ (x : E), x R ys, 1 y - x

          In an infinite-dimensional space, given a finite number of points, one may find a point with norm at most R which is at distance at least 1 of all these points.

          theorem exists_seq_norm_le_one_le_norm_sub' {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] [CompleteSpace 𝕜] {c : 𝕜} (hc : 1 < c) {R : } (hR : c < R) (h : ¬FiniteDimensional 𝕜 E) :
          ∃ (f : E), (∀ (n : ), f n R) Pairwise fun (m n : ) => 1 f m - f n

          In an infinite-dimensional normed space, there exists a sequence of points which are all bounded by R and at distance at least 1. For a version not assuming c and R, see exists_seq_norm_le_one_le_norm_sub.

          theorem exists_seq_norm_le_one_le_norm_sub {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] [CompleteSpace 𝕜] (h : ¬FiniteDimensional 𝕜 E) :
          ∃ (R : ) (f : E), 1 < R (∀ (n : ), f n R) Pairwise fun (m n : ) => 1 f m - f n

          Riesz's theorem: if a closed ball with center zero of positive radius is compact in a vector space, then the space is finite-dimensional.

          theorem FiniteDimensional.of_isCompact_closedBall (𝕜 : Type u) [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] [CompleteSpace 𝕜] {r : } (rpos : 0 < r) {c : E} (h : IsCompact (Metric.closedBall c r)) :

          Riesz's theorem: if a closed ball of positive radius is compact in a vector space, then the space is finite-dimensional.

          Riesz's theorem: a locally compact normed vector space is finite-dimensional.

          theorem HasCompactSupport.eq_zero_or_finiteDimensional (𝕜 : Type u) [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] [CompleteSpace 𝕜] {X : Type u_1} [TopologicalSpace X] [Zero X] [T1Space X] {f : EX} (hf : HasCompactSupport f) (h'f : Continuous f) :

          If a function has compact support, then either the function is trivial or the space is finite-dimensional.

          theorem HasCompactMulSupport.eq_one_or_finiteDimensional (𝕜 : Type u) [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] [CompleteSpace 𝕜] {X : Type u_1} [TopologicalSpace X] [One X] [T1Space X] {f : EX} (hf : HasCompactMulSupport f) (h'f : Continuous f) :

          If a function has compact multiplicative support, then either the function is trivial or the space is finite-dimensional.

          A locally compact normed vector space is proper.

          If the identity operator of a Banach space over a nontrivially normed field is compact, then the space is finite dimensional.

          @[deprecated FiniteDimensional.of_isCompactOperator_id (since := "2026-03-05")]

          Alias of FiniteDimensional.of_isCompactOperator_id.


          If the identity operator of a Banach space over a nontrivially normed field is compact, then the space is finite dimensional.

          def ContinuousLinearEquiv.piRing {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] [CompleteSpace 𝕜] (ι : Type u_1) [Fintype ι] [DecidableEq ι] :
          ((ι𝕜) →L[𝕜] E) ≃L[𝕜] ιE

          Continuous linear equivalence between continuous linear functions 𝕜ⁿ → E and Eⁿ. The spaces 𝕜ⁿ and Eⁿ are represented as ι → 𝕜 and ι → E, respectively, where ι is a finite type.

          Equations
          Instances For
            theorem continuousOn_clm_apply {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] {X : Type u_1} [TopologicalSpace X] [FiniteDimensional 𝕜 E] {f : XE →L[𝕜] F} {s : Set X} :
            ContinuousOn f s ∀ (y : E), ContinuousOn (fun (x : X) => (f x) y) s

            A family of continuous linear maps is continuous on s if all its applications are.

            theorem continuous_clm_apply {𝕜 : Type u} [NontriviallyNormedField 𝕜] {E : Type v} [NormedAddCommGroup E] [NormedSpace 𝕜 E] {F : Type w} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace 𝕜] {X : Type u_1} [TopologicalSpace X] [FiniteDimensional 𝕜 E] {f : XE →L[𝕜] F} :
            Continuous f ∀ (y : E), Continuous fun (x : X) => (f x) y

            Any finite-dimensional vector space over a locally compact field is proper. We do not register this as an instance to avoid an instance loop when trying to prove the properness of 𝕜, and the search for 𝕜 as an unknown metavariable. Declare the instance explicitly when needed.

            A submodule of a locally compact space over a complete field is also locally compact (and even proper).

            theorem exists_mem_frontier_infDist_compl_eq_dist {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] [FiniteDimensional E] {x : E} {s : Set E} (hx : x s) (hs : s Set.univ) :
            yfrontier s, Metric.infDist x s = dist x y

            If E is a finite-dimensional normed real vector space, x : E, and s is a neighborhood of x that is not equal to the whole space, then there exists a point y ∈ frontier s at distance Metric.infDist x sᶜ from x. See also IsCompact.exists_mem_frontier_infDist_compl_eq_dist.

            theorem IsCompact.exists_mem_frontier_infDist_compl_eq_dist {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] [Nontrivial E] {x : E} {K : Set E} (hK : IsCompact K) (hx : x K) :
            yfrontier K, Metric.infDist x K = dist x y

            If K is a compact set in a nontrivial real normed space and x ∈ K, then there exists a point y of the boundary of K at distance Metric.infDist x Kᶜ from x. See also exists_mem_frontier_infDist_compl_eq_dist.

            theorem summable_norm_iff {α : Type u_1} {E : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [FiniteDimensional E] {f : αE} :
            (Summable fun (x : α) => f x) Summable f

            In a finite-dimensional vector space over , the series ∑ x, ‖f x‖ is unconditionally summable if and only if the series ∑ x, f x is unconditionally summable. One implication holds in any complete normed space, while the other holds only in finite-dimensional spaces.

            theorem Summable.norm {α : Type u_1} {E : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [FiniteDimensional E] {f : αE} :
            Summable fSummable fun (x : α) => f x

            Alias of the reverse direction of summable_norm_iff.


            In a finite-dimensional vector space over , the series ∑ x, ‖f x‖ is unconditionally summable if and only if the series ∑ x, f x is unconditionally summable. One implication holds in any complete normed space, while the other holds only in finite-dimensional spaces.

            theorem summable_of_sum_range_norm_le {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] [FiniteDimensional E] {c : } {f : E} (h : ∀ (n : ), iFinset.range n, f i c) :
            theorem summable_of_isBigO' {ι : Type u_1} {E : Type u_2} {F : Type u_3} [NormedAddCommGroup E] [CompleteSpace E] [NormedAddCommGroup F] [NormedSpace F] [FiniteDimensional F] {f : ιE} {g : ιF} (hg : Summable g) (h : f =O[Filter.cofinite] g) :
            theorem Asymptotics.IsBigO.comp_summable {ι : Type u_1} {E : Type u_2} {F : Type u_3} [NormedAddCommGroup E] [NormedSpace E] [FiniteDimensional E] [NormedAddCommGroup F] [CompleteSpace F] {f : EF} (hf : f =O[nhds 0] id) {g : ιE} (hg : Summable g) :
            theorem summable_of_isBigO_nat' {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [CompleteSpace E] [NormedAddCommGroup F] [NormedSpace F] [FiniteDimensional F] {f : E} {g : F} (hg : Summable g) (h : f =O[Filter.atTop] g) :
            theorem summable_norm_mul_geometric_of_norm_lt_one' {F : Type u_1} [NormedRing F] [NormOneClass F] [NormMulClass F] {k : } {r : F} (hr : r < 1) {u : F} (hu : u =O[Filter.atTop] fun (n : ) => ↑(n ^ k)) :
            Summable fun (n : ) => u n * r ^ n

            This is a version of summable_norm_mul_geometric_of_norm_lt_one for more general codomains. We keep the original one due to import restrictions.

            @[deprecated Asymptotics.IsEquivalent.summable_iff (since := "2026-02-07")]

            Alias of Asymptotics.IsEquivalent.summable_iff.

            @[deprecated Asymptotics.IsEquivalent.summable_iff_nat (since := "2026-02-07")]

            Alias of Asymptotics.IsEquivalent.summable_iff_nat.

            theorem Module.Basis.continuous_coe_repr {ι : Type u_1} {R : Type u_2} {M : Type u_3} [Finite ι] [NontriviallyNormedField R] [CompleteSpace R] [AddCommGroup M] [TopologicalSpace M] [IsTopologicalAddGroup M] [T2Space M] [Module R M] [ContinuousSMul R M] (B : Basis ι R M) :
            Continuous fun (m : M) => (B.repr m)
            theorem Module.Basis.continuous_toMatrix {ι : Type u_1} {R : Type u_2} {M : Type u_3} [Finite ι] [NontriviallyNormedField R] [CompleteSpace R] [AddCommGroup M] [TopologicalSpace M] [IsTopologicalAddGroup M] [T2Space M] [Module R M] [ContinuousSMul R M] (B : Basis ι R M) :
            Continuous fun (v : ιM) => B.toMatrix v