Documentation

Mathlib.Analysis.InnerProductSpace.Orthogonal

Orthogonal complements of submodules #

In this file, the orthogonal complement of a submodule K is defined, and basic API established. Some of the more subtle results about the orthogonal complement are delayed to Analysis.InnerProductSpace.Projection.

See also BilinForm.orthogonal for orthogonality with respect to a general bilinear form.

Notation #

The orthogonal complement of a submodule K is denoted by Kแ—ฎ.

The proposition that two submodules are orthogonal, Submodule.IsOrtho, is denoted by U โŸ‚ V. Note this is not the same unicode symbol as โŠฅ (Bot).

def Submodule.orthogonal {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (K : Submodule ๐•œ E) :
Submodule ๐•œ E

The subspace of vectors orthogonal to a given subspace.

Equations
  • Kแ—ฎ = { carrier := {v : E | โˆ€ u โˆˆ K, inner u v = 0}, add_mem' := โ‹ฏ, zero_mem' := โ‹ฏ, smul_mem' := โ‹ฏ }
Instances For
    theorem Submodule.mem_orthogonal {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (K : Submodule ๐•œ E) (v : E) :
    v โˆˆ Kแ—ฎ โ†” โˆ€ u โˆˆ K, inner u v = 0

    When a vector is in Kแ—ฎ.

    theorem Submodule.mem_orthogonal' {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (K : Submodule ๐•œ E) (v : E) :
    v โˆˆ Kแ—ฎ โ†” โˆ€ u โˆˆ K, inner v u = 0

    When a vector is in Kแ—ฎ, with the inner product the other way round.

    theorem Submodule.inner_right_of_mem_orthogonal {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {K : Submodule ๐•œ E} {u : E} {v : E} (hu : u โˆˆ K) (hv : v โˆˆ Kแ—ฎ) :
    inner u v = 0

    A vector in K is orthogonal to one in Kแ—ฎ.

    theorem Submodule.inner_left_of_mem_orthogonal {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {K : Submodule ๐•œ E} {u : E} {v : E} (hu : u โˆˆ K) (hv : v โˆˆ Kแ—ฎ) :
    inner v u = 0

    A vector in Kแ—ฎ is orthogonal to one in K.

    theorem Submodule.mem_orthogonal_singleton_iff_inner_right {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {u : E} {v : E} :
    v โˆˆ (Submodule.span ๐•œ {u})แ—ฎ โ†” inner u v = 0

    A vector is in (๐•œ โˆ™ u)แ—ฎ iff it is orthogonal to u.

    theorem Submodule.mem_orthogonal_singleton_iff_inner_left {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {u : E} {v : E} :
    v โˆˆ (Submodule.span ๐•œ {u})แ—ฎ โ†” inner v u = 0

    A vector in (๐•œ โˆ™ u)แ—ฎ is orthogonal to u.

    theorem Submodule.sub_mem_orthogonal_of_inner_left {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {K : Submodule ๐•œ E} {x : E} {y : E} (h : โˆ€ (v : โ†ฅK), inner x โ†‘v = inner y โ†‘v) :
    theorem Submodule.sub_mem_orthogonal_of_inner_right {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {K : Submodule ๐•œ E} {x : E} {y : E} (h : โˆ€ (v : โ†ฅK), inner (โ†‘v) x = inner (โ†‘v) y) :
    theorem Submodule.inf_orthogonal_eq_bot {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (K : Submodule ๐•œ E) :

    K and Kแ—ฎ have trivial intersection.

    theorem Submodule.orthogonal_disjoint {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (K : Submodule ๐•œ E) :

    K and Kแ—ฎ have trivial intersection.

    theorem Submodule.orthogonal_eq_inter {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (K : Submodule ๐•œ E) :
    Kแ—ฎ = โจ… (v : โ†ฅK), LinearMap.ker ((innerSL ๐•œ) โ†‘v)

    Kแ—ฎ can be characterized as the intersection of the kernels of the operations of inner product with each of the elements of K.

    theorem Submodule.isClosed_orthogonal {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (K : Submodule ๐•œ E) :

    The orthogonal complement of any submodule K is closed.

    instance Submodule.instOrthogonalCompleteSpace {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (K : Submodule ๐•œ E) [CompleteSpace E] :

    In a complete space, the orthogonal complement of any submodule K is complete.

    Equations
    • โ‹ฏ = โ‹ฏ
    theorem Submodule.orthogonal_gc (๐•œ : Type u_1) (E : Type u_2) [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] :
    GaloisConnection Submodule.orthogonal Submodule.orthogonal

    orthogonal gives a GaloisConnection between Submodule ๐•œ E and its OrderDual.

    theorem Submodule.orthogonal_le {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {Kโ‚ : Submodule ๐•œ E} {Kโ‚‚ : Submodule ๐•œ E} (h : Kโ‚ โ‰ค Kโ‚‚) :
    Kโ‚‚แ—ฎ โ‰ค Kโ‚แ—ฎ

    orthogonal reverses the โ‰ค ordering of two subspaces.

    theorem Submodule.orthogonal_orthogonal_monotone {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {Kโ‚ : Submodule ๐•œ E} {Kโ‚‚ : Submodule ๐•œ E} (h : Kโ‚ โ‰ค Kโ‚‚) :

    orthogonal.orthogonal preserves the โ‰ค ordering of two subspaces.

    theorem Submodule.le_orthogonal_orthogonal {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (K : Submodule ๐•œ E) :

    K is contained in Kแ—ฎแ—ฎ.

    theorem Submodule.inf_orthogonal {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (Kโ‚ : Submodule ๐•œ E) (Kโ‚‚ : Submodule ๐•œ E) :
    Kโ‚แ—ฎ โŠ“ Kโ‚‚แ—ฎ = (Kโ‚ โŠ” Kโ‚‚)แ—ฎ

    The inf of two orthogonal subspaces equals the subspace orthogonal to the sup.

    theorem Submodule.iInf_orthogonal {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {ฮน : Type u_4} (K : ฮน โ†’ Submodule ๐•œ E) :
    โจ… (i : ฮน), (K i)แ—ฎ = (iSup K)แ—ฎ

    The inf of an indexed family of orthogonal subspaces equals the subspace orthogonal to the sup.

    theorem Submodule.sInf_orthogonal {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (s : Set (Submodule ๐•œ E)) :
    โจ… K โˆˆ s, Kแ—ฎ = (sSup s)แ—ฎ

    The inf of a set of orthogonal subspaces equals the subspace orthogonal to the sup.

    @[simp]
    theorem Submodule.top_orthogonal_eq_bot {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] :
    @[simp]
    theorem Submodule.bot_orthogonal_eq_top {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] :
    @[simp]
    theorem Submodule.orthogonal_eq_top_iff {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (K : Submodule ๐•œ E) :
    theorem Submodule.orthogonalFamily_self {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (K : Submodule ๐•œ E) :
    OrthogonalFamily ๐•œ (fun (b : Bool) => โ†ฅ(bif b then K else Kแ—ฎ)) fun (b : Bool) => (bif b then K else Kแ—ฎ).subtypeโ‚—แตข
    @[simp]
    theorem bilinFormOfRealInner_orthogonal {E : Type u_4} [NormedAddCommGroup E] [InnerProductSpace โ„ E] (K : Submodule โ„ E) :
    K.orthogonalBilin bilinFormOfRealInner = Kแ—ฎ

    Orthogonality of submodules #

    In this section we define Submodule.IsOrtho U V, with notation U โŸ‚ V.

    The API roughly matches that of Disjoint.

    def Submodule.IsOrtho {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (U : Submodule ๐•œ E) (V : Submodule ๐•œ E) :

    The proposition that two submodules are orthogonal. Has notation U โŸ‚ V.

    Equations
    Instances For
      theorem Submodule.isOrtho_iff_le {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} {V : Submodule ๐•œ E} :
      theorem Submodule.IsOrtho.symm {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} {V : Submodule ๐•œ E} (h : U โŸ‚ V) :
      theorem Submodule.isOrtho_comm {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} {V : Submodule ๐•œ E} :
      theorem Submodule.symmetric_isOrtho {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] :
      Symmetric Submodule.IsOrtho
      theorem Submodule.IsOrtho.inner_eq {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} {V : Submodule ๐•œ E} (h : U โŸ‚ V) {u : E} {v : E} (hu : u โˆˆ U) (hv : v โˆˆ V) :
      inner u v = 0
      theorem Submodule.isOrtho_iff_inner_eq {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} {V : Submodule ๐•œ E} :
      U โŸ‚ V โ†” โˆ€ u โˆˆ U, โˆ€ v โˆˆ V, inner u v = 0
      @[simp]
      theorem Submodule.isOrtho_bot_left {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {V : Submodule ๐•œ E} :
      @[simp]
      theorem Submodule.isOrtho_bot_right {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} :
      theorem Submodule.IsOrtho.mono_left {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {Uโ‚ : Submodule ๐•œ E} {Uโ‚‚ : Submodule ๐•œ E} {V : Submodule ๐•œ E} (hU : Uโ‚‚ โ‰ค Uโ‚) (h : Uโ‚ โŸ‚ V) :
      Uโ‚‚ โŸ‚ V
      theorem Submodule.IsOrtho.mono_right {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} {Vโ‚ : Submodule ๐•œ E} {Vโ‚‚ : Submodule ๐•œ E} (hV : Vโ‚‚ โ‰ค Vโ‚) (h : U โŸ‚ Vโ‚) :
      U โŸ‚ Vโ‚‚
      theorem Submodule.IsOrtho.mono {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {Uโ‚ : Submodule ๐•œ E} {Vโ‚ : Submodule ๐•œ E} {Uโ‚‚ : Submodule ๐•œ E} {Vโ‚‚ : Submodule ๐•œ E} (hU : Uโ‚‚ โ‰ค Uโ‚) (hV : Vโ‚‚ โ‰ค Vโ‚) (h : Uโ‚ โŸ‚ Vโ‚) :
      Uโ‚‚ โŸ‚ Vโ‚‚
      @[simp]
      theorem Submodule.isOrtho_self {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} :
      @[simp]
      theorem Submodule.isOrtho_orthogonal_right {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (U : Submodule ๐•œ E) :
      @[simp]
      theorem Submodule.isOrtho_orthogonal_left {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] (U : Submodule ๐•œ E) :
      theorem Submodule.IsOrtho.le {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} {V : Submodule ๐•œ E} (h : U โŸ‚ V) :
      theorem Submodule.IsOrtho.ge {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} {V : Submodule ๐•œ E} (h : U โŸ‚ V) :
      @[simp]
      theorem Submodule.isOrtho_top_right {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} :
      @[simp]
      theorem Submodule.isOrtho_top_left {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {V : Submodule ๐•œ E} :
      theorem Submodule.IsOrtho.disjoint {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} {V : Submodule ๐•œ E} (h : U โŸ‚ V) :

      Orthogonal submodules are disjoint.

      @[simp]
      theorem Submodule.isOrtho_sup_left {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {Uโ‚ : Submodule ๐•œ E} {Uโ‚‚ : Submodule ๐•œ E} {V : Submodule ๐•œ E} :
      Uโ‚ โŠ” Uโ‚‚ โŸ‚ V โ†” Uโ‚ โŸ‚ V โˆง Uโ‚‚ โŸ‚ V
      @[simp]
      theorem Submodule.isOrtho_sup_right {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} {Vโ‚ : Submodule ๐•œ E} {Vโ‚‚ : Submodule ๐•œ E} :
      U โŸ‚ Vโ‚ โŠ” Vโ‚‚ โ†” U โŸ‚ Vโ‚ โˆง U โŸ‚ Vโ‚‚
      @[simp]
      theorem Submodule.isOrtho_sSup_left {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Set (Submodule ๐•œ E)} {V : Submodule ๐•œ E} :
      sSup U โŸ‚ V โ†” โˆ€ Uแตข โˆˆ U, Uแตข โŸ‚ V
      @[simp]
      theorem Submodule.isOrtho_sSup_right {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {U : Submodule ๐•œ E} {V : Set (Submodule ๐•œ E)} :
      U โŸ‚ sSup V โ†” โˆ€ Vแตข โˆˆ V, U โŸ‚ Vแตข
      @[simp]
      theorem Submodule.isOrtho_iSup_left {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {ฮน : Sort u_4} {U : ฮน โ†’ Submodule ๐•œ E} {V : Submodule ๐•œ E} :
      iSup U โŸ‚ V โ†” โˆ€ (i : ฮน), U i โŸ‚ V
      @[simp]
      theorem Submodule.isOrtho_iSup_right {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {ฮน : Sort u_4} {U : Submodule ๐•œ E} {V : ฮน โ†’ Submodule ๐•œ E} :
      U โŸ‚ iSup V โ†” โˆ€ (i : ฮน), U โŸ‚ V i
      @[simp]
      theorem Submodule.isOrtho_span {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {s : Set E} {t : Set E} :
      Submodule.span ๐•œ s โŸ‚ Submodule.span ๐•œ t โ†” โˆ€ โฆƒu : Eโฆ„, u โˆˆ s โ†’ โˆ€ โฆƒv : Eโฆ„, v โˆˆ t โ†’ inner u v = 0
      theorem Submodule.IsOrtho.map {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] [NormedAddCommGroup F] [InnerProductSpace ๐•œ F] (f : E โ†’โ‚—แตข[๐•œ] F) {U : Submodule ๐•œ E} {V : Submodule ๐•œ E} (h : U โŸ‚ V) :
      theorem Submodule.IsOrtho.comap {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] [NormedAddCommGroup F] [InnerProductSpace ๐•œ F] (f : E โ†’โ‚—แตข[๐•œ] F) {U : Submodule ๐•œ F} {V : Submodule ๐•œ F} (h : U โŸ‚ V) :
      @[simp]
      theorem Submodule.IsOrtho.map_iff {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] [NormedAddCommGroup F] [InnerProductSpace ๐•œ F] (f : E โ‰ƒโ‚—แตข[๐•œ] F) {U : Submodule ๐•œ E} {V : Submodule ๐•œ E} :
      @[simp]
      theorem Submodule.IsOrtho.comap_iff {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] [NormedAddCommGroup F] [InnerProductSpace ๐•œ F] (f : E โ‰ƒโ‚—แตข[๐•œ] F) {U : Submodule ๐•œ F} {V : Submodule ๐•œ F} :
      theorem orthogonalFamily_iff_pairwise {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {ฮน : Type u_4} {V : ฮน โ†’ Submodule ๐•œ E} :
      (OrthogonalFamily ๐•œ (fun (i : ฮน) => โ†ฅ(V i)) fun (i : ฮน) => (V i).subtypeโ‚—แตข) โ†” Pairwise ((fun (x1 x2 : Submodule ๐•œ E) => x1 โŸ‚ x2) on V)
      theorem OrthogonalFamily.of_pairwise {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {ฮน : Type u_4} {V : ฮน โ†’ Submodule ๐•œ E} :
      Pairwise ((fun (x1 x2 : Submodule ๐•œ E) => x1 โŸ‚ x2) on V) โ†’ OrthogonalFamily ๐•œ (fun (i : ฮน) => โ†ฅ(V i)) fun (i : ฮน) => (V i).subtypeโ‚—แตข

      Alias of the reverse direction of orthogonalFamily_iff_pairwise.

      theorem OrthogonalFamily.pairwise {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {ฮน : Type u_4} {V : ฮน โ†’ Submodule ๐•œ E} :
      (OrthogonalFamily ๐•œ (fun (i : ฮน) => โ†ฅ(V i)) fun (i : ฮน) => (V i).subtypeโ‚—แตข) โ†’ Pairwise ((fun (x1 x2 : Submodule ๐•œ E) => x1 โŸ‚ x2) on V)

      Alias of the forward direction of orthogonalFamily_iff_pairwise.

      theorem OrthogonalFamily.isOrtho {๐•œ : Type u_1} {E : Type u_2} [RCLike ๐•œ] [NormedAddCommGroup E] [InnerProductSpace ๐•œ E] {ฮน : Type u_4} {V : ฮน โ†’ Submodule ๐•œ E} (hV : OrthogonalFamily ๐•œ (fun (i : ฮน) => โ†ฅ(V i)) fun (i : ฮน) => (V i).subtypeโ‚—แตข) {i : ฮน} {j : ฮน} (hij : i โ‰  j) :
      V i โŸ‚ V j

      Two submodules in an orthogonal family with different indices are orthogonal.