reserve i,j,n,n1,n2,m,k,u for Nat,
        r,r1,r2 for Real,
        x,y for Integer,
        a,b for non trivial Nat;

theorem
   for x,y,z be Nat holds
      y = x|^z
   iff
     (y = 1 & z = 0) or
     (x = 0 & y = 0 & z > 0) or
     (x = 1 & y = 1 & z > 0) or
     (x > 1 & z > 0 & ex y1,y2,y3,K be Nat st
         y1 = Py(x,z+1) & K > 2*z*y1 & y2 = Py(K,z+1) & y3 = Py(K*x,z+1) &
         (0 <= y-y3/y2 <1/2 or 0 <= y3/y2 -y < 1/2))
proof
  let x,y,z be Nat;
  thus y = x|^z implies
     (        y = 1 & z = 0) or
     (x = 0 & y = 0 & z > 0) or
     (x = 1 & y = 1 & z > 0) or
     (x > 1 & z > 0 & ex y1,y2,y3,K be Nat st
         y1 = Py(x,z+1) & K > 2*z*y1 & y2 = Py(K,z+1) & y3 = Py(K*x,z+1) &
         (0 <= y-y3/y2 <1/2 or 0 <= y3/y2 -y < 1/2))
  proof
    assume
A1:   y=x|^z;
    per cases;
      suppose z=0;
        hence thesis by A1,NEWTON:4;
      end;
      suppose
A2:     z>0;
        per cases by NAT_1:53;
        suppose x=0 or x=1;
          hence thesis by A1,A2,NAT_1:14,NEWTON:11;
        end;
        suppose
A3:       x>1;
          then reconsider x1=x as non trivial Nat by NAT_2:28;
          ex y1,y2,y3,K be Nat st
          y1 = Py(x1,z+1) & K > 2*z*y1 & y2 = Py(K,z+1) & y3 = Py(K*x1,z+1) &
          (0 <= y-y3/y2 <1/2 or 0 <= y3/y2 -y < 1/2)
          proof
            set y1 = Py(x1,z+1),K=2*z*y1+1,y2=Py(K,z+1), y3 = Py(K*x1,z+1);
            reconsider K as non trivial Nat by A2;
            take y1,y2,y3,K;
            x1+(x1-1) > x1+0 by XREAL_1:6;
            then
A4:           (x1+(x1-1)) to_power z > x1 to_power z by A2,POWER:37;
            (2*x1-1)|^z <=y1  by Th20;
            then y1 >= x1|^z by A4,XXREAL_0:2;
            then K > 2*z*(x1|^z) by NAT_1:13,XREAL_1:64;
            then
A5:         y - 1/2 < y3/y2 < y + 1/2 by A1,Th22;
            y-y3/y2 >=0 or -(y-y3/y2)>= -0;
            hence thesis by NAT_1:13,XREAL_1:19,XREAL_1:11,A5;
          end;
          hence thesis by A3,A2;
        end;
      end;
    end;
    assume
A6:   (y = 1 & z = 0) or
      (x = 0 & y = 0 & z > 0) or
      (x = 1 & y = 1 & z > 0) or
      (x > 1 & z > 0 & ex y1,y2,y3,K be Nat st
         y1 = Py(x,z+1) & K > 2*z*y1 & y2 = Py(K,z+1) & y3 = Py(K*x,z+1) &
         (0 <= y-y3/y2 <1/2 or 0 <= y3/y2 -y < 1/2));
    per cases by A6;
    suppose y=1 & z=0;
      hence thesis by NEWTON:4;
    end;
    suppose x = 0 & y = 0 & z > 0;
      hence thesis by NAT_1:14,NEWTON:11;
    end;
    suppose x = 1 & y = 1 & z > 0;
      hence thesis;
    end;
    suppose
A7:   x > 1 & z > 0 & ex y1,y2,y3,K be Nat st
      y1 = Py(x,z+1) & K > 2*z*y1 & y2 = Py(K,z+1) & y3 = Py(K*x,z+1) &
      (0 <= y-y3/y2 <1/2 or 0 <= y3/y2 -y < 1/2);
      reconsider x1=x as non trivial Nat by A7,NAT_2:28;
      consider y1,y2,y3,K be Nat such that
A8:     y1 = Py(x1,z+1) and
A9:    K > 2*z*y1 and
A10:    y2 = Py(K,z+1) and
A11:    y3 = Py(K*x1,z+1) and
A12:    0 <= y-y3/y2 <1/2 or 0 <= y3/y2 -y < 1/2 by A7;
      2*z*y1 >=1 by NAT_1:14,A8,A7;
      then reconsider K as non trivial Nat by NAT_2:28,A9;
      x1+(x1-1) > x1+0 by XREAL_1:6;
      then
A13:  (x1+(x1-1)) to_power z > x1 to_power z by A7,POWER:37;
      (2*x1-1)|^z <=y1  by A8,Th20;
      then y1 >= x1|^z by A13,XXREAL_0:2;
      then y1*(2*z) >= (x1|^z)*(2*z) by XREAL_1:64;
      then K > 2*z*(x1|^z) by A9,XXREAL_0:2;
      then
A14:  x1|^z - 1/2 < y3/y2 < x1|^z + 1/2 by Th22,A10,A11;
      per cases by A12;
      suppose 0 <= y-y3/y2 <1/2;
        then
A15:    x1|^z - 1/2+0 < y-y3/y2+y3/y2< 1/2+(x1|^z + 1/2) by A14,XREAL_1:8;
        then y < (x1|^z)+1;
        then
A16:    y <= x1|^z by INT_1:7;
        x1|^z - 1 < x1|^z - 1/2 by XREAL_1:10;
        then x1|^z -1 < y by A15,XXREAL_0:2;
        then x1|^z-1+1 <=y by INT_1:7;
        hence thesis by A16,XXREAL_0:1;
      end;
      suppose 0 <= y3/y2 -y < 1/2;
        then
A17:    x1|^z - 1/2 -1/2 < y3/y2 -(y3/y2 -y) < x1|^z + 1/2 -0
          by A14,XREAL_1:14;
        then
A18:    x1|^z -1+1 <= y by INT_1:7;
        x1|^z +1/2 < x1|^z +1 by XREAL_1:6;
        then y < x1|^z +1 by A17,XXREAL_0:2;
        then y <= x1|^z by INT_1:7;
        hence thesis by A18,XXREAL_0:1;
      end;
    end;
  end;
