reserve k,t,i,j,m,n for Nat,
  x,y,y1,y2 for object,
  D for non empty set;
reserve K for Field,
  V for VectSp of K,
  a for Element of K,
  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-dimensional VectSp of K,
  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 K,
  KL for Linear_Combination of V1;

theorem Th28:
  for M1 be Matrix of n,k,D, M2 be Matrix of m,k,D st width M1 =
  width M2 holds (M1^M2)@ = M1@ ^^ M2@
proof
  let M1 be Matrix of n,k,D;
  let M2 be Matrix of m,k,D such that
A1: width M1 = width M2;
A2: Seg len (M1@ ^^ M2@) = dom (M1@ ^^ M2@) by FINSEQ_1:def 3
    .= dom (M1@) /\ dom (M2@) by PRE_POLY:def 4
    .= dom (M1@) /\ Seg len (M2@) by FINSEQ_1:def 3
    .= Seg len (M1@) /\ Seg len (M2@) by FINSEQ_1:def 3
    .= Seg width M1 /\ Seg len (M2@) by MATRIX_0:def 6
    .= Seg width M1 /\ Seg width M2 by MATRIX_0:def 6
    .= Seg width M1 by A1;
A3: dom ((M1^M2)@) = Seg len ((M1^M2)@) by FINSEQ_1:def 3;
A4: len ((M1^M2)@) = width (M1^M2) by MATRIX_0:def 6
    .= width M1 by A1,Th24
    .= len (M1@ ^^ M2@) by A2,FINSEQ_1:6;
  now
    let i be Nat;
    assume
A5: i in dom ((M1^M2)@);
    then
A6: i in Seg width (M1^M2) by A3,MATRIX_0:def 6;
A7: i in dom (M1@ ^^ M2@) by A4,A3,A5,FINSEQ_1:def 3;
    then
A8: i in dom (M1@) /\ dom (M2@) by PRE_POLY:def 4;
    then
A9: i in dom (M2@) by XBOOLE_0:def 4;
A10: i in dom (M1@) by A8,XBOOLE_0:def 4;
    reconsider m1 = M1@.i,m2 = M2@.i as FinSequence;
    i in Seg len (M1@) /\ dom (M2@) by A8,FINSEQ_1:def 3;
    then i in Seg len (M1@) /\ Seg len (M2@) by FINSEQ_1:def 3;
    then i in Seg width M1 /\ Seg len (M2@) by MATRIX_0:def 6;
    then
A11: i in Seg width M1 /\ Seg width M2 by MATRIX_0:def 6;
    thus (M1^M2)@.i = Line((M1^M2)@,i) by A5,MATRIX_0:60
      .= Col(M1^M2,i) by A6,MATRIX_0:59
      .= Col(M1,i)^Col(M2,i) by A1,A11,Th26
      .= Line(M1@,i)^Col(M2,i) by A1,A11,MATRIX_0:59
      .= Line(M1@,i)^Line(M2@,i) by A1,A11,MATRIX_0:59
      .= Line(M1@,i)^m2 by A9,MATRIX_0:60
      .= m1^m2 by A10,MATRIX_0:60
      .= (M1@ ^^ M2@).i by A7,PRE_POLY:def 4;
  end;
  hence thesis by A4,FINSEQ_2:9;
end;
