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;

theorem
  a3 <> 0 implies (a3*z|^3 + a2*z|^2 + a1*z + a0 = 0 iff z =
1_root_of_cubic(a0/a3,a1/a3,a2/a3) or z = 2_root_of_cubic(a0/a3,a1/a3,a2/a3) or
  z = 3_root_of_cubic(a0/a3,a1/a3,a2/a3))
proof
  assume
A1: a3<>0;
  set s3 = 3_root_of_cubic(a0/a3,a1/a3,a2/a3);
  set s2 = 2_root_of_cubic(a0/a3,a1/a3,a2/a3);
  set s1 = 1_root_of_cubic(a0/a3,a1/a3,a2/a3);
  -a2/a3 = (s1+s2+s3) by Th17;
  then
A2: a2/a3 = -(s1+s2+s3);
  -a0/a3 = s1*s2*s3 by Th19;
  then
A3: a0/a3 = -s1*s2*s3;
  (z|^3 + (a2/a3)*z|^2 + (a1/a3)*z + a0/a3)*a3 = a3*z|^3 + (a2/a3*a3)*z|^2
  + (a1/a3*a3)*z + a0/a3*a3
    .= a3*z|^3 + (a2/a3*a3)*z|^2 + (a1/a3*a3)*z + a0 by A1,XCMPLX_1:87
    .= a3*z|^3 + (a2/a3*a3)*z|^2 + a1*z + a0 by A1,XCMPLX_1:87
    .= a3*z|^3 + a2*z|^2 + a1*z + a0 by A1,XCMPLX_1:87;
  then
A4: z|^3 + (a2/a3)*z|^2 + (a1/a3)*z + a0/a3 = 0 iff a3* z|^3 + a2*z|^2 + a1*
  z + a0 = 0 by A1;
  a1/a3 = s1*s2+s1*s3+s2*s3 by Th18;
  hence thesis by A4,A2,A3,Th14;
end;
