now per cases
( width M > 0 or width M = 0 )
by NAT_1:3;
suppose A1:
width M > 0
;
:: thesis: ex b1 being Matrix of D st
( len b1 = width M & ( for i, j being Nat holds
( [i,j] in Indices b1 iff [j,i] in Indices M ) ) & ( for i, j being Nat st [j,i] in Indices M holds
b1 * i,j = M * j,i ) )A2:
Seg (len M) = dom M
by FINSEQ_1:def 3;
deffunc H1(
Nat,
Nat)
-> Element of
D =
M * $2,$1;
consider M1 being
Matrix of
width M,
len M,
D such that A3:
for
i,
j being
Nat st
[i,j] in Indices M1 holds
M1 * i,
j = H1(
i,
j)
from MATRIX_1:sch 1();
A4:
Indices M1 = [:(Seg (width M)),(dom M):]
by A1, A2, Th24;
reconsider M' =
M1 as
Matrix of
D ;
thus
ex
b1 being
Matrix of
D st
(
len b1 = width M & ( for
i,
j being
Nat holds
(
[i,j] in Indices b1 iff
[j,i] in Indices M ) ) & ( for
i,
j being
Nat st
[j,i] in Indices M holds
b1 * i,
j = M * j,
i ) )
:: thesis: verumproof
take
M'
;
:: thesis: ( len M' = width M & ( for i, j being Nat holds
( [i,j] in Indices M' iff [j,i] in Indices M ) ) & ( for i, j being Nat st [j,i] in Indices M holds
M' * i,j = M * j,i ) )
thus
len M' = width M
by A1, Th24;
:: thesis: ( ( for i, j being Nat holds
( [i,j] in Indices M' iff [j,i] in Indices M ) ) & ( for i, j being Nat st [j,i] in Indices M holds
M' * i,j = M * j,i ) )
thus
for
i,
j being
Nat holds
(
[i,j] in Indices M' iff
[j,i] in Indices M )
by A4, ZFMISC_1:107;
:: thesis: for i, j being Nat st [j,i] in Indices M holds
M' * i,j = M * j,i
let i,
j be
Nat;
:: thesis: ( [j,i] in Indices M implies M' * i,j = M * j,i )
assume
[j,i] in Indices M
;
:: thesis: M' * i,j = M * j,i
then
[i,j] in Indices M'
by A4, ZFMISC_1:107;
hence
M' * i,
j = M * j,
i
by A3;
:: thesis: verum
end; end; suppose A5:
width M = 0
;
:: thesis: ex b1 being Matrix of D st
( len b1 = width M & ( for i, j being Nat holds
( [i,j] in Indices b1 iff [j,i] in Indices M ) ) & ( for i, j being Nat st [j,i] in Indices M holds
b1 * i,j = M * j,i ) )reconsider M1 =
{} as
Matrix of
D by Th13;
thus
ex
b1 being
Matrix of
D st
(
len b1 = width M & ( for
i,
j being
Nat holds
(
[i,j] in Indices b1 iff
[j,i] in Indices M ) ) & ( for
i,
j being
Nat st
[j,i] in Indices M holds
b1 * i,
j = M * j,
i ) )
:: thesis: verumproof
take
M1
;
:: thesis: ( len M1 = width M & ( for i, j being Nat holds
( [i,j] in Indices M1 iff [j,i] in Indices M ) ) & ( for i, j being Nat st [j,i] in Indices M holds
M1 * i,j = M * j,i ) )
Indices M1 = [:{} ,(Seg (width M1)):]
;
hence
(
len M1 = width M & ( for
i,
j being
Nat holds
(
[i,j] in Indices M1 iff
[j,i] in Indices M ) ) & ( for
i,
j being
Nat st
[j,i] in Indices M holds
M1 * i,
j = M * j,
i ) )
by A5, FINSEQ_1:4, ZFMISC_1:113;
:: thesis: verum
end; end; end; end;
hence
ex b1 being Matrix of D st
( len b1 = width M & ( for i, j being Nat holds
( [i,j] in Indices b1 iff [j,i] in Indices M ) ) & ( for i, j being Nat st [j,i] in Indices M holds
b1 * i,j = M * j,i ) )
; :: thesis: verum