reserve c for Complex;
reserve r for Real;
reserve m,n for Nat;
reserve f for complex-valued Function;
reserve f,g for differentiable Function of REAL,REAL;
reserve L for non empty ZeroStr;
reserve x for Element of L;
reserve p,q for Polynomial of F_Real;

theorem Th44:
  p <> 0_.F_Real implies len poly_diff(p) = len p - 1
  proof
    set x = len p - 1;
    set d = poly_diff(p);
    assume p <> z;
    then
A1: deg p <> -1 by HURWITZ:20;
    0-1 <= x by XREAL_1:9;
    then -1+1 < x+1 by A1;
    then x >= 0 by INT_1:7;
    then reconsider x as Element of NAT by INT_1:3;
A2: x is_at_least_length_of d
    proof
      let i be Nat;
      assume i >= x;
      then i+1 >= x+1 by XREAL_1:6;
      then p.(i+1) = 0.F by ALGSEQ_1:8;
      hence 0.F = p.(i+1) * (i+1)
      .= d.i by Def5;
    end;
    for n st n is_at_least_length_of d holds x <= n
    proof
      let n such that
A3:   n is_at_least_length_of d;
      per cases;
      suppose x = 0;
        hence thesis;
      end;
      suppose x > 0;
        then
A4:     x >= 0+1 by INT_1:7;
        len p = x+1;
        then
A5:     p.x <> 0.F by ALGSEQ_1:10;
        reconsider x1 = x-1 as Element of NAT by A4,NAT_1:21;
A6:     d.x1 = p.(x1+1) * (x1+1) by Def5;
        assume x > n;
        then x >= n+1 by INT_1:7;
        then x1 >= n+1-1 by XREAL_1:9;
        hence contradiction by A5,A3,A6;
      end;
    end;
    hence thesis by A2,ALGSEQ_1:def 3;
  end;
