File: Mathlib/Data/Matrix/Composition.lean

full_name: Matrix.comp
code: /-- I by J matrix where each entry is a K by L matrix is equivalent to
    I × K by J × L matrix -/
@[simps]
def comp : Matrix I J (Matrix K L R) ≃ Matrix (I × K) (J × L) R 
goal: Matrix I J (Matrix K L R) ≃ Matrix (I × K) (J × L) R

full_name: Matrix.comp_apply
code: /-- I by J matrix where each entry is a K by L matrix is equivalent to
    I × K by J × L matrix -/
@[simps]
def comp : Matrix I J (Matrix K L R) ≃ Matrix (I × K) (J × L) R 
goal: (Matrix.comp I J K L R) m ik jl = m ik.1 jl.1 ik.2 jl.2

full_name: Matrix.comp_symm_apply
code: /-- I by J matrix where each entry is a K by L matrix is equivalent to
    I × K by J × L matrix -/
@[simps]
def comp : Matrix I J (Matrix K L R) ≃ Matrix (I × K) (J × L) R 
goal: (Matrix.comp I J K L R).symm n i j k l = n (i, k) (j, l)

full_name: Matrix.compAddEquiv_apply
code: /-- `Matrix.comp` as `AddEquiv` -/
@[simps!]
def compAddEquiv : Matrix I J (Matrix K L R) ≃+ Matrix (I × K) (J × L) R 
goal: (Matrix.compAddEquiv I J K L R) m ik jl = m ik.1 jl.1 ik.2 jl.2

full_name: Matrix.compAddEquiv
code: /-- `Matrix.comp` as `AddEquiv` -/
@[simps!]
def compAddEquiv : Matrix I J (Matrix K L R) ≃+ Matrix (I × K) (J × L) R 
goal: Matrix I J (Matrix K L R) ≃+ Matrix (I × K) (J × L) R

full_name: Matrix.compAddEquiv_symm_apply
code: /-- `Matrix.comp` as `AddEquiv` -/
@[simps!]
def compAddEquiv : Matrix I J (Matrix K L R) ≃+ Matrix (I × K) (J × L) R 
goal: (Matrix.compAddEquiv I J K L R).symm n i j k l = n (i, k) (j, l)

full_name: Matrix.compRingEquiv_apply
code: /-- `Matrix.comp` as `RingEquiv` -/
@[simps!]
def compRingEquiv : Matrix I I (Matrix J J R) ≃+* Matrix (I × J) (I × J) R 
goal: (Matrix.compRingEquiv I J R) m ik jl = m ik.1 jl.1 ik.2 jl.2

full_name: Matrix.compRingEquiv
code: /-- `Matrix.comp` as `RingEquiv` -/
@[simps!]
def compRingEquiv : Matrix I I (Matrix J J R) ≃+* Matrix (I × J) (I × J) R 
goal: Matrix I I (Matrix J J R) ≃+* Matrix (I × J) (I × J) R

full_name: Matrix.compRingEquiv_symm_apply
code: /-- `Matrix.comp` as `RingEquiv` -/
@[simps!]
def compRingEquiv : Matrix I I (Matrix J J R) ≃+* Matrix (I × J) (I × J) R 
goal: (Matrix.compRingEquiv I J R).symm n i j k l = n (i, k) (j, l)

full_name: Matrix.compLinearEquiv
code: /-- `Matrix.comp` as `LinearEquiv` -/
@[simps!]
def compLinearEquiv : Matrix I J (Matrix K L R) ≃ₗ[K] Matrix (I × K) (J × L) R 
goal: Matrix I J (Matrix K L R) ≃ₗ[K] Matrix (I × K) (J × L) R

full_name: Matrix.compLinearEquiv_symm_apply
code: /-- `Matrix.comp` as `LinearEquiv` -/
@[simps!]
def compLinearEquiv : Matrix I J (Matrix K L R) ≃ₗ[K] Matrix (I × K) (J × L) R 
goal: ∀ (a : Matrix (I × K) (J × L) R), (Matrix.compLinearEquiv I J L R K).symm a = (Matrix.compAddEquiv I J K L R).symm a

full_name: Matrix.compLinearEquiv_apply
code: /-- `Matrix.comp` as `LinearEquiv` -/
@[simps!]
def compLinearEquiv : Matrix I J (Matrix K L R) ≃ₗ[K] Matrix (I × K) (J × L) R 
goal: ∀ (a : Matrix I J (Matrix K L R)), (Matrix.compLinearEquiv I J L R K) a = (Matrix.compAddEquiv I J K L R) a

full_name: Matrix.compAlgEquiv_symm_apply
code: /-- `Matrix.comp` as `AlgEquiv` -/
@[simps!]
def compAlgEquiv : Matrix I I (Matrix J J R) ≃ₐ[K] Matrix (I × J) (I × J) R 
goal: (Matrix.compAlgEquiv I J R K).symm n i j k l = n (i, k) (j, l)

full_name: Matrix.compAlgEquiv
code: /-- `Matrix.comp` as `AlgEquiv` -/
@[simps!]
def compAlgEquiv : Matrix I I (Matrix J J R) ≃ₐ[K] Matrix (I × J) (I × J) R 
goal: Matrix I I (Matrix J J R) ≃ₐ[K] Matrix (I × J) (I × J) R

full_name: Matrix.compAlgEquiv_apply
code: /-- `Matrix.comp` as `AlgEquiv` -/
@[simps!]
def compAlgEquiv : Matrix I I (Matrix J J R) ≃ₐ[K] Matrix (I × J) (I × J) R 
goal: (Matrix.compAlgEquiv I J R K) m ik jl = m ik.1 jl.1 ik.2 jl.2