 reserve x,y,z for object,
   i,j,k,l,n,m for Nat,
   D,E for non empty set;
 reserve M for Matrix of D;
 reserve L for Matrix of E;
 reserve k,t,i,j,m,n for Nat,
   D for non empty set;
 reserve V for free Z_Module;
 reserve a for Element of INT.Ring,
   W for Element of V;
 reserve KL1,KL2,KL3 for Linear_Combination of V,
   X for Subset of V;
 reserve V for finite-rank free Z_Module,
   W for Element of V;
 reserve KL1,KL2,KL3 for Linear_Combination of V,
   X for Subset of V;
 reserve s for FinSequence,
   V1,V2,V3 for finite-rank free Z_Module,
   f,f1,f2 for Function of V1,V2,
   g for Function of V2,V3,
   b1 for OrdBasis of V1,
   b2 for OrdBasis of V2,
   b3 for OrdBasis of V3,
   v1,v2 for Vector of V2,
   v,w for Element of V1;
 reserve p2,F for FinSequence of V1,
   p1,d for FinSequence of INT.Ring,
   KL for Linear_Combination of V1;

theorem ThMBF3:
  for V being finite-rank free Z_Module,
  b1, b2 being OrdBasis of V, f being bilinear-Form of V, V
  st 0 < rank V holds
  BilinearM(f, b2, b2) = (AutMt(id(V), b2, b1))
  * BilinearM(f, b1, b1) * (AutMt(id(V), b2, b1)@)
  proof
    let V be finite-rank free Z_Module,
    b1, b2 be OrdBasis of V, f be bilinear-Form of V, V;
    assume AS: 0 < rank V;
    set n = len b1;
    A1: len b1 = rank V by ThRank1;
    reconsider IM1 = AutMt(id(V), b2, b1) as Matrix of
      n,INT.Ring by LMThMBF3,A1;
    reconsider IM2 = AutMt(id(V), b2, b1) as Matrix of n,INT.Ring
      by LMThMBF3,A1;
    reconsider M1 = IM1@ as Matrix of n,INT.Ring;
    reconsider M2 = IM2 as Matrix of n,INT.Ring;
Y1: width IM1=n by MATRIX_0:24;
Yb: width BilinearM(f, b1, b1)=len b1 by MATRIX_0:24;
X1: width (AutMt(id(V), b2, b1))=len BilinearM(f, b1, b1) &
       width BilinearM(f, b1, b1)=len (AutMt(id(V), b2, b1)@)
         by MATRIX_0:def 2,Y1,Yb;
    thus BilinearM(f, b2, b2)
    = (AutMt(id(V), b2, b1)) * BilinearM(f, b1, b2) by ThMBF2,AS
    .= (AutMt(id(V), b2, b1))
    * (BilinearM(f, b1, b1) * (AutMt(id(V), b2, b1)@)) by ThMBF1,AS
    .= (AutMt(id(V), b2, b1)) * BilinearM(f, b1, b1) *
      ((AutMt(id(V), b2, b1)@)) by MATRIX_3:33,X1;
  end;
