defpred S1[ object , object , object ] means ( P1[$1,$2,$3] & $3 in F1() );
A2: for x, y being object st x in Seg F2() & y in Seg F3() holds
ex z being object st
( z in F1() & S1[x,y,z] )
proof
let x, y be object ; :: thesis: ( x in Seg F2() & y in Seg F3() implies ex z being object st
( z in F1() & S1[x,y,z] ) )

assume that
A3: x in Seg F2() and
A4: y in Seg F3() ; :: thesis: ex z being object st
( z in F1() & S1[x,y,z] )

reconsider y9 = y as Nat by A4;
reconsider x9 = x as Nat by A3;
[x9,y9] in [:(Seg F2()),(Seg F3()):] by A3, A4, ZFMISC_1:87;
then consider z9 being Element of F1() such that
A5: P1[x9,y9,z9] by A1;
take z9 ; :: thesis: ( z9 in F1() & S1[x,y,z9] )
thus ( z9 in F1() & S1[x,y,z9] ) by A5; :: thesis: verum
end;
consider f being Function of [:(Seg F2()),(Seg F3()):],F1() such that
A6: for x, y being object st x in Seg F2() & y in Seg F3() holds
S1[x,y,f . (x,y)] from BINOP_1:sch 1(A2);
defpred S2[ set , object ] means ex p being FinSequence st
( $2 = p & len p = F3() & ( for i being Nat st i in Seg F3() holds
p . i = f . ($1,i) ) );
A7: for k being Nat st k in Seg F2() holds
ex y being object st S2[k,y]
proof
let k be Nat; :: thesis: ( k in Seg F2() implies ex y being object st S2[k,y] )
assume k in Seg F2() ; :: thesis: ex y being object st S2[k,y]
deffunc H1( Nat) -> set = f . [k,$1];
consider p being FinSequence such that
A8: ( len p = F3() & ( for i being Nat st i in dom p holds
p . i = H1(i) ) ) from FINSEQ_1:sch 2();
take p ; :: thesis: S2[k,p]
take p ; :: thesis: ( p = p & len p = F3() & ( for i being Nat st i in Seg F3() holds
p . i = f . (k,i) ) )

dom p = Seg F3() by A8, FINSEQ_1:def 3;
hence ( p = p & len p = F3() & ( for i being Nat st i in Seg F3() holds
p . i = f . (k,i) ) ) by A8; :: thesis: verum
end;
consider M being FinSequence such that
A9: dom M = Seg F2() and
A10: for k being Nat st k in Seg F2() holds
S2[k,M . k] from FINSEQ_1:sch 1(A7);
F2() in NAT by ORDINAL1:def 12;
then A11: len M = F2() by A9, FINSEQ_1:def 3;
rng M c= F1() *
proof
let x be object ; :: according to TARSKI:def 3 :: thesis: ( not x in rng M or x in F1() * )
assume x in rng M ; :: thesis: x in F1() *
then consider i being Nat such that
A12: i in Seg F2() and
A13: M . i = x by A9, FINSEQ_2:10;
consider p being FinSequence such that
A14: M . i = p and
A15: len p = F3() and
A16: for j being Nat st j in Seg F3() holds
p . j = f . (i,j) by A10, A12;
rng p c= F1()
proof
let z be object ; :: according to TARSKI:def 3 :: thesis: ( not z in rng p or z in F1() )
assume z in rng p ; :: thesis: z in F1()
then consider k being Nat such that
A17: k in dom p and
A18: p . k = z by FINSEQ_2:10;
A19: k in Seg (len p) by A17, FINSEQ_1:def 3;
then A20: [i,k] in [:(Seg F2()),(Seg F3()):] by A12, A15, ZFMISC_1:87;
z = f . (i,k) by A15, A16, A18, A19;
hence z in F1() by A20, FUNCT_2:5; :: thesis: verum
end;
then p is FinSequence of F1() by FINSEQ_1:def 4;
hence x in F1() * by A13, A14, FINSEQ_1:def 11; :: thesis: verum
end;
then reconsider M = M as FinSequence of F1() * by FINSEQ_1:def 4;
ex n being Nat st
for x being object st x in rng M holds
ex p being FinSequence of F1() st
( x = p & len p = n )
proof
take F3() ; :: thesis: for x being object st x in rng M holds
ex p being FinSequence of F1() st
( x = p & len p = F3() )

let x be object ; :: thesis: ( x in rng M implies ex p being FinSequence of F1() st
( x = p & len p = F3() ) )

assume x in rng M ; :: thesis: ex p being FinSequence of F1() st
( x = p & len p = F3() )

then consider i being Nat such that
A21: i in dom M and
A22: M . i = x by FINSEQ_2:10;
consider p being FinSequence such that
A23: x = p and
A24: len p = F3() and
A25: for j being Nat st j in Seg F3() holds
p . j = f . (i,j) by A9, A10, A21, A22;
rng p c= F1()
proof
let z be object ; :: according to TARSKI:def 3 :: thesis: ( not z in rng p or z in F1() )
assume z in rng p ; :: thesis: z in F1()
then consider k being Nat such that
A26: k in dom p and
A27: p . k = z by FINSEQ_2:10;
A28: k in Seg (len p) by A26, FINSEQ_1:def 3;
then A29: [i,k] in [:(Seg F2()),(Seg F3()):] by A9, A21, A24, ZFMISC_1:87;
z = f . (i,k) by A24, A25, A27, A28;
hence z in F1() by A29, FUNCT_2:5; :: thesis: verum
end;
then reconsider p = p as FinSequence of F1() by FINSEQ_1:def 4;
take p ; :: thesis: ( x = p & len p = F3() )
thus ( x = p & len p = F3() ) by A23, A24; :: thesis: verum
end;
then reconsider M = M as Matrix of F1() by Th9;
for p being FinSequence of F1() st p in rng M holds
len p = F3()
proof
let p be FinSequence of F1(); :: thesis: ( p in rng M implies len p = F3() )
assume p in rng M ; :: thesis: len p = F3()
then consider i being Nat such that
A30: ( i in dom M & M . i = p ) by FINSEQ_2:10;
S2[i,p] by A9, A10, A30;
hence len p = F3() ; :: thesis: verum
end;
then reconsider M = M as Matrix of F2(),F3(),F1() by A11, Def2;
take M ; :: thesis: for i, j being Nat st [i,j] in Indices M holds
P1[i,j,M * (i,j)]

let i, j be Nat; :: thesis: ( [i,j] in Indices M implies P1[i,j,M * (i,j)] )
assume A31: [i,j] in Indices M ; :: thesis: P1[i,j,M * (i,j)]
then F2() <> 0 by A9, ZFMISC_1:87;
then A32: F2() > 0 ;
j in Seg (width M) by A31, ZFMISC_1:87;
then A33: j in Seg F3() by A11, A32, Th20;
A34: ex p being FinSequence of F1() st
( p = M . i & M * (i,j) = p . j ) by A31, Def5;
A35: i in Seg F2() by A9, A31, ZFMISC_1:87;
then ex q being FinSequence st
( M . i = q & len q = F3() & ( for j being Nat st j in Seg F3() holds
q . j = f . (i,j) ) ) by A10;
then f . (i,j) = M * (i,j) by A34, A33;
hence P1[i,j,M * (i,j)] by A6, A35, A33; :: thesis: verum