mathlib3 documentation

monlib / linear_algebra.my_matrix.include_block

Include block #

This file defines matrix.include_block which immitates direct_sum.component_of but for pi instead of direct_sum :TODO:

The direct sum in these files are sort of misleading.

theorem finset.sum_sigma_univ {β : Type u_1} {α : Type u_2} [add_comm_monoid β] [fintype α] {σ : α Type u_3} [Π (i : α), fintype (σ i)] (f : (Σ (i : α), σ i) β) :
finset.univ.sum (λ (x : Σ (i : α), σ i), f x) = finset.univ.sum (λ (a : α), finset.univ.sum (λ (s : σ a), f a, s⟩))
def matrix.block_diagonal'_alg_hom {o : Type u_1} {m' : o Type u_2} {α : Type u_3} [fintype o] [decidable_eq o] [Π (i : o), fintype (m' i)] [Π (i : o), decidable_eq (m' i)] [comm_semiring α] :
(Π (i : o), matrix (m' i) (m' i) α) →ₐ[α] matrix (Σ (i : o), m' i) (Σ (i : o), m' i) α
Equations
theorem matrix.block_diagonal'_alg_hom_apply {o : Type u_1} {m' : o Type u_2} {α : Type u_3} [fintype o] [decidable_eq o] [Π (i : o), fintype (m' i)] [Π (i : o), decidable_eq (m' i)] [comm_semiring α] (x : Π (i : o), matrix (m' i) (m' i) α) :
def matrix.block_diag'_linear_map {o : Type u_1} {m' : o Type u_2} {n' : o Type u_3} {α : Type u_4} [semiring α] :
matrix (Σ (i : o), m' i) (Σ (i : o), n' i) α →ₗ[α] Π (i : o), matrix (m' i) (n' i) α
Equations
theorem matrix.block_diag'_linear_map_apply {o : Type u_1} {m' : o Type u_2} {n' : o Type u_3} {α : Type u_4} [semiring α] (x : matrix (Σ (i : o), m' i) (Σ (i : o), n' i) α) :
theorem matrix.block_diag'_linear_map_block_diagonal'_alg_hom {o : Type u_1} {m' : o Type u_2} {α : Type u_3} [fintype o] [decidable_eq o] [Π (i : o), fintype (m' i)] [Π (i : o), decidable_eq (m' i)] [comm_semiring α] (x : Π (i : o), matrix (m' i) (m' i) α) :
theorem matrix.block_diagonal'_ext {R : Type u_1} {k : Type u_2} {s : k Type u_3} (x y : matrix (Σ (i : k), s i) (Σ (i : k), s i) R) :
x = y (i : k) (j : s i) (k_1 : k) (l : s k_1), x i, j⟩ k_1, l⟩ = y i, j⟩ k_1, l⟩
def matrix.is_block_diagonal {o : Type u_1} {m' : o Type u_2} {n' : o Type u_3} {α : Type u_4} [decidable_eq o] [has_zero α] (x : matrix (Σ (i : o), m' i) (Σ (i : o), n' i) α) :
Prop
Equations
def matrix.include_block {o : Type u_1} [decidable_eq o] {m' : o Type u_2} {α : Type u_3} [comm_semiring α] {i : o} :
matrix (m' i) (m' i) α →ₗ[α] Π (j : o), matrix (m' j) (m' j) α
Equations
theorem matrix.include_block_apply {o : Type u_1} [decidable_eq o] {m' : o Type u_2} {α : Type u_3} [comm_semiring α] {i : o} (x : matrix (m' i) (m' i) α) :
matrix.include_block x = λ (j : o), dite (i = j) (λ (h : i = j), _.mp x) (λ (_x : ¬i = j), 0)
theorem matrix.include_block_mul_same {o : Type u_1} [fintype o] [decidable_eq o] {m' : o Type u_2} {α : Type u_3} [Π (i : o), fintype (m' i)] [Π (i : o), decidable_eq (m' i)] [comm_semiring α] {i : o} (x y : matrix (m' i) (m' i) α) :
theorem matrix.include_block_mul_ne_same {o : Type u_1} [fintype o] [decidable_eq o] {m' : o Type u_2} {α : Type u_3} [Π (i : o), fintype (m' i)] [Π (i : o), decidable_eq (m' i)] [comm_semiring α] {i j : o} (h : i j) (x : matrix (m' i) (m' i) α) (y : matrix (m' j) (m' j) α) :
theorem matrix.include_block_mul {o : Type u_1} [fintype o] [decidable_eq o] {m' : o Type u_2} {α : Type u_3} [Π (i : o), fintype (m' i)] [Π (i : o), decidable_eq (m' i)] [comm_semiring α] {i : o} (x : matrix (m' i) (m' i) α) (y : Π (j : o), matrix (m' j) (m' j) α) :
theorem matrix.mul_include_block {o : Type u_1} [fintype o] [decidable_eq o] {m' : o Type u_2} {α : Type u_3} [Π (i : o), fintype (m' i)] [Π (i : o), decidable_eq (m' i)] [comm_semiring α] {i : o} (x : Π (j : o), matrix (m' j) (m' j) α) (y : matrix (m' i) (m' i) α) :
theorem matrix.sum_include_block {R : Type u_1} {k : Type u_2} [comm_semiring R] [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (x : Π (i : k), matrix (s i) (s i) R) :
theorem matrix.block_diagonal'_include_block_trace {R : Type u_1} {k : Type u_2} [comm_semiring R] [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (x : Π (i : k), matrix (s i) (s i) R) (j : k) :
theorem matrix.std_basis_matrix_mul_trace {R : Type u_1} {n : Type u_2} {p : Type u_3} [semiring R] [fintype p] [decidable_eq p] [fintype n] [decidable_eq n] (i : n) (j : p) (x : matrix p n R) :
theorem matrix.ext_iff_trace {R : Type u_1} {n : Type u_2} {p : Type u_3} [fintype n] [fintype p] [decidable_eq n] [decidable_eq p] [comm_semiring R] (x y : matrix n p R) :
x = y (a : matrix p n R), (x.mul a).trace = (y.mul a).trace
theorem matrix.is_block_diagonal.eq {R : Type u_1} [comm_semiring R] {k : Type u_2} [decidable_eq k] {s : k Type u_3} {x : matrix (Σ (i : k), s i) (Σ (i : k), s i) R} (hx : x.is_block_diagonal) :
theorem matrix.is_block_diagonal.add {R : Type u_1} [comm_semiring R] {k : Type u_2} [decidable_eq k] {s : k Type u_3} {x y : matrix (Σ (i : k), s i) (Σ (i : k), s i) R} (hx : x.is_block_diagonal) (hy : y.is_block_diagonal) :
theorem matrix.is_block_diagonal.zero {R : Type u_1} [comm_semiring R] {k : Type u_2} [decidable_eq k] {s : k Type u_3} :
@[protected, instance]
def matrix.add_comm_monoid_block_diagonal {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
Equations
theorem matrix.is_block_diagonal.coe_add {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {x y : {x // x.is_block_diagonal}} :
(x + y) = x + y
theorem matrix.is_block_diagonal.coe_sum {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {n : Type u_4} [fintype n] {x : n {x // x.is_block_diagonal}} :
(finset.univ.sum (λ (i : n), x i)) = finset.univ.sum (λ (i : n), (x i))
theorem matrix.is_block_diagonal.coe_zero {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
0 = 0
theorem matrix.is_block_diagonal.smul {R : Type u_1} [comm_semiring R] {k : Type u_2} [decidable_eq k] {s : k Type u_3} {x : matrix (Σ (i : k), s i) (Σ (i : k), s i) R} (hx : x.is_block_diagonal) (α : R) :
@[protected, instance]
def matrix.has_smul_block_diagonal {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
Equations
theorem matrix.is_block_diagonal.coe_smul {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (a : R) (x : {x // x.is_block_diagonal}) :
(a x) = a x
@[protected, instance]
def matrix.mul_action_block_diagonal {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
Equations
@[protected, instance]
def matrix.distrib_mul_action_block_diagonal {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
Equations
@[protected, instance]
def matrix.module_block_diagonal {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
Equations
theorem matrix.is_block_diagonal.block_diagonal' {R : Type u_1} [comm_semiring R] {k : Type u_2} [decidable_eq k] {s : k Type u_3} (x : Π (i : k), matrix (s i) (s i) R) :
theorem matrix.is_block_diagonal_iff {R : Type u_1} [comm_semiring R] {k : Type u_2} [decidable_eq k] {s : k Type u_3} (x : matrix (Σ (i : k), s i) (Σ (i : k), s i) R) :
x.is_block_diagonal (y : Π (i : k), matrix (s i) (s i) R), x = matrix.block_diagonal' y
def matrix.std_basis_matrix_block_diagonal {R : Type u_1} [comm_semiring R] {k : Type u_2} [decidable_eq k] {s : k Type u_3} [Π (i : k), decidable_eq (s i)] (i : k) (j l : s i) (α : R) :
Equations
theorem matrix.include_block_conj_transpose {R : Type u_1} {k : Type u_2} [comm_semiring R] [star_ring R] [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {i : k} {x : matrix (s i) (s i) R} :
theorem matrix.include_block_inj {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {i : k} {x y : matrix (s i) (s i) R} :
theorem matrix.block_diagonal'_include_block_is_hermitian_iff {R : Type u_1} {k : Type u_2} [comm_semiring R] [star_ring R] [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {i : k} (x : matrix (s i) (s i) R) :
theorem matrix.matrix_eq_sum_include_block {R : Type u_1} {k : Type u_2} [comm_semiring R] [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (x : Π (i : k), matrix (s i) (s i) R) :
theorem matrix.include_block_apply_same {R : Type u_1} {k : Type u_2} [comm_semiring R] [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {i : k} (x : matrix (s i) (s i) R) :
theorem matrix.include_block_apply_ne_same {R : Type u_1} {k : Type u_2} [comm_semiring R] [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {i j : k} (x : matrix (s i) (s i) R) (h : i j) :
theorem matrix.include_block_apply_std_basis_matrix {R : Type u_1} {k : Type u_2} [comm_semiring R] [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {i : k} (a b : s i) :
theorem matrix.include_block_mul_include_block {R : Type u_1} {k : Type u_2} [comm_semiring R] [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {i j : k} (x : matrix (s i) (s i) R) (y : matrix (s j) (s j) R) :
matrix.include_block x * matrix.include_block y = dite (j = i) (λ (h : j = i), matrix.include_block (x * _.mpr y)) (λ (h : ¬j = i), 0)
theorem matrix.is_block_diagonal.mul {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] {x y : matrix (Σ (i : k), s i) (Σ (i : k), s i) R} (hx : x.is_block_diagonal) (hy : y.is_block_diagonal) :
@[instance]
def matrix.is_block_diagonal.has_mul {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
Equations
theorem matrix.is_block_diagonal.coe_mul {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {x y : {x // x.is_block_diagonal}} :
(x * y) = x * y
theorem matrix.is_block_diagonal.one {R : Type u_1} [comm_semiring R] {k : Type u_2} [decidable_eq k] {s : k Type u_3} [Π (i : k), decidable_eq (s i)] :
@[instance]
def matrix.is_block_diagonal.has_one {R : Type u_1} [comm_semiring R] {k : Type u_2} [decidable_eq k] {s : k Type u_3} [Π (i : k), decidable_eq (s i)] :
Equations
theorem matrix.is_block_diagonal.coe_one {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
1 = 1
theorem matrix.is_block_diagonal.coe_nsmul {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (n : ) (x : {x // x.is_block_diagonal}) :
(n x) = n x
theorem matrix.is_block_diagonal.npow {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (n : ) {x : matrix (Σ (i : k), s i) (Σ (i : k), s i) R} (hx : x.is_block_diagonal) :
@[instance]
def matrix.is_block_diagonal.has_npow {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
Equations
theorem matrix.is_block_diagonal.coe_npow {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (n : ) (x : {x // x.is_block_diagonal}) :
(x ^ n) = x ^ n
@[instance]
def matrix.is_block_diagonal.semiring {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
Equations
@[instance]
def matrix.is_block_diagonal.algebra {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
Equations
def matrix.is_block_diagonal_pi_alg_equiv {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
{x // x.is_block_diagonal} ≃ₐ[R] Π (i : k), matrix (s i) (s i) R
Equations
@[simp]
theorem matrix.is_block_diagonal_pi_alg_equiv_symm_apply_coe {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (x : Π (i : k), matrix (s i) (s i) R) :
@[simp]
theorem matrix.is_block_diagonal_pi_alg_equiv_apply {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (x : {x // x.is_block_diagonal}) (k_1 : k) :
theorem matrix.is_block_diagonal.star {R : Type u_1} [comm_semiring R] [star_add_monoid R] {k : Type u_2} [decidable_eq k] {s : k Type u_3} {x : matrix (Σ (i : k), s i) (Σ (i : k), s i) R} (hx : x.is_block_diagonal) :
@[instance]
def matrix.is_block_diagonal.has_star {R : Type u_1} [comm_semiring R] [star_add_monoid R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] :
Equations
theorem matrix.is_block_diagonal.coe_star {R : Type u_1} [comm_semiring R] [star_add_monoid R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (x : {x // x.is_block_diagonal}) :
@[simp]
theorem matrix.equiv.sigma_prod_distrib'_apply_fst {ι : Type u_1} (β : Type u_2) (α : ι Type u_3) (ᾰ : β × Σ (i : ι), α i) :
@[simp]
theorem matrix.equiv.sigma_prod_distrib'_symm_apply {ι : Type u_1} (β : Type u_2) (α : ι Type u_3) (ᾰ : Σ (i : ι), β × α i) :
@[simp]
theorem matrix.equiv.sigma_prod_distrib'_apply_snd {ι : Type u_1} (β : Type u_2) (α : ι Type u_3) (ᾰ : β × Σ (i : ι), α i) :
def matrix.equiv.sigma_prod_distrib' {ι : Type u_1} (β : Type u_2) (α : ι Type u_3) :
× Σ (i : ι), α i) Σ (i : ι), β × α i
Equations
@[simp]
theorem matrix.sigma_prod_sigma_symm_apply {α : Type u_1} {β : Type u_2} {ζ : α Type u_3} {℘ : β Type u_4} (x : Σ (i : α) (j : β), ζ i × ℘ j) :
def matrix.sigma_prod_sigma {α : Type u_1} {β : Type u_2} {ζ : α Type u_3} {℘ : β Type u_4} :
((Σ (i : α), ζ i) × Σ (i : β), ℘ i) Σ (i : α) (j : β), ζ i × ℘ j
Equations
@[simp]
theorem matrix.sigma_prod_sigma_apply_snd_fst {α : Type u_1} {β : Type u_2} {ζ : α Type u_3} {℘ : β Type u_4} (x : (Σ (i : α), ζ i) × Σ (i : β), ℘ i) :
(matrix.sigma_prod_sigma x).snd.fst = ((matrix.equiv.sigma_prod_distrib' (Σ (i : α), ζ i) (λ (i : β), ℘ i)) x).fst
@[simp]
theorem matrix.sigma_prod_sigma_apply_snd_snd {α : Type u_1} {β : Type u_2} {ζ : α Type u_3} {℘ : β Type u_4} (x : (Σ (i : α), ζ i) × Σ (i : β), ℘ i) :
@[simp]
theorem matrix.sigma_prod_sigma_apply_fst {α : Type u_1} {β : Type u_2} {ζ : α Type u_3} {℘ : β Type u_4} (x : (Σ (i : α), ζ i) × Σ (i : β), ℘ i) :
(matrix.sigma_prod_sigma x).fst = ((equiv.sigma_prod_distrib (λ (i : α), ζ i) (Σ (i : β), ℘ i)) x).fst
theorem matrix.is_block_diagonal.apply_of_ne {R : Type u_1} [comm_semiring R] {k : Type u_2} [decidable_eq k] {s : k Type u_3} {x : matrix (Σ (i : k), s i) (Σ (i : k), s i) R} (hx : x.is_block_diagonal) (i j : Σ (i : k), s i) (h : i.fst j.fst) :
x i j = 0
theorem matrix.is_block_diagonal.apply_of_ne_coe {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (x : {x // x.is_block_diagonal}) (i j : Σ (i : k), s i) (h : i.fst j.fst) :
x i j = 0
theorem matrix.is_block_diagonal.kronecker_mul {R : Type u_1} [comm_semiring R] {k : Type u_2} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {x y : matrix (Σ (i : k), s i) (Σ (i : k), s i) R} (hx : x.is_block_diagonal) :