
theorem
  for p be Prime, n,k be Nat holds (((n + k)*p) choose p) mod p = (n + k) mod p
  proof
    let p be Prime, n be Nat;
    defpred P[Nat] means (((n + $1)*p) choose p) mod p = (n + $1) mod p;
    A1: P[0]
    proof
      defpred Q[Nat] means ($1*p) choose p mod p = $1 mod p;
      B1: Q[0];
      B2: for i be Nat st Q[i] holds Q[i+1]
      proof
        let i be Nat such that
        C1: ((i*p) choose p) mod p = i mod p;
        C2: (p - 1) + 1 > (p - 1) + 0 by XREAL_1:6;
        p > 1 by INT_2:def 4; then
        C3: p - 1 = p -' 1 by XREAL_1:233;
        (((i+1)*p) choose p) mod p =
           (((i*p + (p - 1) + 1) choose ((p-1)+1))) mod p
        .=((((i*p + (p - 1)) choose (p-1)) mod p) +
        (((i*p + (p - 1)) choose p) mod p)) mod p by CPP
        .=((((i*p + (p - 1)) choose (p-1)) mod p) +
        (((i*p) choose p) mod p)) mod p by C2,KPW
        .=(i mod p + 1) mod p by C1,IPN,C3
        .= (i + 1) mod p by NAT_D:22;
        hence thesis;
      end;
      for c be Nat holds Q[c] from NAT_1:sch 2(B1,B2);
      hence thesis;
    end;
    A2: for m be Nat st P[m] holds P[m+1]
    proof
      let m be Nat such that
      B1: (((n + m)*p) choose p) mod p = (n + m) mod p;
      B2: (p - 1) + 0 < (p - 1) + 1 by XREAL_1:6;
      (((n + m)*p + (p - 1) + 1) choose ((p-1)+1)) mod p =
      (((((n + m)*p + (p - 1)) choose p) mod p) +
      (((((n + m)*p + (p - 1)) choose (p - 1))) mod p)) mod p by CPP
      .= (((((n + m)*p + (p - 1)) choose p) mod p) +
      (((((((n + m)*p + (p - 1))) mod p) choose (p - 1))) mod p)) mod p
        by B2,MOC
      .= (((((n + m)*p + (p - 1)) choose p) mod p) +
      (((((p - 1) mod ((p-1)+1)) choose (p - 1))) mod p)) mod p by NAT_D:61
      .= (((((n + m)*p + (p - 1)) choose p) mod p) +
      (1 mod p)) mod p by NEWTON:21
      .= (((((n + m)*p) choose p) mod p) +
      (1 mod p)) mod p by KPW,B2
      .= (n + m + 1) mod p by B1,NAT_D:66;
      hence thesis;
    end;
    for k be Nat holds P[k] from NAT_1:sch 2(A1,A2);
    hence thesis;
  end;
