reserve D for non empty set,
  i,j,k,l for Nat,
  n for Nat,
  x for set,
  a,b,c,r,r1,r2 for Real,
  p,q for FinSequence of REAL,
  MR,MR1 for Matrix of REAL;

theorem Th26:
  len p = len MR implies (MR1 = (Vec2DiagMx p) * MR iff len MR1 =
len p & width MR1 = width MR & for i,j st [i,j] in Indices MR1 holds MR1*(i,j)
  = p.i * (MR*(i,j)))
proof
  set MM = Vec2DiagMx p;
A1: len MM = len p by Th25;
A2: width MM = len p by Th25;
  assume
A3: len p = len MR;
  then
A4: dom p = dom MR by FINSEQ_3:29;
  hereby
    assume
A5: MR1 = MM * MR;
    hence len MR1 = len p & width MR1 = width MR by A3,A1,A2,MATRPROB:39;
A6: len MR1 = len MM by A3,A2,A5,MATRPROB:39;
    then
A7: dom MR1 = dom MM by FINSEQ_3:29;
A8: dom MR1 = dom p by A1,A6,FINSEQ_3:29;
    thus for i,j st [i,j] in Indices MR1 holds MR1*(i,j) = p.i *(MR*(i,j))
    proof
      let i,j such that
A9:   [i,j] in Indices MR1;
      i in Seg len MR1 by A9,MATRPROB:12;
      then
A10:  i in dom MR1 by FINSEQ_1:def 3;
      then
A11:  Line(MM,i).i=p.i by A7,Th25;
      set q = mlt(Line(MM,i),Col(MR,j));
A12:  len Line(MM,i) = width MM by MATRIX_0:def 7;
A13:  len Col(MR,j) = len MR by MATRIX_0:def 8;
A14:  Line(MM,i) has_onlyone_value_in i by A7,A10,Th25;
      then
A15:  q.i = (Line(MM,i).i) * (Col(MR,j).i ) by A3,A2,A12,A13,Th12;
      thus MR1*(i,j) = Line(MM,i) "*" Col(MR,j) by A3,A2,A5,A9,MATRPROB:39
        .= Sum q by RVSUM_1:def 16
        .= p.i * (Col(MR,j).i) by A3,A2,A14,A11,A12,A13,A15,Th12,Th13
        .= p.i*(MR*(i,j)) by A4,A8,A10,MATRIX_0:def 8;
    end;
  end;
  assume that
A16: len MR1 = len p and
A17: width MR1 = width MR and
A18: for i,j st [i,j] in Indices MR1 holds MR1*(i,j) = p.i*(MR*(i,j));
A19: dom MR1 = dom MM by A1,A16,FINSEQ_3:29;
A20: dom MR = dom MR1 by A3,A16,FINSEQ_3:29;
  for i,j st [i,j] in Indices MR1 holds MR1*(i,j) = Line(MM,i) "*" Col(MR ,j)
  proof
    let i,j such that
A21: [i,j] in Indices MR1;
    i in Seg len MR1 by A21,MATRPROB:12;
    then
A22: i in dom MR1 by FINSEQ_1:def 3;
    then
A23: Line(MM,i).i=p.i by A19,Th25;
    set q = mlt(Line(MM,i),Col(MR,j));
A24: len Line(MM,i) = width MM by MATRIX_0:def 7;
A25: len Col(MR,j) = len MR by MATRIX_0:def 8;
A26: Line(MM,i) has_onlyone_value_in i by A19,A22,Th25;
    then
A27: q.i = (Line(MM,i).i) * (Col(MR,j).i) by A3,A2,A24,A25,Th12;
    thus MR1*(i,j) = p.i*(MR*(i,j)) by A18,A21
      .= p.i * (Col(MR,j).i) by A20,A22,MATRIX_0:def 8
      .= Sum q by A3,A2,A26,A23,A24,A25,A27,Th12,Th13
      .= Line(MM,i) "*" Col(MR,j) by RVSUM_1:def 16;
  end;
  hence thesis by A3,A1,A2,A16,A17,MATRPROB:39;
end;
