 reserve X,Y for set,
         n,m,k,i for Nat,
         r for Real,
         R for Element of F_Real,
         K for Field,
         f,f1,f2,g1,g2 for FinSequence,
         rf,rf1,rf2 for real-valued FinSequence,
         cf,cf1,cf2 for complex-valued FinSequence,
         F for Function;
reserve f,f1,f2 for n-element real-valued FinSequence,
        p,p1,p2 for Point of TOP-REAL n,
        M,M1,M2 for Matrix of n,m,F_Real,
        A,B for Matrix of n,F_Real;

theorem Th41:
  Mx2Tran M is onto iff the_rank_of M = m
proof
  set MM=Mx2Tran M;
  set nV=n-VectSp_over F_Real,mV=m-VectSp_over F_Real;
  reconsider Bn=MX2FinS 1.(F_Real,n) as OrdBasis of nV by MATRLIN2:45;
  reconsider Bm=MX2FinS 1.(F_Real,m) as OrdBasis of mV by MATRLIN2:45;
  A1: [#]mV =REAL m by MATRIX13:102
   .=[#]TOP-REAL m by EUCLID:22;
A2: len Bm=m by Th19;
  len Bn=n by Th19;
  then reconsider M1=M as Matrix of len Bn,len Bm,F_Real by A2;
  set T=Mx2Tran(M1,Bn,Bm);
  A3: dom T=[#]nV by FUNCT_2:def 1;
  A4: [#]im T=T.:[#]nV by RANKNULL:def 2
   .=rng T by A3,RELAT_1:113;
  A5: MM=T by Th20;
  hereby assume MM is onto;
   then [#]im T=[#](Omega).mV by A5,A1,A4,FUNCT_2:def 3;
   then rank T=dim(Omega).mV by VECTSP_4:29
    .=m by MATRIX13:112;
   hence the_rank_of M=m by MATRLIN2:49;
  end;
  A6: dim mV=m by MATRIX13:112;
  assume the_rank_of M=m;
  then m=rank T by MATRLIN2:49
   .=dim im T;
  then (Omega).(im T)=(Omega).mV by A6,VECTSP_9:28;
  hence thesis by A5,A1,A4,FUNCT_2:def 3;
end;
