
theorem Th74:
  for p be Polynomial of F_Complex st len p > 1 holds p is with_roots
proof
  let p be Polynomial of F_Complex;
assume
A1: len p > 1;
  then
A2: len p >= 1+1 by NAT_1:13;
  per cases by A2,XXREAL_0:1;
  suppose
    len p > 2;
    then consider z0 be Element of F_Complex such that
A3: for z be Element of F_Complex holds |.eval(p,z).| >= |.eval(p,z0)
    .| by Th73;
    set q = Subst(p,<%z0,1_F_Complex%>);
    defpred P[Nat] means $1 >= 1 & q.$1 <> 0.F_Complex;
    len <%z0,1_F_Complex%> = 2 by Th40;
    then
A4: len q = 2*len p - len p - 2 + 2 by A1,Th52
      .= len p;
A5: ex k be Nat st P[k]
    proof
      len q-1 = len q-'1 by A1,A4,XREAL_0:def 2;
      then reconsider k=len q-1 as Element of NAT;
      take k;
      len q >= 1+1 by A1,A4,NAT_1:13;
      hence k >= 1 by XREAL_1:19;
      len q = k+1;
      hence q.k <> 0.F_Complex by ALGSEQ_1:10;
    end;
    consider k be Nat such that
A6: P[k] and
A7: for n be Nat st P[n] holds k <= n from NAT_1:sch 5(A5);
A8: k+1 > 1 by A6,NAT_1:13;
    reconsider k1=k as non zero Element of NAT by A6,ORDINAL1:def 12;
    set sq = the CRoot of k1,-(q.0/q.k1);
    deffunc O(Nat) =
       (q.In(k1+$1,NAT))*((power F_Complex).(sq,In(k1+$1,NAT)));
    consider F2 be FinSequence of the carrier of F_Complex such that
A9: len F2 = len q-'(k1+1) and
A10: for n be Nat st n in dom F2 holds F2.n = O(n) from FINSEQ_2:sch 1;
    k1 < len q by A6,ALGSEQ_1:8;
    then
A11: k+1+0 <= len q by NAT_1:13;
    then len q-(k+1) >= 0 by XREAL_1:19;
    then
A12: len F2 = len q-(k+1) by A9,XREAL_0:def 2;
A13: eval(p,z0) = eval(p,z0+0.F_Complex) by RLVECT_1:def 4
      .= eval(p,eval(<%z0,1_F_Complex%>,0.F_Complex)) by Th47
      .= eval(q,0.F_Complex) by Th53;
A14: now
      let z be Element of F_Complex;
      eval(q,z) = eval(p,eval(<%z0,1_F_Complex%>,z)) by Th53
        .= eval(p,z0+z) by Th47;
      then |.eval(q,z).| >= |.eval(p,z0).| by A3;
      hence |.eval(q,z).| >= |.q.0 .| by A13,Th31;
    end;
    now
      let c be Real;
      assume that
A15:  0 < c and
A16:  c < 1;
      set z1 = [**c,0**]*sq;
      consider F1 be FinSequence of the carrier of F_Complex such that
A17:  eval(q,z1) = Sum F1 and
A18:  len F1 = len q and
A19:  for n be Element of NAT st n in dom F1 holds F1.n = q.(n-'1)*(
      power F_Complex).(z1,n-'1) by POLYNOM4:def 2;
A20:  dom ((F1/^(k+1))*[**c to_power (k+1),0**]") = dom (F1/^(k+1))
      by POLYNOM1:def 2;
A21:  k1 < len F1 by A6,A18,ALGSEQ_1:8;
      reconsider FF = F1|k1 as FinSequence of the carrier of F_Complex;
      1 in Seg k by A6,FINSEQ_1:1;
      then 1 in Seg len (F1|k) by A21,FINSEQ_1:59;
      then
A22:  1 in dom FF by FINSEQ_1:def 3;
A23:  dom FF c= dom F1 by FINSEQ_5:18;
      now
        let i be Element of NAT;
        assume that
A24:    i in dom FF and
A25:    i <> 1;
A26:    0+1 <= i by A24,FINSEQ_3:25;
        then i > 1 by A25,XXREAL_0:1;
        then i >= 1+1 by NAT_1:13;
        then i-1 >= 1+1-1 by XREAL_1:9;
        then
A27:    i-'1 >= 1 by XREAL_0:def 2;
        i <= len (F1|k) by A24,FINSEQ_3:25;
        then i <= k by A21,FINSEQ_1:59;
        then i < k+1 by NAT_1:13;
        then
A28:    i-1 < k by XREAL_1:19;
        i-1 >= 0 by A26;
        then
A29:    i-'1 < k by A28,XREAL_0:def 2;
        thus FF/.i = F1/.i by A24,FINSEQ_4:70
          .= F1.i by A23,A24,PARTFUN1:def 6
          .= q.(i-'1)*(power F_Complex).(z1,i-'1) by A19,A23,A24
          .= 0.F_Complex*(power F_Complex).(z1,i-'1) by A7,A27,A29
          .= 0.F_Complex;
      end;
      then
A30:  Sum FF = FF/.1 by A22,POLYNOM2:3
        .= F1/.1 by A22,FINSEQ_4:70
        .= F1.1 by A22,A23,PARTFUN1:def 6
        .= q.(1-'1)*(power F_Complex).(z1,1-'1) by A19,A22,A23
        .= q.0*(power F_Complex).(z1,1-'1) by XREAL_1:232
        .= q.0*(power F_Complex).(z1,0) by XREAL_1:232
        .= q.0*1_F_Complex by GROUP_1:def 7
        .= q.0;
      k+1 in Seg len F1 by A8,A11,A18,FINSEQ_1:1;
      then
A31:  k+1 in dom F1 by FINSEQ_1:def 3;
      then
A32:  F1.(k+1) = F1/.(k+1) by PARTFUN1:def 6;
      set gc = Sum(F1/^(k+1))/[**c to_power (k+1),0**];
A33:  c to_power (k+1) > 0 by A15,POWER:34;
      then
A34:  Sum(F1/^(k+1)) = [**c to_power (k+1),0**]*Sum(F1/^(k+1))/ [**c
      to_power (k+1),0**] by COMPLFLD:7,30
        .= [**c to_power (k+1),0**]*gc;
A35:  F1/.(k+1) = F1.(k+1) by A31,PARTFUN1:def 6
        .= q.(k+1-'1)*(power F_Complex).(z1,k+1-'1) by A19,A31
        .= q.k1*(power F_Complex).(z1,k+1-'1) by NAT_D:34
        .= q.k1*(power F_Complex).(z1,k1) by NAT_D:34
        .= q.k1*((power F_Complex).([**c,0**],k1)* (power F_Complex).(sq,k1)
      ) by GROUP_1:52
        .= q.k1*((power F_Complex).([**c,0**],k1)*(-(q.0/q.k1))) by
COMPLFLD:def 2
        .= q.k1*(-(q.0/q.k1))*(power F_Complex).([**c,0**],k1)
        .= q.k1*((-(q.0))/q.k1)*(power F_Complex).([**c,0**],k1) by A6,
COMPLFLD:42
        .= (q.k1* (-q.0))/q.k1*(power F_Complex).([**c,0**],k1)
        .= (-q.0)*(power F_Complex).([**c,0**],k1) by A6,COMPLFLD:30
        .= (-q.0)*[**c to_power k,0**] by A15,HAHNBAN1:29;
A36:  |.q.0*(1_F_Complex-[**c to_power k,0**])+[**c to_power (k+1),0**]*
gc.| <= |.q.0*(1_F_Complex-[**c to_power k,0**]).| + |.[**c to_power (k+1),0**]
      *gc.| by COMPLFLD:62;
      F1 = (F1|(k+1-'1))^<*F1.(k+1)*>^(F1/^(k+1)) by A8,A11,A18,POLYNOM4:1;
      then Sum F1 = Sum((F1|(k+1-'1))^<*F1/.(k+1)*>) + Sum(F1/^(k+1)) by A32,
RLVECT_1:41
        .= Sum(F1|(k+1-'1)) + Sum<*F1/.(k+1)*> + Sum (F1/^(k+1)) by RLVECT_1:41
        .= Sum(F1|k) + Sum<*F1/.(k+1)*> + Sum(F1/^(k+1)) by NAT_D:34
        .= q.0 + (-q.0)*[**c to_power k,0**] + Sum(F1/^(k+1)) by A30,A35,
RLVECT_1:44
        .= q.0 + -q.0*[**c to_power k,0**] + Sum(F1/^(k+1)) by VECTSP_1:9
        .= q.0*1_F_Complex - q.0*[**c to_power k,0**] + Sum(F1/^(k+1))
        .= q.0*(1_F_Complex-[**c to_power k,0**])+ [**c to_power (k+1),0**]*
      gc by A34,VECTSP_1:11;
      then
      |.q.0*(1_F_Complex-[**c to_power k,0**])+ [**c to_power (k+1),0**]*
      gc.| >= |.q.0 .| by A14,A17;
      then
      |.q.0*(1_F_Complex-[**c to_power k,0**]).| + |.[**c to_power (k+1),
      0**]*gc.| >= |.q.0 .| by A36,XXREAL_0:2;
      then
      |.q.0 .|*|.1_F_Complex-[**c to_power k,0**].| + |.[**c to_power (k+
      1),0**]*gc.| >= |.q.0 .| by COMPLFLD:71;
      then
A37:  |.q.0 .|*|.1_F_Complex-[**c to_power k,0**].| + |.[**c to_power (k+
      1),0**].|*|.gc.| >= |.q.0 .| by COMPLFLD:71;
      0 + (c to_power k1) <= 1 by A15,A16,TBSP_1:2;
      then
A38:  1-(c to_power k) >= 0 by XREAL_1:19;
A39:  c to_power k > 0 by A15,POWER:34;
A40:  len |.(F1/^(k+1))*[**c to_power (k+1),0**]".| = len ((F1/^(k+1))*
      [**c to_power (k+1),0**]") by Def2
        .= len (F1/^(k+1)) by A20,FINSEQ_3:29
        .= len F1-(k+1) by A11,A18,RFINSEQ:def 1
        .= len |.F2.| by A12,A18,Def2;
      now
        let i be Element of NAT;
A41:    k+1+i-'1 = k+i+1-1 by XREAL_0:def 2
          .= k+i;
        assume i in dom |.(F1/^(k+1))*[**c to_power (k+1),0**]".|;
        then
A43:    i in Seg len |.(F1/^(k+1))*[**c to_power (k+1),0**]".| by
FINSEQ_1:def 3;
        then i <= len |.F2.| by A40,FINSEQ_1:1;
        then i <= len F1-(k+1) by A12,A18,Def2;
        then k+i+1 >= 0+1 & k+1+i <= len F1 by XREAL_1:6,19;
        then
A44:    k+1+i in dom F1 by FINSEQ_3:25;
        i >= 0+1 by A43,FINSEQ_1:1;
        then
A45:    i-1 >= 0;
        c to_power (i-'1) <= 1 by A15,A16,TBSP_1:2;
        then
A46:    c to_power (i-1) <= 1 by A45,XREAL_0:def 2;
A47:    c to_power (k+i) > 0 by A15,POWER:34;
A48:    k+i-(k+1) = i-1;
        i in Seg len ((F1/^(k+1))*[**c to_power (k+1),0**]") by A43,Def2;
        then
A49:    i in dom ((F1/^(k+1))*[**c to_power (k+1),0**]") by FINSEQ_1:def 3;
        then
A50:    (F1/^(k+1))/.i = (F1/^(k+1)).i by A20,PARTFUN1:def 6
          .= F1.(k+1+i) by A11,A18,A20,A49,RFINSEQ:def 1
          .= q.In(k+1+i-'1,NAT)*(power F_Complex).([**c,0**]*sq,k+1+i-'1)
                  by A19,A44
          .= q.In(k+i,NAT)*(power(sq,k+i)* power([**c,0**],k+i))
                   by A41,GROUP_1:52
          .= q.In(k+i,NAT)*power(sq,k+i)* power([**c,0**],k+i);
A51:    len F2 = len |.F2.| by Def2;
A53:    |.(F1/^(k+1))*[**c to_power (k+1),0**]".|.i
          = |.((F1/^(k+1))*[**c to_power (k+1),0**]").i.| by A49,Def2
          .= |.((F1/^(k+1))*[**c to_power (k+1),0**]")/.i.|
          by A49,PARTFUN1:def 6
          .= |.((F1/^(k+1))/.i)*[**c to_power (k+1),0**]".|
          by A20,A49,POLYNOM1:def 2
          .= |.(F1/^(k+1))/.i.|*|.[**c to_power (k+1),0**]".| by COMPLFLD:71
          .= |.q.In(k+i,NAT)*power(sq,k+i)*
                 power([**c,0**],k+i).|*|.c to_power (k+1).|"
                   by A33,A50,COMPLFLD:7,72
          .= |.q.In(k+i,NAT)*power(sq,k+i).|*
               |.power([**c,0**],k+i).|*|.c to_power (k+1).|" by COMPLFLD:71
          .= |.q.In(k+i,NAT)*power(sq,k+i).|* |.[**c to_power (k+i),0
        **].|*|.c to_power (k+1).|" by A15,HAHNBAN1:29
          .= |.q.In(k+i,NAT)*power(sq,k+i).|* (c to_power (k+i))*|.
        c to_power (k+1).|" by A47,ABSVALUE:def 1
          .= |.q.In(k+i,NAT)*power(sq,k+i).|* (c to_power (k+i))*(c
        to_power In(k+1,NAT))" by A33,ABSVALUE:def 1
          .= |.q.In(k+i,NAT)*power(sq,k+i).|* ((c to_power (k+i))*(c
        to_power (k+1))")
          .= |.q.In(k+i,NAT)*power(sq,k+i).|* ((c to_power (k+i))/(c
        to_power (k+1)))
          .= |.q.In(k+i,NAT)*power(sq,k+i).|*(c to_power (i-1))
          by A15,A48,POWER:29;
A54:    i in dom F2 by A40,A43,A51,FINSEQ_1:def 3;
        (q.In(k+i,NAT))*power(sq,k+i)
           = q.In(k+i,NAT)*(power F_Complex).(sq,In(k+i,NAT))
          .= O(i)
          .= F2.i by A54,A10;
        then |.(F1/^(k+1))*[**c to_power (k+1),0**]".|.i <= |.F2.i.|
        by A46,A53,COMPLEX1:46,XREAL_1:153;
        hence |.(F1/^(k+1))*[**c to_power (k+1),0**]".|.i <= |.F2.|.i
        by A54,Def2;
      end;
      then
A55:  Sum|.(F1/^(k+1))*[**c to_power (k+1),0**]".| <= Sum|.F2.|
      by A40,INTEGRA5:3;
      |.1_F_Complex-[**c to_power k,0**].| = |.[**1,0**]-[**c to_power k,
      0**].| by COMPLEX1:def 4,COMPLFLD:8
        .= |.[**1-(c to_power k1),0-0**].| by Th6
        .= 1-(c to_power k) by A38,ABSVALUE:def 1;
      then |.[**c to_power (k+1),0**].|*|.gc.| >= |.q.0 .|*1 - |.q.0 .|*(1-(c
      to_power k)) by A37,XREAL_1:20;
      then (c to_power (k+1))*|.gc.| >= |.q.0 .|*(c to_power k) by A33,
ABSVALUE:def 1;
      then
      (c to_power (k+1))*|.gc.|/(c to_power k) >= |.q.0 .|*(c to_power k)
      /(c to_power k) by A39,XREAL_1:72;
      then (c to_power (k+1))/(c to_power k)*|.gc.| >= |.q.0 .| by A39,
XCMPLX_1:89;
      then (c to_power (k+1-k))*|.gc.| >= |.q.0 .| by A15,POWER:29;
      then
A56:  c*|.gc.| >= |.q.0 .| by POWER:25;
      gc = Sum(F1/^(k+1))*[**c to_power (k+1),0**]"
        .= Sum((F1/^(k+1))*[**c to_power (k+1),0**]") by POLYNOM1:13;
      then |.gc.| <= Sum |.(F1/^(k+1))*[**c to_power (k+1),0**]".| by Th14;
      then |.gc.| <= Sum|.F2.| by A55,XXREAL_0:2;
      then c*|.gc.| <= c*Sum|.F2.| by A15,XREAL_1:64;
      hence c*Sum|.F2.| >= |.q.0 .| by A56,XXREAL_0:2;
    end;
    then |.q.0 .| <= 0 by Lm1;
    then
A57: q.0 = 0.F_Complex by COMPLFLD:59;
    ex x be Element of F_Complex st x is_a_root_of p
    proof
      take z0;
      eval(p,z0) = 0.F_Complex by A13,A57,Th31;
      hence thesis;
    end;
    hence thesis;
  end;
  suppose
A58: len p = 2;
    set np=NormPolynomial(p);
A59: len p-'1 = 2-1 by A58,XREAL_0:def 2;
A60: len np = len p by A58,Th57;
A61: now
      let k be Nat;
      assume
A62:  k < len np;
      per cases by A58,A60,A62,NAT_1:23;
      suppose
        k=0;
        hence np.k = <%np.0,1_F_Complex%>.k by Th38;
      end;
      suppose
A63:    k=1;
        hence np.k = 1_F_Complex by A58,A59,Th56
          .= <%np.0,1_F_Complex%>.k by A63,Th38;
      end;
    end;
    len <%np.0,1_F_Complex%> = 2 by Th40;
    then
A64: np = <%np.0,1_F_Complex%> by A58,A61,Th57,ALGSEQ_1:12;
    ex x be Element of F_Complex st x is_a_root_of np
    proof
      take z0 = -np.0;
      eval(np,z0) = np.0+z0 by A64,Th47
        .= 0.F_Complex by RLVECT_1:5;
      hence thesis;
    end;
    then np is with_roots;
    hence thesis by A58,Th60;
  end;
end;
