
theorem ThMBF2:
  for V1, V2 being finite-rank free Z_Module,
  b1 being OrdBasis of V1, b2 being OrdBasis of V2, b3 being OrdBasis of V1,
  f being bilinear-FrForm of V1, V2 st 0 < rank V1 holds
  BilinearM(f, b3, b2) =
  inttorealM(AutMt(id(V1), b3, b1)) * BilinearM(f, b1, b2)
  proof
    let V1, V2 be finite-rank free Z_Module,
    b1 be OrdBasis of V1, b2 be OrdBasis of V2, b3 be OrdBasis of V1,
    f be bilinear-FrForm of V1, V2;
    assume AS: 0 < rank V1;
    set I = inttorealM(AutMt(id(V1), b3, b1));
    set n = len b3;
    A1: len b1 = rank V1 by ZMATRLIN:49;
    A3: len b3 = rank V1 by ZMATRLIN:49;
    reconsider IM1 = AutMt(id(V1), b3, b1) as Matrix of n,INT.Ring
    by ZMATRLIN:50,A3;
    reconsider M1 = inttorealM(IM1) as Matrix of n,F_Real;
    set M2 = M1 * BilinearM(f, b1, b2);
    B1: len M1 = n & width M1 = n
    & Indices M1 = [:Seg n, Seg n:] by MATRIX_0:24;
    0 < len b1 by AS,ZMATRLIN:49; then
    B3: len BilinearM(f, b1, b2) = len b1
    & width BilinearM(f, b1, b2) = len b2 by MATRIX_0:23;
    then
    X0:len M2 = n & width M2 = len b2 by A1,A3,B1,MATRIX_3:def 4;
    then reconsider M2 as Matrix of n,len b2, F_Real by A3,AS,MATRIX_0:20;
    set FM1 = M1;
    set FBM = BilinearM(f, b1, b2);
    X1: len BilinearM(f, b3, b2) = len M2
    & width BilinearM(f, b3, b2) = width M2 by AS,A3,X0,MATRIX_0:23;
    for i, j being Nat st [i,j] in Indices BilinearM(f, b3, b2)
    holds BilinearM(f, b3, b2)*(i,j) = M2*(i,j)
    proof
      let i, j be Nat;
      assume [i,j] in Indices BilinearM(f, b3, b2);
      then B6: [i,j] in [:Seg len b3,Seg len b2 :] by AS,A3,MATRIX_0:23;
      then i in Seg len b3 & j in Seg len b2 by ZFMISC_1:87;
      then B8: i in dom b3 & j in dom b2 by FINSEQ_1:def 3;
      then B9: (BilinearM(f, b3, b2))*(i,j) = f.(b3/.i, b2/.j) by defBilinearM;
      [i,j] in Indices M2 by AS,A3,B6,MATRIX_0:23;
      then B11: M2*(i,j) = Line(FM1,i) "*" Col(FBM,j)
      by A1,A3,B1,B3,MATRIX_3:def 4;
      B12: len Line(FM1,i) = len b3 by B1,MATRIX_0:def 7;
      B14: len Col(FBM,j) = len b3 by B3,A1,A3,MATRIX_0:def 8;
      B13:
      now
        let k be Nat;
        assume B131: k in Seg len b1;
        then B132: k in dom FBM by B3,FINSEQ_1:def 3;
        B81: k in dom b1 by FINSEQ_1:def 3,B131;
        thus Col(FBM,j).k = FBM*(k,j) by B132,MATRIX_0:def 8
        .= f.(b1/.k, b2/.j) by B8,B81,defBilinearM;
      end;
      B135: i in Seg n by B6,ZFMISC_1:87;
      then B135A: i in dom M1 by B1,FINSEQ_1:def 3;
      B136: i in dom b3 by B135,FINSEQ_1:def 3;
      B15:
      now
        let k be Nat;
        assume BX131: 1 <= k & k <= len Line(FM1,i);
        then B131: k in Seg len b1 by B12,A1,A3;
        XX1: [i,k] in Indices M1 by A1,A3,B1,B131,B135,ZFMISC_1:87;
        X0: Line(FM1,i).k = FM1*(i,k)
        by B1,B12,BX131,FINSEQ_1:1,MATRIX_0:def 7
        .= (AutMt(id(V1),b3,b1))*(i,k) by XX1,ZMATRLIN:1;
        [i,k] in Indices IM1 by A1,A3,B1,B131,B135,ZFMISC_1:87;
        then XX3: ex p being FinSequence of INT.Ring
        st p = IM1.i & IM1*(i,k) = p.k by MATRIX_0:def 5;
        IM1.i = AutMt(id(V1), b3, b1)/.i by B135A,PARTFUN1:def 6
        .= (id(V1)).(b3/.i) |-- b1 by B136,ZMATRLIN:def 8
        .=  (b3/.i) |-- b1;
        hence Line(FM1,i).k = ((b3/.i) |-- b1).k by X0,XX3;
      end;
      len Line(FM1,i) = len ((b3/.i) |-- b1) by A1,A3,B12,ZMATRLIN:def 7;
      hence thesis by A1,A3,B9,B11,B12,B13,B14,B15,LMThMBF1Y,FINSEQ_1:def 18;
    end;
    hence thesis by X1,ZMATRLIN:4;
  end;
