reserve n for Nat,
  i for Integer,
  p, x, x0, y for Real,
  q for Rational,
  f for PartFunc of REAL,REAL;

theorem Th2:
  #Z n is_differentiable_in x & diff(( #Zn),x) = n * x #Z (n-1)
proof
  defpred P[Nat] means for x be Real holds #Z $1
  is_differentiable_in x & diff( ( #Z $1),x) = $1 * x #Z ($1 -1);
A1: for k be Nat st P[k] holds P[k+1]
  proof
A2: now
      let x be Real such that
      x in REAL;
      thus ( #Z 1).x=x #Z 1 by Def1
        .=1*x + 0 by PREPOWER:35;
    end;
A3: [#]REAL is open Subset of REAL;
A4: REAL c= dom ( #Z 1) by FUNCT_2:def 1;
    then
A5: ( #Z 1) is_differentiable_on REAL by A2,A3,FDIFF_1:23;
A6: for x be Real holds ( #Z 1) is_differentiable_in x & diff(( #Z
    1), x)=1
    proof
      let x be Real;
A7:   x in REAL by XREAL_0:def 1;
      hence ( #Z 1) is_differentiable_in x by A3,A5,FDIFF_1:9;
      thus diff(( #Z 1), x)=( ( #Z 1)`|REAL).x by A5,A7,FDIFF_1:def 7
        .=1 by A2,A4,A3,A7,FDIFF_1:23;
    end;
    let k be Nat such that
A8: P[k];
    now
      per cases;
      case
A9:     k = 0;
        thus P[k+1]
        proof
          let x be Real;
          thus #Z (k+1) is_differentiable_in x by A6,A9;
          thus diff(( #Z (k+1)), x)=1 by A6,A9
            .=(k+1)*x #Z ((k+1)-1) by A9,PREPOWER:34;
        end;
      end;
      case
        k<> 0;
        then 1 <= k by NAT_1:14;
        then 1-1 <=k-1 by XREAL_1:13;
        then reconsider k1=k-1 as Element of NAT by INT_1:3;
        let x be Real;
A10:    REAL = dom( #Z (k+1)) by FUNCT_2:def 1;
A11:    x is Real & ( #Z k) is_differentiable_in x by A8;
A12:    for x be object st x in dom( #Z (k+1)) holds ( #Z (k+1)).x=( #Z k).x
        * ( #Z 1).x
        proof
          let x be object;
          assume x in dom( #Z (k+1));
          then reconsider x1 = x as Real;
          thus ( #Z (k+1)).x = x1 #Z (k+1) by Def1
            .=(x1 #Z k) * (x1 #Z 1) by Th1
            .=( #Z k).x * x1 #Z (1) by Def1
            .=( #Z k).x *( #Z 1).x by Def1;
        end;
A13:    ( #Z 1) is_differentiable_in x by A6;
A14:    dom(( #Z k)) /\ dom(( #Z 1)) =[#]REAL /\ dom(( #Z 1)) by FUNCT_2:def 1
          .=[#]REAL /\ REAL by FUNCT_2:def 1;
        then ( #Z (k+1)) = ( #Z k) (#) ( #Z 1) by A10,A12,VALUED_1:def 4;
        hence #Z (k+1) is_differentiable_in x by A11,A13,FDIFF_1:16;
        thus diff(( #Z (k+1)), x) = diff( ( #Z k) (#) ( #Z 1),x) by A14,A10,A12
,VALUED_1:def 4
          .= ( #Z k).x *diff(( #Z 1),x)+diff(( #Z k),x)*( #Z 1).x by A11,A13,
FDIFF_1:16
          .= ( #Z k).x*1 + diff( #Z k,x)*( #Z 1).x by A6
          .= (x #Z k)*1 + diff( #Z k,x)*( #Z 1).x by Def1
          .= (x #Z k)*1 + diff( #Z k,x)*(x #Z 1) by Def1
          .= (x #Z k)+k*(x #Z k1)*(x #Z 1) by A8
          .= (x #Z k)+k*((x #Z k1)*(x #Z 1))
          .= (x #Z k)+k*(x #Z (k1+1)) by Th1
          .= (k+1) * x #Z ((k+1)-1);
      end;
    end;
    hence thesis;
  end;
A15: P[0]
  proof
    let x be Real;
    set f= #Z 0;
    now
      dom(f)=REAL by FUNCT_2:def 1;
      then consider x be object such that
A16:  x in dom(f) by XBOOLE_0:def 1;
      reconsider x1=x as Real by A16;
      let y be object such that
A17:  y in {1};
      f.x=x1 #Z 0 by Def1
        .=1 by PREPOWER:34
        .=y by A17,TARSKI:def 1;
      hence y in rng f by A16,FUNCT_1:def 3;
    end;
    then
A18: {1} c= rng f by TARSKI:def 3;
    now
      let y be object;
      assume y in rng f;
      then consider x be object such that
A19:  x in dom(f) and
A20:  y=f.x by FUNCT_1:def 3;
      reconsider x as Real by A19;
      f.x =x #Z 0 by Def1
        .=1 by PREPOWER:34;
      hence y in {1} by A20,TARSKI:def 1;
    end;
    then rng(f) c= {1} by TARSKI:def 3;
    then
A21: rng(f) = {1} by A18,XBOOLE_0:def 10;
A22: dom(f)=[#]REAL by FUNCT_2:def 1;
    then
A23: f is_differentiable_on dom(f) by A21,FDIFF_1:11;
A24: x in REAL by XREAL_0:def 1;
    then (f`|dom(f)) .x = 0 by A21,A22,FDIFF_1:11;
    hence f is_differentiable_in x & diff(f,x)= 0 * x #Z (0-1) by A24,A23,A22,
FDIFF_1:9,def 7;
  end;
  for n be Nat holds P[n] from NAT_1:sch 2(A15,A1);
  hence thesis;
end;
