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;
