Documentation

Mathlib.Topology.Instances.Matrix

Topological properties of matrices #

This file is a place to collect topological results about matrices.

Main definitions: #

Main results #

instance instTopologicalSpaceMatrix {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace R] :
Equations
    instance instT2SpaceMatrix {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace R] [T2Space R] :
    T2Space (Matrix m n R)

    The topology on finite matrices over a discrete space is discrete.

    theorem IsOpen.matrix {m : Type u_4} {n : Type u_5} {R : Type u_8} [Finite m] [Finite n] [TopologicalSpace R] {S : Set R} (hS : IsOpen S) :
    theorem IsCompact.matrix {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace R] {S : Set R} (hS : IsCompact S) :

    Lemmas about continuity of operations #

    instance instContinuousConstSMulMatrix {ฮฑ : Type u_2} {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace R] [SMul ฮฑ R] [ContinuousConstSMul ฮฑ R] :
    instance instContinuousSMulMatrix {ฮฑ : Type u_2} {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace R] [TopologicalSpace ฮฑ] [SMul ฮฑ R] [ContinuousSMul ฮฑ R] :
    ContinuousSMul ฮฑ (Matrix m n R)
    theorem continuous_matrix {ฮฑ : Type u_2} {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace R] [TopologicalSpace ฮฑ] {f : ฮฑ โ†’ Matrix m n R} (h : โˆ€ (i : m) (j : n), Continuous fun (a : ฮฑ) => f a i j) :

    To show a function into matrices is continuous it suffices to show the coefficients of the resulting matrix are continuous

    theorem Continuous.matrix_elem {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] {A : X โ†’ Matrix m n R} (hA : Continuous A) (i : m) (j : n) :
    Continuous fun (x : X) => A x i j
    theorem Continuous.matrix_map {X : Type u_1} {m : Type u_4} {n : Type u_5} {S : Type u_7} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [TopologicalSpace S] {A : X โ†’ Matrix m n S} {f : S โ†’ R} (hA : Continuous A) (hf : Continuous f) :
    Continuous fun (x : X) => (A x).map f
    theorem Continuous.matrix_transpose {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] {A : X โ†’ Matrix m n R} (hA : Continuous A) :
    Continuous fun (x : X) => (A x).transpose
    theorem Continuous.matrix_conjTranspose {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [Star R] [ContinuousStar R] {A : X โ†’ Matrix m n R} (hA : Continuous A) :
    Continuous fun (x : X) => (A x).conjTranspose
    theorem Continuous.matrix_replicateCol {X : Type u_1} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] {ฮน : Type u_11} {A : X โ†’ n โ†’ R} (hA : Continuous A) :
    Continuous fun (x : X) => Matrix.replicateCol ฮน (A x)
    theorem Continuous.matrix_replicateRow {X : Type u_1} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] {ฮน : Type u_11} {A : X โ†’ n โ†’ R} (hA : Continuous A) :
    Continuous fun (x : X) => Matrix.replicateRow ฮน (A x)
    theorem Continuous.matrix_diagonal {X : Type u_1} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [Zero R] [DecidableEq n] {A : X โ†’ n โ†’ R} (hA : Continuous A) :
    Continuous fun (x : X) => Matrix.diagonal (A x)
    theorem Continuous.dotProduct {X : Type u_1} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [Fintype n] [Mul R] [AddCommMonoid R] [ContinuousAdd R] [ContinuousMul R] {A B : X โ†’ n โ†’ R} (hA : Continuous A) (hB : Continuous B) :
    Continuous fun (x : X) => A x โฌแตฅ B x
    theorem Continuous.matrix_mul {X : Type u_1} {m : Type u_4} {n : Type u_5} {p : Type u_6} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [Fintype n] [Mul R] [AddCommMonoid R] [ContinuousAdd R] [ContinuousMul R] {A : X โ†’ Matrix m n R} {B : X โ†’ Matrix n p R} (hA : Continuous A) (hB : Continuous B) :
    Continuous fun (x : X) => A x * B x

    For square matrices the usual continuous_mul can be used.

    theorem Continuous.matrix_vecMulVec {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [Mul R] [ContinuousMul R] {A : X โ†’ m โ†’ R} {B : X โ†’ n โ†’ R} (hA : Continuous A) (hB : Continuous B) :
    Continuous fun (x : X) => Matrix.vecMulVec (A x) (B x)
    theorem Continuous.matrix_mulVec {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [NonUnitalNonAssocSemiring R] [ContinuousAdd R] [ContinuousMul R] [Fintype n] {A : X โ†’ Matrix m n R} {B : X โ†’ n โ†’ R} (hA : Continuous A) (hB : Continuous B) :
    Continuous fun (x : X) => (A x).mulVec (B x)
    theorem Continuous.matrix_vecMul {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [NonUnitalNonAssocSemiring R] [ContinuousAdd R] [ContinuousMul R] [Fintype m] {A : X โ†’ m โ†’ R} {B : X โ†’ Matrix m n R} (hA : Continuous A) (hB : Continuous B) :
    Continuous fun (x : X) => Matrix.vecMul (A x) (B x)
    theorem Continuous.matrix_submatrix {X : Type u_1} {l : Type u_3} {m : Type u_4} {n : Type u_5} {p : Type u_6} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] {A : X โ†’ Matrix l n R} (hA : Continuous A) (eโ‚ : m โ†’ l) (eโ‚‚ : p โ†’ n) :
    Continuous fun (x : X) => (A x).submatrix eโ‚ eโ‚‚
    theorem Continuous.matrix_reindex {X : Type u_1} {l : Type u_3} {m : Type u_4} {n : Type u_5} {p : Type u_6} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] {A : X โ†’ Matrix l n R} (hA : Continuous A) (eโ‚ : l โ‰ƒ m) (eโ‚‚ : n โ‰ƒ p) :
    Continuous fun (x : X) => (Matrix.reindex eโ‚ eโ‚‚) (A x)
    theorem Continuous.matrix_diag {X : Type u_1} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] {A : X โ†’ Matrix n n R} (hA : Continuous A) :
    Continuous fun (x : X) => (A x).diag
    theorem Continuous.matrix_trace {X : Type u_1} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [Fintype n] [AddCommMonoid R] [ContinuousAdd R] {A : X โ†’ Matrix n n R} (hA : Continuous A) :
    Continuous fun (x : X) => (A x).trace
    theorem Continuous.matrix_det {X : Type u_1} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [Fintype n] [DecidableEq n] [CommRing R] [IsTopologicalRing R] {A : X โ†’ Matrix n n R} (hA : Continuous A) :
    Continuous fun (x : X) => (A x).det
    theorem Continuous.matrix_updateCol {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [DecidableEq n] (i : n) {A : X โ†’ Matrix m n R} {B : X โ†’ m โ†’ R} (hA : Continuous A) (hB : Continuous B) :
    Continuous fun (x : X) => (A x).updateCol i (B x)
    theorem Continuous.matrix_updateRow {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [DecidableEq m] (i : m) {A : X โ†’ Matrix m n R} {B : X โ†’ n โ†’ R} (hA : Continuous A) (hB : Continuous B) :
    Continuous fun (x : X) => (A x).updateRow i (B x)
    theorem Continuous.matrix_cramer {X : Type u_1} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [Fintype n] [DecidableEq n] [CommRing R] [IsTopologicalRing R] {A : X โ†’ Matrix n n R} {B : X โ†’ n โ†’ R} (hA : Continuous A) (hB : Continuous B) :
    Continuous fun (x : X) => (A x).cramer (B x)
    theorem Continuous.matrix_adjugate {X : Type u_1} {n : Type u_5} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [Fintype n] [DecidableEq n] [CommRing R] [IsTopologicalRing R] {A : X โ†’ Matrix n n R} (hA : Continuous A) :
    Continuous fun (x : X) => (A x).adjugate

    When Ring.inverse is continuous at the determinant (such as in a NormedRing, or a topological field), so is Matrix.inv.

    theorem Topology.IsInducing.matrix_map {m : Type u_11} {n : Type u_12} {R : Type u_13} {S : Type u_14} [TopologicalSpace R] [TopologicalSpace S] {f : R โ†’ S} (hf : IsInducing f) :
    IsInducing fun (x : Matrix m n R) => x.map f
    theorem Topology.IsEmbedding.matrix_map {m : Type u_11} {n : Type u_12} {R : Type u_13} {S : Type u_14} [TopologicalSpace R] [TopologicalSpace S] {f : R โ†’ S} (hf : IsEmbedding f) :
    IsEmbedding fun (x : Matrix m n R) => x.map f
    theorem Topology.IsClosedEmbedding.matrix_map {m : Type u_11} {n : Type u_12} {R : Type u_13} {S : Type u_14} [TopologicalSpace R] [TopologicalSpace S] {f : R โ†’ S} (hf : IsClosedEmbedding f) :
    IsClosedEmbedding fun (x : Matrix m n R) => x.map f
    theorem Topology.IsOpenEmbedding.matrix_map {m : Type u_11} {n : Type u_12} {R : Type u_13} {S : Type u_14} [TopologicalSpace R] [TopologicalSpace S] {f : R โ†’ S} [Finite m] [Finite n] (hf : IsOpenEmbedding f) :
    IsOpenEmbedding fun (x : Matrix m n R) => x.map f
    theorem Continuous.matrix_fromBlocks {X : Type u_1} {l : Type u_3} {m : Type u_4} {n : Type u_5} {p : Type u_6} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] {A : X โ†’ Matrix n l R} {B : X โ†’ Matrix n m R} {C : X โ†’ Matrix p l R} {D : X โ†’ Matrix p m R} (hA : Continuous A) (hB : Continuous B) (hC : Continuous C) (hD : Continuous D) :
    Continuous fun (x : X) => Matrix.fromBlocks (A x) (B x) (C x) (D x)
    theorem Continuous.matrix_blockDiagonal {X : Type u_1} {m : Type u_4} {n : Type u_5} {p : Type u_6} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] [Zero R] [DecidableEq p] {A : X โ†’ p โ†’ Matrix m n R} (hA : Continuous A) :
    Continuous fun (x : X) => Matrix.blockDiagonal (A x)
    theorem Continuous.matrix_blockDiag {X : Type u_1} {m : Type u_4} {n : Type u_5} {p : Type u_6} {R : Type u_8} [TopologicalSpace X] [TopologicalSpace R] {A : X โ†’ Matrix (m ร— p) (n ร— p) R} (hA : Continuous A) :
    Continuous fun (x : X) => (A x).blockDiag
    theorem Continuous.matrix_blockDiagonal' {X : Type u_1} {l : Type u_3} {R : Type u_8} {m' : l โ†’ Type u_9} {n' : l โ†’ Type u_10} [TopologicalSpace X] [TopologicalSpace R] [Zero R] [DecidableEq l] {A : X โ†’ (i : l) โ†’ Matrix (m' i) (n' i) R} (hA : Continuous A) :
    Continuous fun (x : X) => Matrix.blockDiagonal' (A x)
    theorem Continuous.matrix_blockDiag' {X : Type u_1} {l : Type u_3} {R : Type u_8} {m' : l โ†’ Type u_9} {n' : l โ†’ Type u_10} [TopologicalSpace X] [TopologicalSpace R] {A : X โ†’ Matrix ((i : l) ร— m' i) ((i : l) ร— n' i) R} (hA : Continuous A) :
    Continuous fun (x : X) => (A x).blockDiag'

    Lemmas about infinite sums #

    theorem HasSum.matrix_transpose {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} {f : X โ†’ Matrix m n R} {a : Matrix m n R} (hf : HasSum f a L) :
    HasSum (fun (x : X) => (f x).transpose) a.transpose L
    theorem Summable.matrix_transpose {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} {f : X โ†’ Matrix m n R} (hf : Summable f L) :
    Summable (fun (x : X) => (f x).transpose) L
    @[simp]
    theorem summable_matrix_transpose {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} {f : X โ†’ Matrix m n R} :
    Summable (fun (x : X) => (f x).transpose) L โ†” Summable f L
    theorem Matrix.transpose_tsum {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [T2Space R] {f : X โ†’ Matrix m n R} :
    (โˆ‘'[L] (x : X), f x).transpose = โˆ‘'[L] (x : X), (f x).transpose
    theorem HasSum.matrix_conjTranspose {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [StarAddMonoid R] [ContinuousStar R] {f : X โ†’ Matrix m n R} {a : Matrix m n R} (hf : HasSum f a L) :
    HasSum (fun (x : X) => (f x).conjTranspose) a.conjTranspose L
    theorem Summable.matrix_conjTranspose {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [StarAddMonoid R] [ContinuousStar R] {f : X โ†’ Matrix m n R} (hf : Summable f L) :
    Summable (fun (x : X) => (f x).conjTranspose) L
    @[simp]
    theorem summable_matrix_conjTranspose {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [StarAddMonoid R] [ContinuousStar R] {f : X โ†’ Matrix m n R} :
    Summable (fun (x : X) => (f x).conjTranspose) L โ†” Summable f L
    theorem Matrix.conjTranspose_tsum {X : Type u_1} {m : Type u_4} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [StarAddMonoid R] [ContinuousStar R] [T2Space R] {f : X โ†’ Matrix m n R} :
    (โˆ‘'[L] (x : X), f x).conjTranspose = โˆ‘'[L] (x : X), (f x).conjTranspose
    theorem HasSum.matrix_diagonal {X : Type u_1} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [DecidableEq n] {f : X โ†’ n โ†’ R} {a : n โ†’ R} (hf : HasSum f a L) :
    HasSum (fun (x : X) => Matrix.diagonal (f x)) (Matrix.diagonal a) L
    theorem Summable.matrix_diagonal {X : Type u_1} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [DecidableEq n] {f : X โ†’ n โ†’ R} (hf : Summable f L) :
    Summable (fun (x : X) => Matrix.diagonal (f x)) L
    @[simp]
    theorem summable_matrix_diagonal {X : Type u_1} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [DecidableEq n] {f : X โ†’ n โ†’ R} :
    Summable (fun (x : X) => Matrix.diagonal (f x)) L โ†” Summable f L
    theorem Matrix.diagonal_tsum {X : Type u_1} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [DecidableEq n] [T2Space R] {f : X โ†’ n โ†’ R} :
    diagonal (โˆ‘'[L] (x : X), f x) = โˆ‘'[L] (x : X), diagonal (f x)
    theorem HasSum.matrix_diag {X : Type u_1} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} {f : X โ†’ Matrix n n R} {a : Matrix n n R} (hf : HasSum f a L) :
    HasSum (fun (x : X) => (f x).diag) a.diag L
    theorem Summable.matrix_diag {X : Type u_1} {n : Type u_5} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} {f : X โ†’ Matrix n n R} (hf : Summable f L) :
    Summable (fun (x : X) => (f x).diag) L
    theorem HasSum.matrix_blockDiagonal {X : Type u_1} {m : Type u_4} {n : Type u_5} {p : Type u_6} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [DecidableEq p] {f : X โ†’ p โ†’ Matrix m n R} {a : p โ†’ Matrix m n R} (hf : HasSum f a L) :
    HasSum (fun (x : X) => Matrix.blockDiagonal (f x)) (Matrix.blockDiagonal a) L
    theorem Summable.matrix_blockDiagonal {X : Type u_1} {m : Type u_4} {n : Type u_5} {p : Type u_6} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [DecidableEq p] {f : X โ†’ p โ†’ Matrix m n R} (hf : Summable f L) :
    Summable (fun (x : X) => Matrix.blockDiagonal (f x)) L
    theorem summable_matrix_blockDiagonal {X : Type u_1} {m : Type u_4} {n : Type u_5} {p : Type u_6} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [DecidableEq p] {f : X โ†’ p โ†’ Matrix m n R} :
    Summable (fun (x : X) => Matrix.blockDiagonal (f x)) L โ†” Summable f L
    theorem Matrix.blockDiagonal_tsum {X : Type u_1} {m : Type u_4} {n : Type u_5} {p : Type u_6} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [DecidableEq p] [T2Space R] {f : X โ†’ p โ†’ Matrix m n R} :
    blockDiagonal (โˆ‘'[L] (x : X), f x) = โˆ‘'[L] (x : X), blockDiagonal (f x)
    theorem HasSum.matrix_blockDiag {X : Type u_1} {m : Type u_4} {n : Type u_5} {p : Type u_6} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} {f : X โ†’ Matrix (m ร— p) (n ร— p) R} {a : Matrix (m ร— p) (n ร— p) R} (hf : HasSum f a L) :
    HasSum (fun (x : X) => (f x).blockDiag) a.blockDiag L
    theorem Summable.matrix_blockDiag {X : Type u_1} {m : Type u_4} {n : Type u_5} {p : Type u_6} {R : Type u_8} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} {f : X โ†’ Matrix (m ร— p) (n ร— p) R} (hf : Summable f L) :
    Summable (fun (x : X) => (f x).blockDiag) L
    theorem HasSum.matrix_blockDiagonal' {X : Type u_1} {l : Type u_3} {R : Type u_8} {m' : l โ†’ Type u_9} {n' : l โ†’ Type u_10} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [DecidableEq l] {f : X โ†’ (i : l) โ†’ Matrix (m' i) (n' i) R} {a : (i : l) โ†’ Matrix (m' i) (n' i) R} (hf : HasSum f a L) :
    theorem Summable.matrix_blockDiagonal' {X : Type u_1} {l : Type u_3} {R : Type u_8} {m' : l โ†’ Type u_9} {n' : l โ†’ Type u_10} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [DecidableEq l] {f : X โ†’ (i : l) โ†’ Matrix (m' i) (n' i) R} (hf : Summable f L) :
    Summable (fun (x : X) => Matrix.blockDiagonal' (f x)) L
    theorem summable_matrix_blockDiagonal' {X : Type u_1} {l : Type u_3} {R : Type u_8} {m' : l โ†’ Type u_9} {n' : l โ†’ Type u_10} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [DecidableEq l] {f : X โ†’ (i : l) โ†’ Matrix (m' i) (n' i) R} :
    Summable (fun (x : X) => Matrix.blockDiagonal' (f x)) L โ†” Summable f L
    theorem Matrix.blockDiagonal'_tsum {X : Type u_1} {l : Type u_3} {R : Type u_8} {m' : l โ†’ Type u_9} {n' : l โ†’ Type u_10} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} [DecidableEq l] [T2Space R] {f : X โ†’ (i : l) โ†’ Matrix (m' i) (n' i) R} :
    blockDiagonal' (โˆ‘'[L] (x : X), f x) = โˆ‘'[L] (x : X), blockDiagonal' (f x)
    theorem HasSum.matrix_blockDiag' {X : Type u_1} {l : Type u_3} {R : Type u_8} {m' : l โ†’ Type u_9} {n' : l โ†’ Type u_10} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} {f : X โ†’ Matrix ((i : l) ร— m' i) ((i : l) ร— n' i) R} {a : Matrix ((i : l) ร— m' i) ((i : l) ร— n' i) R} (hf : HasSum f a L) :
    HasSum (fun (x : X) => (f x).blockDiag') a.blockDiag' L
    theorem Summable.matrix_blockDiag' {X : Type u_1} {l : Type u_3} {R : Type u_8} {m' : l โ†’ Type u_9} {n' : l โ†’ Type u_10} [AddCommMonoid R] [TopologicalSpace R] {L : SummationFilter X} {f : X โ†’ Matrix ((i : l) ร— m' i) ((i : l) ร— n' i) R} (hf : Summable f L) :
    Summable (fun (x : X) => (f x).blockDiag') L

    Lemmas about matrix groups #

    The determinant is continuous as a map from the general linear group to the units.

    If R is a commutative ring with the discrete topology, then SL(n, R) has the discrete topology.

    The special linear group over a topological ring is a topological group.

    The natural map from SL n A to GL n A is continuous.

    The natural map from SL n A to GL n A is inducing, i.e. the topology on SL n A is the pullback of the topology from GL n A.

    The natural map from SL n A in GL n A is an embedding, i.e. it is an injection and the topology on SL n A coincides with the subspace topology from GL n A.

    The natural inclusion of SL n A in GL n A is a closed embedding.