let K be Field; for A1, A2, B1, B2 being Matrix of K st width A1 = len B1 & width A2 = len B2 holds
(block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K))) = block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))
let A1, A2, B1, B2 be Matrix of K; ( width A1 = len B1 & width A2 = len B2 implies (block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K))) = block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K)) )
assume that
A1:
width A1 = len B1
and
A2:
width A2 = len B2
; (block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K))) = block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))
A3:
width (A1 * B1) = width B1
by A1, MATRIX_3:def 4;
set b12 = <*B1,B2*>;
set a12 = <*A1,A2*>;
set b2 = <*B2*>;
set b1 = <*B1*>;
set a2 = <*A2*>;
set a1 = <*A1*>;
set ab = <*A1,A2*> (#) <*B1,B2*>;
A4:
Len <*B1,B2*> = (Len <*B1*>) ^ (Len <*B2*>)
by Th14;
set bB = block_diagonal (<*B1,B2*>,(0. K));
set bA = block_diagonal (<*A1,A2*>,(0. K));
A5:
Sum (Width <*A1,A2*>) = width (block_diagonal (<*A1,A2*>,(0. K)))
by Def5;
A6:
Sum (Len <*B1,B2*>) = len (block_diagonal (<*B1,B2*>,(0. K)))
by Def5;
A7:
Width <*A1*> = <*(width A1)*>
by Th19;
set bAbB = (block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)));
set bAB = block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K));
A8:
Sum (Len (<*A1,A2*> (#) <*B1,B2*>)) = len (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K)))
by Def5;
A9:
Sum (Width (<*A1,A2*> (#) <*B1,B2*>)) = width (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K)))
by Def5;
A10:
Sum (Len <*A1,A2*>) = (len A1) + (len A2)
by Th16;
A11:
Sum (Width <*B1,B2*>) = (width B1) + (width B2)
by Th20;
A12:
len (A2 * B2) = len A2
by A2, MATRIX_3:def 4;
A13:
<*A1,A2*> (#) <*B1,B2*> = <*(A1 * B1),(A2 * B2)*>
by Th77;
A14:
Width <*A2*> = <*(width A2)*>
by Th19;
A15:
Len <*B2*> = <*(len B2)*>
by Th15;
A16:
Len <*B1*> = <*(len B1)*>
by Th15;
A17:
Width <*A1,A2*> = (Width <*A1*>) ^ (Width <*A2*>)
by Th18;
then A18:
Len (<*A1,A2*> (#) <*B1,B2*>) = Len <*A1,A2*>
by A1, A2, A4, A7, A14, A16, A15, Th73;
A19:
Width (<*A1,A2*> (#) <*B1,B2*>) = Width <*B1,B2*>
by A1, A2, A17, A4, A7, A14, A16, A15, Th73;
Sum (Len <*A1,A2*>) = len (block_diagonal (<*A1,A2*>,(0. K)))
by Def5;
then A20:
len ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) = Sum (Len <*A1,A2*>)
by A1, A2, A17, A4, A7, A14, A16, A15, A5, A6, MATRIX_3:def 4;
A21:
len (A1 * B1) = len A1
by A1, MATRIX_3:def 4;
Sum (Width <*B1,B2*>) = width (block_diagonal (<*B1,B2*>,(0. K)))
by Def5;
then A22:
width ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) = Sum (Width <*B1,B2*>)
by A1, A2, A17, A4, A7, A14, A16, A15, A5, A6, MATRIX_3:def 4;
A23:
width (A2 * B2) = width B2
by A2, MATRIX_3:def 4;
A24: Indices (A1 * B1) =
[:(Seg (len (A1 * B1))),(Seg (width (A1 * B1))):]
by FINSEQ_1:def 3
.=
[:(dom A1),(Seg (width B1)):]
by A3, A21, FINSEQ_1:def 3
;
now for i, j being Nat st [i,j] in Indices (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) holds
(block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (i,j) = ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (i,j)A25:
dom (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) = Seg (len (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))))
by FINSEQ_1:def 3;
let i,
j be
Nat;
( [i,j] in Indices (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) implies (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (i,j) = ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (i,j) )assume A26:
[i,j] in Indices (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K)))
;
(block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (i,j) = ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (i,j)A27:
j in Seg (width (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))))
by A26, ZFMISC_1:87;
A28:
i in dom (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K)))
by A26, ZFMISC_1:87;
then A29:
1
<= i
by A25, FINSEQ_1:1;
Indices (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) =
[:(Seg (len (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))))),(Seg (width (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))))):]
by FINSEQ_1:def 3
.=
Indices ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K))))
by A8, A9, A20, A22, A18, A19, FINSEQ_1:def 3
;
then A30:
((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (
i,
j) =
(Line ((block_diagonal (<*A1,A2*>,(0. K))),i)) "*" (Col ((block_diagonal (<*B1,B2*>,(0. K))),j))
by A1, A2, A17, A4, A7, A14, A16, A15, A5, A6, A26, MATRIX_3:def 4
.=
Sum (mlt ((Line ((block_diagonal (<*A1,A2*>,(0. K))),i)),(Col ((block_diagonal (<*B1,B2*>,(0. K))),j))))
;
A31:
1
<= j
by A27, FINSEQ_1:1;
now ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (i,j) = (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (i,j)per cases
( i <= len A1 or i > len A1 )
;
suppose A32:
i <= len A1
;
((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (i,j) = (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (i,j)then A33:
i in dom (A1 * B1)
by A21, A29, FINSEQ_3:25;
A34:
i in dom A1
by A29, A32, FINSEQ_3:25;
then A35:
Line (
(block_diagonal (<*A1,A2*>,(0. K))),
i)
= (Line (A1,i)) ^ ((width A2) |-> (0. K))
by Th23;
now ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (i,j) = (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (i,j)per cases
( j <= width B1 or j > width B1 )
;
suppose
j <= width B1
;
((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (i,j) = (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (i,j)then A36:
j in Seg (width B1)
by A31;
then A37:
[i,j] in Indices (A1 * B1)
by A24, A34, ZFMISC_1:87;
A38:
dom (Line ((A1 * B1),i)) = Seg (width B1)
by A3, FINSEQ_2:124;
Col (
(block_diagonal (<*B1,B2*>,(0. K))),
j)
= (Col (B1,j)) ^ ((len B2) |-> (0. K))
by A36, Th24;
hence ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (
i,
j) =
(Sum (mlt ((Line (A1,i)),(Col (B1,j))))) + (Sum (mlt (((width A2) |-> (0. K)),((len B2) |-> (0. K)))))
by A1, A2, A30, A35, Lm9
.=
(Sum (mlt ((Line (A1,i)),(Col (B1,j))))) + (Sum ((0. K) * ((width A2) |-> (0. K))))
by A2, FVSUM_1:66
.=
(Sum (mlt ((Line (A1,i)),(Col (B1,j))))) + ((0. K) * (Sum ((width A2) |-> (0. K))))
by FVSUM_1:73
.=
(Sum (mlt ((Line (A1,i)),(Col (B1,j))))) + (0. K)
.=
(Line (A1,i)) "*" (Col (B1,j))
by RLVECT_1:def 4
.=
(A1 * B1) * (
i,
j)
by A1, A37, MATRIX_3:def 4
.=
(Line ((A1 * B1),i)) . j
by A3, A36, MATRIX_0:def 7
.=
((Line ((A1 * B1),i)) ^ ((width (A2 * B2)) |-> (0. K))) . j
by A36, A38, FINSEQ_1:def 7
.=
(Line ((block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))),i)) . j
by A13, A33, Th23
.=
(block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (
i,
j)
by A27, MATRIX_0:def 7
;
verum end; suppose A39:
j > width B1
;
((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (i,j) = (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (i,j)then reconsider J =
j - (width B1) as
Element of
NAT by NAT_1:21;
A40:
j = J + (width B1)
;
A41:
len (Line ((A1 * B1),i)) = width B1
by A3, CARD_1:def 7;
A42:
dom ((width (A2 * B2)) |-> (0. K)) = Seg (width B2)
by A23, FINSEQ_2:124;
J <> 0
by A39;
then A43:
J in Seg (width B2)
by A9, A19, A11, A27, A40, FINSEQ_1:61;
then
Col (
(block_diagonal (<*B1,B2*>,(0. K))),
(J + (width B1)))
= ((len B1) |-> (0. K)) ^ (Col (B2,J))
by Th24;
hence ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (
i,
j) =
(Sum (mlt ((Line (A1,i)),((len B1) |-> (0. K))))) + (Sum (mlt (((width A2) |-> (0. K)),(Col (B2,J)))))
by A1, A2, A30, A35, Lm9
.=
(Sum (mlt ((Line (A1,i)),((len B1) |-> (0. K))))) + (Sum ((0. K) * (Col (B2,J))))
by A2, FVSUM_1:66
.=
(Sum ((0. K) * (Line (A1,i)))) + (Sum ((0. K) * (Col (B2,J))))
by A1, FVSUM_1:66
.=
(Sum ((0. K) * (Line (A1,i)))) + ((0. K) * (Sum (Col (B2,J))))
by FVSUM_1:73
.=
((0. K) * (Sum (Line (A1,i)))) + ((0. K) * (Sum (Col (B2,J))))
by FVSUM_1:73
.=
((0. K) * (Sum (Line (A1,i)))) + (0. K)
.=
(0. K) + (0. K)
.=
0. K
by RLVECT_1:def 4
.=
((width (A2 * B2)) |-> (0. K)) . J
by A23, A43, FINSEQ_2:57
.=
((Line ((A1 * B1),i)) ^ ((width (A2 * B2)) |-> (0. K))) . (J + (width (A1 * B1)))
by A3, A43, A41, A42, FINSEQ_1:def 7
.=
(Line ((block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))),i)) . j
by A13, A3, A33, Th23
.=
(block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (
i,
j)
by A27, MATRIX_0:def 7
;
verum end; end; end; hence
((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (
i,
j)
= (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (
i,
j)
;
verum end; suppose A44:
i > len A1
;
((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (i,j) = (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (i,j)then reconsider I =
i - (len A1) as
Element of
NAT by NAT_1:21;
A45:
i = I + (len A1)
;
A46:
dom A2 = dom (A2 * B2)
by A12, FINSEQ_3:29;
I <> 0
by A44;
then
I in Seg (len A2)
by A8, A18, A10, A28, A25, A45, FINSEQ_1:61;
then A47:
I in dom A2
by FINSEQ_1:def 3;
then A48:
Line (
(block_diagonal (<*A1,A2*>,(0. K))),
(I + (len A1)))
= ((width A1) |-> (0. K)) ^ (Line (A2,I))
by Th23;
now ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (i,j) = (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (i,j)per cases
( j <= width B1 or j > width B1 )
;
suppose A49:
j <= width B1
;
((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (i,j) = (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (i,j)A50:
dom ((width (A1 * B1)) |-> (0. K)) = Seg (width B1)
by A3, FINSEQ_2:124;
A51:
j in Seg (width B1)
by A31, A49;
then
Col (
(block_diagonal (<*B1,B2*>,(0. K))),
j)
= (Col (B1,j)) ^ ((len B2) |-> (0. K))
by Th24;
hence ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (
i,
j) =
(Sum (mlt (((width A1) |-> (0. K)),(Col (B1,j))))) + (Sum (mlt ((Line (A2,I)),((len B2) |-> (0. K)))))
by A1, A2, A30, A48, Lm9
.=
(Sum (mlt (((width A1) |-> (0. K)),(Col (B1,j))))) + (Sum ((0. K) * (Line (A2,I))))
by A2, FVSUM_1:66
.=
(Sum ((0. K) * (Col (B1,j)))) + (Sum ((0. K) * (Line (A2,I))))
by A1, FVSUM_1:66
.=
(Sum ((0. K) * (Col (B1,j)))) + ((0. K) * (Sum (Line (A2,I))))
by FVSUM_1:73
.=
((0. K) * (Sum (Col (B1,j)))) + ((0. K) * (Sum (Line (A2,I))))
by FVSUM_1:73
.=
((0. K) * (Sum (Col (B1,j)))) + (0. K)
.=
(0. K) + (0. K)
.=
0. K
by RLVECT_1:def 4
.=
((width (A1 * B1)) |-> (0. K)) . j
by A3, A51, FINSEQ_2:57
.=
(((width (A1 * B1)) |-> (0. K)) ^ (Line ((A2 * B2),I))) . j
by A51, A50, FINSEQ_1:def 7
.=
(Line ((block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))),(I + (len A1)))) . j
by A13, A21, A47, A46, Th23
.=
(block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (
i,
j)
by A27, MATRIX_0:def 7
;
verum end; suppose A52:
j > width B1
;
((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (i,j) = (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (i,j)then reconsider J =
j - (width B1) as
Element of
NAT by NAT_1:21;
A53:
j = J + (width B1)
;
J <> 0
by A52;
then A54:
J in Seg (width B2)
by A9, A19, A11, A27, A53, FINSEQ_1:61;
then A55:
[I,J] in Indices (A2 * B2)
by A23, A47, A46, ZFMISC_1:87;
A56:
len ((width (A1 * B1)) |-> (0. K)) = width B1
by A3, CARD_1:def 7;
A57:
dom (Line ((A2 * B2),I)) = Seg (width B2)
by A23, FINSEQ_2:124;
Col (
(block_diagonal (<*B1,B2*>,(0. K))),
(J + (width B1)))
= ((len B1) |-> (0. K)) ^ (Col (B2,J))
by A54, Th24;
hence ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (
i,
j) =
(Sum (mlt (((width A1) |-> (0. K)),((len B1) |-> (0. K))))) + (Sum (mlt ((Line (A2,I)),(Col (B2,J)))))
by A1, A2, A30, A48, Lm9
.=
(Sum ((0. K) * ((width A1) |-> (0. K)))) + (Sum (mlt ((Line (A2,I)),(Col (B2,J)))))
by A1, FVSUM_1:66
.=
((0. K) * (Sum ((width A1) |-> (0. K)))) + (Sum (mlt ((Line (A2,I)),(Col (B2,J)))))
by FVSUM_1:73
.=
(0. K) + (Sum (mlt ((Line (A2,I)),(Col (B2,J)))))
.=
(Line (A2,I)) "*" (Col (B2,J))
by RLVECT_1:def 4
.=
(A2 * B2) * (
I,
J)
by A2, A55, MATRIX_3:def 4
.=
(Line ((A2 * B2),I)) . J
by A23, A54, MATRIX_0:def 7
.=
(((width (A1 * B1)) |-> (0. K)) ^ (Line ((A2 * B2),I))) . (J + (width B1))
by A54, A57, A56, FINSEQ_1:def 7
.=
(Line ((block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))),(I + (len A1)))) . j
by A13, A21, A47, A46, Th23
.=
(block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (
i,
j)
by A27, MATRIX_0:def 7
;
verum end; end; end; hence
((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (
i,
j)
= (block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (
i,
j)
;
verum end; end; end; hence
(block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))) * (
i,
j)
= ((block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K)))) * (
i,
j)
;
verum end;
hence
(block_diagonal (<*A1,A2*>,(0. K))) * (block_diagonal (<*B1,B2*>,(0. K))) = block_diagonal ((<*A1,A2*> (#) <*B1,B2*>),(0. K))
by A8, A9, A20, A22, A18, A19, MATRIX_0:21; verum