reserve i,j,m,n,k for Nat,
  x,y for set,
  K for Field,
  a,L for Element of K;
reserve V1,V2 for finite-dimensional VectSp of K,
  W1,W2 for Subspace of V1,
  U1 ,U2 for Subspace of V2,
  b1 for OrdBasis of V1,
  B1 for FinSequence of V1,
  b2 for OrdBasis of V2,
  B2 for FinSequence of V2,
  bw1 for OrdBasis of W1,
  bw2 for OrdBasis of W2,
  Bu1 for FinSequence of U1,
  Bu2 for FinSequence of U2;

theorem Th31:
  for K be algebraic-closed Field for V be non trivial
  finite-dimensional VectSp of K, F be linear-transformation of V,V ex J be
non-empty (FinSequence_of_Jordan_block of K), b1 be OrdBasis of V st AutMt(F,b1
,b1) = block_diagonal(J,0.K) & for L be Scalar of K holds L is eigenvalue of F
  iff ex i st i in dom J & J.i = Jordan_block(L,len (J.i))
proof
  let K be algebraic-closed Field;
  defpred P[Nat] means for V be non trivial finite-dimensional VectSp of K st
  dim V <= $1 for F be linear-transformation of V,V ex J be non-empty (
  FinSequence_of_Jordan_block of K), b1 be OrdBasis of V st AutMt(F,b1,b1) =
block_diagonal(J,0.K) & for L be Scalar of K holds L is eigenvalue of F iff ex
  i st i in dom J & J.i = Jordan_block(L,len (J.i));
  let V be non trivial finite-dimensional VectSp of K, F be
  linear-transformation of V,V;
A1: for n st P[n] holds P[n+1]
  proof
    let n such that
A2: P[n];
    set n1=n+1;
    let V be non trivial finite-dimensional VectSp of K such that
A3: dim V <= n1;
    per cases by A3,NAT_1:8;
    suppose
      dim V<=n;
      hence thesis by A2;
    end;
    suppose
A4:   dim V=n1;
      let F be linear-transformation of V,V;
A5:   F is with_eigenvalues by VECTSP11:16;
      then consider v be Vector of V, L be Scalar of K such that
A6:   v <> 0.V & F.v = L*v by VECTSP11:def 1;
      set FL=F+(-L)*id V;
      L is eigenvalue of F by A5,A6,VECTSP11:def 2;
      then ker FL is non trivial by A5,VECTSP11:14;
      then
A7:   dim ker FL<>0 by MATRLIN2:42;
      consider m such that
A8:   UnionKers FL = ker (FL|^m) by VECTSP11:27;
      set IM = im (FL|^m);
      set KER = ker (FL|^m);
A9:   dim V=dim KER + dim IM by A8,VECTSP11:35,VECTSP_9:34;
A10:  IM is Linear_Compl of KER by A8,VECTSP11:35,VECTSP_5:37;
      reconsider FK=F|KER as linear-transformation of KER,KER by VECTSP11:29;
      consider Jk be non-empty FinSequence_of_Jordan_block of L,K, Bker be
      OrdBasis of KER such that
A11:  AutMt(FK,Bker,Bker) = block_diagonal(Jk,0.K) by Th30;
      FL|^1=FL by VECTSP11:19;
      then
A12:  ker FL is Subspace of KER by A8,VECTSP11:25;
A13:  len Jk<>0
      proof
        assume len Jk=0;
        then Len Jk = <*>NAT .= <*>REAL;
        then 0 = len block_diagonal(Jk,0.K) by MATRIXJ1:def 5,RVSUM_1:72
          .= len Bker by A11,MATRIX_0:def 2
          .= dim KER by MATRLIN2:21;
        hence thesis by A12,A7,VECTSP_9:25;
      end;
      reconsider FI=F|IM as linear-transformation of IM,IM by VECTSP11:33;
A14:  KER/\IM=(0).V by A8,VECTSP11:34;
A15:  V is_the_direct_sum_of KER,IM by A8,VECTSP11:35;
      then
A16:  KER+IM = (Omega).V by VECTSP_5:def 4;
      per cases;
      suppose
A17:    IM is trivial;
        set Bim = the OrdBasis of IM;
        0 = dim IM by A17,MATRLIN2:42
          .= len Bim by MATRLIN2:21
          .= len AutMt(FI,Bim,Bim) by MATRIX_0:def 2;
        then
A18:    AutMt(FI,Bim,Bim)={};
        Bker^Bim is OrdBasis of KER+IM by A14,MATRLIN2:26;
        then reconsider BB=Bker^Bim as OrdBasis of V by A16,MATRLIN2:4;
        take Jk,BB;
A19:    dim IM=0 implies dim IM=0;
        dim KER=0 implies dim KER=0;
        hence AutMt(F,BB,BB) = block_diagonal(<*AutMt(FK,Bker,Bker), AutMt(FI,
        Bim,Bim)*>,0.K) by A15,A19,MATRLIN2:27
          .= block_diagonal(<*AutMt(FK,Bker,Bker)*>,0.K) by A18,MATRIXJ1:40
          .= block_diagonal(Jk,0.K) by A11,MATRIXJ1:34;
        let L1 be Scalar of K;
        thus L1 is eigenvalue of F implies ex i st i in dom Jk & Jk.i =
        Jordan_block(L1,len (Jk.i))
        proof
          assume
A20:      L1 is eigenvalue of F;
A21:      L1 = L
          proof
            assume L<>L1;
            then
            FI is with_eigenvalues & L1 is eigenvalue of FI by A5,A8,A10,A20,
VECTSP11:39;
            then ex v1 be Vector of IM st v1<>0.IM & FI.v1 = L1*v1 by
VECTSP11:def 2;
            hence thesis by A17;
          end;
          take i=len Jk;
          i in Seg len Jk by A13,FINSEQ_1:3;
          hence i in dom Jk by FINSEQ_1:def 3;
          then ex k st Jk.i=Jordan_block(L,k) by Def3;
          hence thesis by A21,Def1;
        end;
        given i such that
A22:    i in dom Jk and
A23:    Jk.i = Jordan_block(L1,len (Jk.i));
        Jk.i <> {} by A22,FUNCT_1:def 9;
        then len (Jk.i) in Seg len (Jk.i) by FINSEQ_1:3;
        then [len (Jk.i),len (Jk.i)] in [:Seg len (Jk.i),Seg len (Jk.i):] by
ZFMISC_1:87;
        then
A24:    [len (Jk.i),len (Jk.i)] in Indices (Jk.i) by MATRIX_0:24;
        ex k st Jk.i=Jordan_block(L,k) by A22,Def3;
        then L = (Jk.i)*(len (Jk.i),len (Jk.i)) by A24,Def1
          .= L1 by A23,A24,Def1;
        hence thesis by A5,A6,VECTSP11:def 2;
      end;
      suppose
A25:    IM is non trivial;
        n1 <> dim IM & dim IM <= n1 by A4,A12,A7,A9,VECTSP_9:25;
        then dim IM <n1 by XXREAL_0:1;
        then dim IM <=n by NAT_1:13;
        then consider
        Ji be non-empty (FinSequence_of_Jordan_block of K), Bim be
        OrdBasis of IM such that
A26:    AutMt(FI,Bim,Bim) = block_diagonal(Ji,0.K) and
A27:    for L be Scalar of K holds L is eigenvalue of FI iff ex i st
        i in dom Ji & Ji.i = Jordan_block(L,len (Ji.i)) by A2,A25;
        Bker^Bim is OrdBasis of KER+IM by A14,MATRLIN2:26;
        then reconsider BB=Bker^Bim as OrdBasis of V by A16,MATRLIN2:4;
        set JJ=Jk^Ji;
A28:    now
          let x be object such that
A29:      x in dom JJ;
          reconsider i=x as Nat by A29;
          now
            per cases by A29,FINSEQ_1:25;
            suppose
A30:          i in dom Jk;
              then JJ.i=Jk.i by FINSEQ_1:def 7;
              hence JJ.i is non empty by A30,FUNCT_1:def 9;
            end;
            suppose
              ex j st j in dom Ji & i = len Jk +j;
              then consider j such that
A31:          j in dom Ji and
A32:          i=len Jk+j;
              JJ.i=Ji.j by A31,A32,FINSEQ_1:def 7;
              hence JJ.i is non empty by A31,FUNCT_1:def 9;
            end;
          end;
          hence JJ.x is non empty;
        end;
A33:    FI is with_eigenvalues by A25,VECTSP11:16;
A34:    dim IM=0 implies dim IM=0;
        reconsider JJ as non-empty FinSequence_of_Jordan_block of K by A28,
FUNCT_1:def 9;
        take JJ,BB;
        dim KER=0 implies dim KER=0;
        hence AutMt(F,BB,BB) = block_diagonal(<*block_diagonal(Jk,0.K),
        block_diagonal(Ji,0.K)*>,0.K) by A11,A15,A26,A34,MATRLIN2:27
          .= block_diagonal(<*block_diagonal(Jk,0.K)*>^Ji,0.K) by MATRIXJ1:36
          .= block_diagonal(JJ,0.K) by MATRIXJ1:35;
        let L1 be Scalar of K;
        thus L1 is eigenvalue of F implies ex i st i in dom JJ & JJ.i =
        Jordan_block(L1,len (JJ.i))
        proof
          assume
A35:      L1 is eigenvalue of F;
          per cases;
          suppose
A36:        L = L1;
            take i=len Jk;
A37:        dom Jk c= dom JJ by FINSEQ_1:26;
            i in Seg len Jk by A13,FINSEQ_1:3;
            then
A38:        i in dom Jk by FINSEQ_1:def 3;
            then (ex k st Jk.i = Jordan_block(L,k) )& JJ.i=Jk.i by Def3,
FINSEQ_1:def 7;
            hence thesis by A36,A38,A37,Def1;
          end;
          suppose
            L<>L1;
            then L1 is eigenvalue of FI by A5,A8,A10,A35,VECTSP11:39;
            then consider i such that
A39:        i in dom Ji and
A40:        Ji.i = Jordan_block(L1,len (Ji.i)) by A27;
            take ii=len Jk+i;
            JJ.ii=Ji.i by A39,FINSEQ_1:def 7;
            hence thesis by A39,A40,FINSEQ_1:28;
          end;
        end;
        given i such that
A41:    i in dom JJ and
A42:    JJ.i = Jordan_block(L1,len (JJ.i));
        per cases by A41,FINSEQ_1:25;
        suppose
A43:      i in dom Jk;
          then Jk.i <> {} by FUNCT_1:def 9;
          then len (Jk.i) in Seg len (Jk.i) by FINSEQ_1:3;
          then
          [len (Jk.i),len (Jk.i)] in [:Seg len (Jk.i),Seg len (Jk.i):] by
ZFMISC_1:87;
          then
A44:      [len (Jk.i),len (Jk.i)] in Indices (Jk.i) by MATRIX_0:24;
A45:      JJ.i = Jk.i by A43,FINSEQ_1:def 7;
          ex k st Jk.i = Jordan_block(L,k) by A43,Def3;
          then L = (Jk.i)*(len (Jk.i),len (Jk.i)) by A44,Def1
            .= L1 by A42,A45,A44,Def1;
          hence thesis by A5,A6,VECTSP11:def 2;
        end;
        suppose
          ex j st j in dom Ji & i = len Jk +j;
          then consider j such that
A46:      j in dom Ji and
A47:      i=len Jk+j;
          JJ.i=Ji.j by A46,A47,FINSEQ_1:def 7;
          then L1 is eigenvalue of FI by A27,A42,A46;
          then consider w be Vector of IM such that
A48:      w<>0.IM and
A49:      FI.w = L1*w by A33,VECTSP11:def 2;
A50:      0.IM = 0.V by VECTSP_4:11;
          reconsider W=w as Vector of V by VECTSP_4:10;
          L1*W = FI.w by A49,VECTSP_4:14
            .= F.W by FUNCT_1:49;
          hence thesis by A5,A48,A50,VECTSP11:def 2;
        end;
      end;
    end;
  end;
A51: P[0]
  proof
    let V be non trivial finite-dimensional VectSp of K;
    assume dim V <= 0;
    then dim V=0;
    hence thesis by MATRLIN2:42;
  end;
  for n holds P[n] from NAT_1:sch 2(A51,A1);
  then P[dim V];
  hence thesis;
end;
