reserve a,b for Complex;
reserve z for Complex;
reserve n0 for non zero Nat;
reserve a0,a1,a2,s1,s2 for Complex;
reserve a3,x,q,r,s,s3 for Complex;
reserve a4,p,s4 for Complex;

theorem Th29:
  1_root_of_quartic(a0,a1,a2,a3)*2_root_of_quartic(a0,a1,a2,a3)*
  3_root_of_quartic(a0,a1,a2,a3)*4_root_of_quartic(a0,a1,a2,a3) = a0
proof
  per cases;
  suppose
A1: 8*a1 -4*a2*a3 + a3|^3 = 0;
    set p = (8*a2-3*a3|^2)/32, r = (256*a0 -64*a3*a1 +16*a3|^2*a2 -3*a3|^4)/
    1024, s1 = 2-root(p|^2-r);
    set t1 = 2-root(-2*(p-s1)), t2 = 2-root(-2*(p+s1));
A2: ( ex p,r,s1 st p = (8*a2-3*a3|^2)/32 & r = (256*a0 -64*a3*a1 +16*a3|^2
*a2 -3*a3 |^4)/1024 & s1 = 2-root(p|^2-r) & 3_root_of_quartic(a0,a1,a2,a3) = 2
-root(-2*(p +s1))-a3/4)& ex p,r,s1 st p = (8*a2-3*a3|^2)/32 & r = (256*a0 -64*
a3*a1 +16*a3 |^2*a2 -3*a3|^4)/1024 & s1 = 2-root(p|^2-r) & 4_root_of_quartic(a0
    ,a1,a2,a3) = -2-root(-2*(p+s1))-a3/4 by A1,Def7,Def8;
    ( ex p,r,s1 st p = (8*a2-3*a3|^2)/32 & r = (256*a0 -64*a3*a1 +16*a3|^2
*a2 -3*a3 |^4)/1024 & s1 = 2-root(p|^2-r) & 1_root_of_quartic(a0,a1,a2,a3) = 2
-root(-2*(p -s1))-a3/4)& ex p,r,s1 st p = (8*a2-3*a3|^2)/32 & r = (256*a0 -64*
a3*a1 +16*a3 |^2*a2 -3*a3|^4)/1024 & s1 = 2-root(p|^2-r) & 2_root_of_quartic(a0
    ,a1,a2,a3) = -2-root(-2*(p-s1))-a3/4 by A1,Def5,Def6;
    hence 1_root_of_quartic(a0,a1,a2,a3)*2_root_of_quartic(a0,a1,a2,a3)*
3_root_of_quartic(a0,a1,a2,a3)*4_root_of_quartic(a0,a1,a2,a3) = (-(t1*t1)+a3*a3
    /16)*(-(t2*t2)+a3*a3/16) by A2
      .= (-(t1|^2)+a3*a3/16)*(-(t2*t2)+a3*a3/16) by Th1
      .= (-(t1|^2)+a3*a3/16)*(-(t2|^2)+a3*a3/16) by Th1
      .= (-(-2*(p-s1))+a3*a3/16)*(-(t2|^2)+a3*a3/16) by Th7
      .= (-(-2*(p-s1))+a3*a3/16)*(-(-2*(p+s1))+a3*a3/16) by Th7
      .= 4*p*p+2*2*p*a3*a3/16+a3*a3*a3*a3/16/16-4*(s1*s1)
      .= 4*p*p+4*p*a3*a3/16+a3*a3*a3*a3/16/16-4*(s1|^2) by Th1
      .= 4*(p*p)+4*p*a3*a3/16+a3*a3*a3*a3/16/16-4*(p|^2-r) by Th7
      .= 4*(p|^2)+4*p*a3*a3/16+a3*a3*a3*a3/16/16-4*(p|^2-r) by Th1
      .= p*a3*a3/4+a3*a3*(a3*a3)/16/16+4*r
      .= p*a3*a3/4+a3*a3*a3|^2/16/16+4*r by Th1
      .= p*a3*a3/4+a3*a3*a3|^2/256+(a0-a3*a1/4+a3|^2*a2/16-3*a3|^4/256)
      .= p*a3*a3/4+a3*a3*a3|^2/256+(a0-a3*a1/4+a3|^2*a2/16 -3*(a3*a3*a3*a3)/
    256) by Th3
      .= p*a3*a3/4+a3*a3*a3|^2/256+(a0-a3*a1/4+a3|^2*a2/16 -3*a3*a3*(a3*a3)/
    256)
      .= p*a3*a3/4+a3*a3*a3|^2/256+(a0-a3*a1/4+a3|^2*a2/16 -3*a3*a3*(a3|^2)/
    256) by Th1
      .= (a0+a2*(a3*a3)/16)-4*a3|^2*a3*a3/128-a3*a1/4+a3|^2*a2/16
      .= (a0+a2*(a3|^2)/16)-a3|^2*a3*a3/32-a3*a1/4+a3|^2*a2/16 by Th1
      .= a0+2*a2*a3|^2/16-a3|^2*a3*a3/32-a3*a1/4
      .= a0+2*a2*(a3*a3)/16-a3|^2*a3*a3/32-a3*a1/4 by Th1
      .= a0+4*a2*a3*a3/32-a3*a3*a3*a3/32-8*a3*a1/32 by Th1
      .= a0+(4*a2*a3-a3*a3*a3-8*a1)*a3/32
      .= a0+(4*a2*a3-a3|^3-8*a1)*a3/32 by Th2
      .= a0 by A1;
  end;
  suppose
A3: 8*a1 -4*a2*a3 + a3|^3 <> 0;
    then
A4: ( ex p,q,r,s1,s2,s3 st p = (8*a2-3*a3|^2)/32 & q = (8*a1 -4*a2*a3 + a3
    |^3)/64 & r = (256*a0 -64*a3*a1 +16*a3|^2*a2 -3*a3|^4)/1024 & s1 = 2-root(
1_root_of_cubic (-q|^2,p|^2-r,2*p)) & s2 = 2-root(2_root_of_cubic(-q|^2,p|^2-r,
2*p)) & s3 = -q/ (s1*s2) & 3_root_of_quartic(a0,a1,a2,a3) = -s1+s2-s3-a3/4)& ex
p,q,r,s1,s2,s3 st p = (8*a2-3*a3|^2)/32 & q = (8*a1 -4*a2*a3 + a3|^3)/64 & r =
(256*a0 -64*a3* a1 +16*a3|^2*a2 -3*a3|^4)/1024 & s1 = 2-root(1_root_of_cubic(-q
|^2,p|^2-r,2*p)) & s2 = 2-root(2_root_of_cubic(-q|^2,p|^2-r,2*p)) & s3 = -q/(s1
    *s2) & 4_root_of_quartic(a0,a1,a2,a3) = s1-s2-s3-a3/4 by Def7,Def8;
    set p = (8*a2-3*a3|^2)/32, q = (8*a1 -4*a2*a3 + a3|^3)/64, r = (256*a0 -64
*a3*a1 +16*a3|^2*a2 -3*a3|^4)/1024, s1 = 2-root(1_root_of_cubic(-q|^2,p|^2-r,2*
    p)), s2 = 2-root(2_root_of_cubic(-q|^2,p|^2-r,2*p)), s3 = -q/(s1*s2);
A5: s2*s2 = s2|^2 by Th1
      .= 2_root_of_cubic(-q|^2,p|^2-r,2*p) by Th7;
    set r1=s1*s1, r2=s2*s2, r3=s3*s3;
A6: s1*s1 = s1|^2 by Th1
      .= 1_root_of_cubic(-q|^2,p|^2-r,2*p) by Th7;
    then
A7: (s1*s1)*(s2*s2)*3_root_of_cubic(-q|^2,p|^2-r,2*p) = -(-q|^2) by A5,Th19;
A8: q*q <> 0 by A3;
    then (s1*s2)*(s1*s2)<>0 by A7,Th1;
    then
A9: s1*s2<>0;
A10: (s1*s1)*(s2*s2)<>0 by A8,A7,Th1;
A11: s3*s3 = ((-q)/(s1*s2))*(-q/(s1*s2)) by XCMPLX_1:187
      .= ((-q)/(s1*s2))*((-q)/(s1*s2)) by XCMPLX_1:187
      .= (-q)*(-q)/((s1*s2)*(s1*s2)) by XCMPLX_1:76
      .= (q*q)/((s1*s1)*(s2*s2))
      .= 3_root_of_cubic(-q|^2,p|^2-r,2*p)*((s1*s1)*(s2*s2)) /((s1*s1)*(s2*
    s2)) by A7,Th1
      .= 3_root_of_cubic(-q|^2,p|^2-r,2*p) by A10,XCMPLX_1:89;
    then
A12: r1+r2+r3 = -2*p by A6,A5,Th17;
    ( ex p,q,r,s1,s2,s3 st p = (8*a2-3*a3|^2)/32 & q = (8*a1 -4*a2*a3 + a3
    |^3)/64 & r = (256*a0 -64*a3*a1 +16*a3|^2*a2 -3*a3|^4)/1024 & s1 = 2-root(
1_root_of_cubic (-q|^2,p|^2-r,2*p)) & s2 = 2-root(2_root_of_cubic(-q|^2,p|^2-r,
2*p)) & s3 = -q/ (s1*s2) & 1_root_of_quartic(a0,a1,a2,a3) = s1+s2+s3-a3/4)& ex
p,q,r,s1,s2,s3 st p = (8*a2-3*a3|^2)/32 & q = (8*a1 -4*a2*a3 + a3|^3)/64 & r =
(256*a0 -64*a3* a1 +16*a3|^2*a2 -3*a3|^4)/1024 & s1 = 2-root(1_root_of_cubic(-q
|^2,p|^2-r,2*p)) & s2 = 2-root(2_root_of_cubic(-q|^2,p|^2-r,2*p)) & s3 = -q/(s1
    *s2) & 2_root_of_quartic(a0,a1,a2,a3) = -s1-s2+s3-a3/4 by A3,Def5,Def6;
    hence 1_root_of_quartic(a0,a1,a2,a3)*2_root_of_quartic(a0,a1,a2,a3)*
3_root_of_quartic(a0,a1,a2,a3)*4_root_of_quartic(a0,a1,a2,a3) = (r1+r2+r3)*(r1+
r2+r3)-4*(r1*r2+r1*r3+r2*r3) -(r1+r2+r3)*a3*a3/8-2*s1*s2*s3*a3+a3*a3*a3*a3/16/
    16 by A4
      .= (-2*p)*(-2*p)-4*(p|^2-r) -(-2*p)*a3*a3/8-2*s1*s2*s3*a3+a3*a3*a3*a3/
    16/16 by A6,A5,A11,A12,Th18
      .= 4*p*p-4*(p|^2-r)+2*p*a3*a3/8-2*s1*s2*s3*a3+a3*a3*a3*a3/16/16
      .= 4*p*p-4*((p*p)-r)+2*p*a3*a3/8-2*s1*s2*s3*a3+a3*a3*a3*a3/16/16 by Th1
      .= 4*r+2*p*a3*a3/8+2*a3*((s1*s2)*(q/(s1*s2)))+a3*a3*a3*a3/16/16
      .= 4*r+2*p*a3*a3/8+2*a3*(q/((s1*s2)/(s1*s2))) +a3*a3*a3*a3/16/16 by
XCMPLX_1:81
      .= 4*r+2*p*a3*a3/8+2*a3*(q/1)+a3*a3*a3*a3/16/16 by A9,XCMPLX_1:60
      .= 4*(256*a0 -64*a3*a1 +16*a3|^2*a2 -3*a3|^4)/1024 +(8*a2-3*a3|^2)/32*
    a3*a3/4+2*a3*(8*a1 -4*a2*a3 + a3|^3)/64 +a3*a3*a3*a3/16/16
      .= 4*(256*a0 -64*a3*a1 +16*(a3*a3)*a2 -3*a3|^4)/1024 +(8*a2-3*a3|^2)/
    32*a3*a3/4+2*a3*(8*a1 -4*a2*a3 + a3|^3)/64 +a3*a3*a3*a3/16/16 by Th1
      .= 4*(256*a0 -64*a3*a1 +16*(a3*a3)*a2 -3*a3|^4)/1024 +(8*a2-3*(a3*a3))
    /32*a3*a3/4+2*a3*(8*a1 -4*a2*a3 + a3|^3)/64 +a3*a3*a3*a3/16/16 by Th1
      .= 4*(256*a0 -64*a3*a1 +16*(a3*a3)*a2 -3*(a3*a3*a3*a3))/1024 +(8*a2-3*
(a3*a3))/32*a3*a3/4+2*a3*(8*a1 -4*a2*a3 + a3|^3)/64 +(a3*a3*a3*a3/16/16) by Th3
      .= 4*(256*a0 -64*a3*a1 +16*(a3*a3)*a2 -3*(a3*a3*a3*a3))/1024 +(8*a2-3*
(a3*a3))/32*a3*a3/4+2*a3*(8*a1 -4*a2*a3 + (a3*a3*a3))/64 +a3*a3*a3*a3/16/16 by
Th2
      .= a0;
  end;
end;
