reserve x,y for object,X,Y for set,
  D for non empty set,
  i,j,k,l,m,n,m9,n9 for Nat,
  i0,j0,n0,m0 for non zero Nat,
  K for Field,
  a,b for Element of K,
  p for FinSequence of K,
  M for Matrix of n,K;
reserve A for (Matrix of D),
  A9 for Matrix of n9,m9,D,
  M9 for Matrix of n9, m9,K,
  nt,nt1,nt2 for Element of n-tuples_on NAT,
  mt,mt1 for Element of m -tuples_on NAT,
  M for Matrix of K;
reserve P,P1,P2,Q,Q1,Q2 for without_zero finite Subset of NAT;

theorem
  for M be Matrix of n,m,K,F be Permutation of Seg n holds the_rank_of M
  = the_rank_of (M*F)
proof
  let M be Matrix of n,m,K,F be Permutation of Seg n;
  set P=Seg len M;
  set Q=Seg width M;
  set SP=Sgm P;
  set SQ=Sgm Q;
A1: card P=len M by FINSEQ_1:57;
A2: len M=n by MATRIX_0:def 2;
  then reconsider F9=F as Permutation of Seg card P by A1;
A3: rng F=Seg n by FUNCT_2:def 3;
A4: dom F=Seg n by FUNCT_2:52;
A5: dom SP=Seg card P by FINSEQ_3:40;
  then
A6: dom (SP*F)=dom F by A2,A1,A3,RELAT_1:27;
  then reconsider SPF=SP*F as FinSequence by A4,FINSEQ_1:def 2;
A7: rng (SP*F)=rng SP by A2,A1,A5,A3,RELAT_1:28;
  then reconsider SPF as FinSequence of NAT by FINSEQ_1:def 4;
  len SPF=card P by A2,A1,A6,A4,FINSEQ_1:def 3;
  then reconsider SPF as Element of (card P)-tuples_on NAT by FINSEQ_2:92;
A8: Indices M=[:Seg len M,Seg width M:] by FINSEQ_1:def 3;
A9: rng SQ=Q by FINSEQ_1:def 14;
A10: rng SP=P by FINSEQ_1:def 14;
  Segm(M,SPF,SQ) = Segm(M,P,Q) * F9 by Th33
    .= M*F by Th46;
  hence thesis by A7,A8,A10,A9,Th82;
end;
