
theorem Th41:
  for L being Field, p being Polynomial of L, m being Element of
NAT st m > 0 & len p <= m for x being Element of L, i being Element of NAT st i
  < m holds DFT(p,x,m).i = VM(x,m) * mConv(p,m)*(i+1,1)
proof
  let L be Field;
  let p be Polynomial of L;
  let m be Element of NAT;
  assume that
A1: m > 0 and
A2: len p <= m;
  let x be Element of L;
  set v = VM(x,m);
  for i being Element of NAT st i < m holds (DFT(p, x, m)).i = (v * mConv(
  p, m))*(i+1,1)
  proof
A3: for k being Nat st k < m holds Col(mConv(p,m),1).(k+1) = p.k
    proof
      let k be Nat;
      assume
A4:   k < m;
      then 1 <= k+1 & k+1 <= m by NAT_1:11,13;
      then
A5:   (k+1) in Seg m;
      len (mConv(p, m)) = m by A1,Th28;
      then (k+1) in dom (mConv(p, m)) by A5,FINSEQ_1:def 3;
      then Col(mConv(p, m), 1).(k+1) = (mConv(p, m))*(k+1,1) by MATRIX_0:def 8;
      hence thesis by A4,Th28;
    end;
A6: width v = m by MATRIX_0:24
      .= len (mConv(p, m)) by A1,Th28;
    then
A7: len (v * mConv(p, m)) = len v by MATRIX_3:def 4
      .= m by MATRIX_0:24;
    width (v * mConv(p, m)) = width (mConv(p, m)) by A6,MATRIX_3:def 4
      .= 1 by A1,Th28;
    then v * mConv(p, m) is Matrix of m,1,L by A1,A7,MATRIX_0:20;
    then
A8: Indices (v * mConv(p, m)) = [:Seg m, Seg width(v * mConv(p, m)):] by
MATRIX_0:25;
A9: len mConv(p,m) = m by A1,Th28
      .= width v by MATRIX_0:24;
    width (v * mConv(p, m)) = width (mConv(p, m)) by A6,MATRIX_3:def 4
      .= 1 by A1,Th28;
    then
A10: 1 in Seg width(v * mConv(p, m));
    let i be Element of NAT;
    assume
A11: i < m;
A12: for k being Nat st k < m holds Line(v,i+1).(k+1) = v*(i+1,k+1)
    proof
      let k be Nat;
      assume k < m;
      then 1 <= k+1 & k+1 <= m by NAT_1:11,13;
      then (k+1) in Seg m;
      then (k+1) in Seg width v by MATRIX_0:24;
      hence thesis by MATRIX_0:def 7;
    end;
A13: for k being Nat st k < m holds Line(v,i+1).(k+1) = pow(x,i*k)
    proof
      let k be Nat;
      assume
A14:  k < m;
      then
A15:  1 <= k+1 & k+1 <= m by NAT_1:11,13;
A16:  1 <= i+1 & i+1 <= m by A11,NAT_1:11,13;
      Line(v, i+1).(k+1) = v*(i+1,k+1) by A12,A14
        .= pow(x, ((i+1)-1)*((k+1)-1)) by A16,A15,Def7
        .= pow(x, i*k);
      hence thesis;
    end;
A17: for k being Nat, a,b,c being Element of L st a = Line(v, i+1).(k+1) &
b = Col(mConv(p, m), 1).(k+1) & c = p.k holds k < m implies a*b = pow(x, i*k) *
    c
    proof
      let k be Nat;
      let a,b,c be Element of L;
      assume that
A18:  a = Line(v, i+1).(k+1) and
A19:  b = Col(mConv(p,m),1).(k+1) & c = p.k and
A20:  k < m;
      a = pow(x, i*k) by A13,A18,A20;
      hence thesis by A3,A19,A20;
    end;
A21: for k being Element of NAT st 1 <= k & k <= m holds (mlt(Line(v, i+1)
    ,Col(mConv(p, m), 1))).k = p.(k-'1) * (power L).(x|^i,k-'1)
    proof
A22:  len mConv(p, m) = m by A1,Th28;
      let k be Element of NAT;
      assume that
A23:  1 <= k and
A24:  k <= m;
      k in Seg m by A23,A24;
      then k in dom mConv(p, m) by A22,FINSEQ_1:def 3;
      then
A25:  Col(mConv(p, m), 1).k = (mConv(p, m))*(k,1) by MATRIX_0:def 8;
      0 < k by A23;
      then dom p = NAT & k-1 is Element of NAT by FUNCT_2:def 1,NAT_1:20;
      then
A26:  p.(k-1) = p/.(k-1) by PARTFUN1:def 6;
      Seg width v = Seg m by MATRIX_0:24;
      then k in Seg width v by A23,A24;
      then Line(v, i+1).k = v*(i+1,k) by MATRIX_0:def 7;
      then reconsider
      a = Line(v, i+1).k, b = Col(mConv(p, m), 1).k, c = p.(k-1) as
      Element of L by A25,A26;
      len Line(v, i+1) = width v by MATRIX_0:def 7
        .= m by MATRIX_0:24
        .= len mConv(p, m) by A1,Th28
        .= len (Col(mConv(p, m), 1)) by MATRIX_0:def 8;
      then
      len (mlt(Line(v, i+1),Col(mConv(p, m), 1))) = len (Line(v, i+1)) by
MATRIX_3:6
        .= width v by MATRIX_0:def 7
        .= m by MATRIX_0:24;
      then dom (mlt(Line(v, i+1),Col(mConv(p, m), 1))) = Seg m by
FINSEQ_1:def 3;
      then k in dom (mlt(Line(v, i+1),Col(mConv(p, m), 1))) by A23,A24;
      then
A27:  (mlt(Line(v, i+1),Col(mConv(p, m), 1))).k = a * b by FVSUM_1:60;
A28:  a*b = pow(x, i*(k-1)) * c
      proof
A29:    0 < k by A23;
        then
A30:    k-1 is Nat by NAT_1:20;
        k-1 <= m-1 & m-1 is Nat by A1,A24,NAT_1:20,XREAL_1:9;
        then
A31:    k-1 < (m-1)+1 by A30,NAT_1:13;
        reconsider l=k-1 as Nat by A29,NAT_1:20;
        a = Line(v, i+1).(l+1);
        hence thesis by A17,A31;
      end;
      reconsider d = pow(x, i*(k-1)) as Element of L;
A32:  k - 1 >= 0 by A23,NAT_1:20;
      d = pow(x|^i, k-1) by A23,Th27
        .= (power L).(x|^i, k-1) by A32,Def2
        .= (power L).(x|^i,k-'1) by A32,XREAL_0:def 2;
      hence thesis by A28,A27,A32,XREAL_0:def 2;
    end;
A33: Sum(mlt(Line(v, i+1),Col(mConv(p, m), 1))) = eval(p, x|^i)
    proof
A34:  for k being Nat st len p < k & k <= m holds (mlt(Line(v, i+1),Col(
      mConv(p, m), 1))).k = 0.L
      proof
A35:    1 <= 1 + len p by NAT_1:11;
        let k be Nat;
        assume that
A36:    len p < k and
A37:    k <= m;
A38:    len p < (k - 1) + 1 by A36;
        len p + 1 <= k by A36,NAT_1:13;
        then
A39:    1 <= k by A35,XXREAL_0:2;
        then 1 - 1 <= k - 1 by XREAL_1:9;
        then k-'1 = k - 1 by XREAL_0:def 2;
        then
A40:    k-'1 >= len p by A38,NAT_1:13;
        k in NAT by ORDINAL1:def 12;
        then
        (mlt(Line(v, i+1),Col(mConv(p, m), 1))).k = p.(k-'1) * (power L).
        (x|^i,k-'1) by A21,A37,A39
          .= 0.L * ((power L).(x|^i,k-'1)) by A40,ALGSEQ_1:8
          .= 0.L;
        hence thesis;
      end;
      len (Line(v, i+1)) = width v by MATRIX_0:def 7
        .= m by MATRIX_0:24
        .= len (mConv(p, m)) by A1,Th28
        .= len (Col(mConv(p, m), 1)) by MATRIX_0:def 8;
      then
A41:  len (mlt(Line(v, i+1),Col(mConv(p, m), 1))) = len (Line(v, i+1)) by
MATRIX_3:6
        .= width v by MATRIX_0:def 7
        .= m by MATRIX_0:24;
      len p - len p <= m - len p by A2,XREAL_1:9;
      then reconsider lengthG = m - len p as Element of NAT by INT_1:3;
      consider F being FinSequence of L such that
A42:  eval(p, x|^i) = Sum F and
A43:  len F = len p and
A44:  for k being Element of NAT st k in dom F holds F.k = p.(k-'1) *
      ( power L).(x|^i,k-'1) by POLYNOM4:def 2;
      ex G being FinSequence of L st (dom G = Seg lengthG & for k being
      Nat st k in Seg lengthG holds G.k = 0.L)
      proof
        defpred P[set,set] means $2 = 0.L;
A45:    for n being Nat st n in Seg lengthG holds ex x being Element of L
        st P[n,x];
        ex G be FinSequence of L st dom G = Seg lengthG & for nn be Nat
        st nn in Seg lengthG holds P[nn,G.nn] from FINSEQ_1:sch 5(A45);
        hence thesis;
      end;
      then consider G being FinSequence of L such that
A46:  dom G = Seg lengthG and
A47:  for k being Nat st k in Seg lengthG holds G.k = 0.L;
A48:  for k being Element of NAT st k in Seg lengthG holds G.k = 0.L by A47;
A49:  len G = m - len p by A46,FINSEQ_1:def 3;
      then len F + len G = m by A43;
      then dom (F ^ G) = Seg m by FINSEQ_1:def 7;
      then
A50:  dom (mlt(Line(v, i+1),Col(mConv(p, m), 1))) = dom (F ^ G) by A41,
FINSEQ_1:def 3;
A51:  for k being Element of NAT st 1 <= k & k <= len p holds F.k = (mlt(
      Line(v, i+1),Col(mConv(p, m), 1))).k
      proof
        let k be Element of NAT;
        assume that
A52:    1 <= k and
A53:    k <= len p;
A54:    k <= m by A2,A53,XXREAL_0:2;
        dom F = Seg len p by A43,FINSEQ_1:def 3;
        then k in dom F by A52,A53;
        then F.k = p.(k-'1) * (power L).(x|^i,k-'1) by A44
          .= (mlt(Line(v, i+1),Col(mConv(p, m), 1))).k by A21,A52,A54;
        hence thesis;
      end;
      for k being Nat st k in dom (mlt(Line(v, i+1),Col(mConv(p, m), 1))
      ) holds (mlt(Line(v, i+1),Col(mConv(p, m), 1))).k = (F ^ G).k
      proof
        let k be Nat;
        len F + len G = m by A43,A49;
        then
A55:    dom (F ^ G) = Seg m by FINSEQ_1:def 7;
        assume
A56:    k in dom mlt(Line(v,i+1),Col(mConv(p,m),1));
        per cases by A50,A56,A55,FINSEQ_1:1;
        suppose
A57:      1 <= k & k <= len F;
          then k in dom F by FINSEQ_3:25;
          then (F ^ G).k = F.k by FINSEQ_1:def 7
            .= (mlt(Line(v,i+1),Col(mConv(p,m),1))).k by A43,A51,A56,A57;
          hence thesis;
        end;
        suppose
A58:      len F < k & k <= m;
          then len F + 1 <= k by NAT_1:13;
          then (len F + 1) - len F <= k - len F by XREAL_1:9;
          then reconsider l = k - len F as Element of NAT by INT_1:3;
          len p - m <= m - m by A2,XREAL_1:9;
          then -(len p - m) >= 0;
          then reconsider lengthG = m - len p as Element of NAT by INT_1:3;
          len F + 1 <= k by A58,NAT_1:13;
          then
A59:      (len F + 1) - len F <= k - len F by XREAL_1:9;
          l <= lengthG by A43,A58,XREAL_1:9;
          then
A60:      l in dom G by A46,A59;
          len F + len G = m by A43,A49;
          then dom (F ^ G) = Seg m by FINSEQ_1:def 7;
          then len (F ^ G) = m by FINSEQ_1:def 3;
          then (F ^ G).k = G.(k - len F) by A58,FINSEQ_1:24
            .= 0.L by A46,A47,A60
            .= (mlt(Line(v, i+1),Col(mConv(p,m), 1))).k by A43,A34,A58;
          hence thesis;
        end;
      end;
      then mlt(Line(v, i+1),Col(mConv(p, m), 1)) = F ^ G by A50,FINSEQ_1:13;
      then Sum(mlt(Line(v, i+1),Col(mConv(p, m), 1))) = Sum(F) + Sum(G) by
RLVECT_1:41
        .= Sum(F) + 0.L by A46,A48,POLYNOM3:1
        .= eval(p, x|^i) by A42,RLVECT_1:def 4;
      hence thesis;
    end;
A61: Line(v, i+1) "*" Col(mConv(p, m), 1) = Sum(mlt(Line(v,i+1),Col(mConv(
    p, m), 1))) by FVSUM_1:def 9;
    1 <= i+1 & i+1 <= m by A11,NAT_1:11,13;
    then (i+1) in Seg m;
    then [i+1,1] in Indices (v * mConv(p, m)) by A8,A10,ZFMISC_1:def 2;
    then (v * mConv(p, m))*(i+1,1) = eval(p, x|^i) by A9,A61,A33,MATRIX_3:def 4
;
    hence thesis by A11,Def6;
  end;
  hence thesis;
end;
