
theorem KPW:
  for p be Prime, n,k be Nat holds k < p implies
    ((n*p + k) choose p) mod p = ((n*p) choose p) mod p
  proof
    let p be Prime, n be Nat;
    defpred P[Nat] means $1 < p implies
      ((n*p + $1) choose p) mod p = ((n*p) choose p) mod p;
    A1: P[0];
    A2: for m be Nat st P[m] holds P[m+1]
    proof
      let m be Nat such that
      B1: m < p implies ((n*p + m) choose p) mod p = ((n*p) choose p) mod p;
      B2: (p - 1) + 0 < (p - 1) + 1 by XREAL_1:6;
      m + 1 < p implies ((n*p + (m+1)) choose p) mod p = ((n*p) choose p) mod p
      proof
        assume
        C1: m + 1 < p;
        C2: m  + 0 < m + 1 by XREAL_1:6; then
        C3: m < p by C1,XXREAL_0:2;
        C4: (m + 1) - 1 < p - 1 by C1,XREAL_1:9;
        (((n*p + m)+1) choose ((p - 1) + 1)) mod p =
          (((((n*p + m)) choose ((p-1) + 1)) mod p)
        + (((n*p + m)) choose ((p - 1)) mod p)) mod p by CPP
        .= ((((n*p + m)) choose p) mod p)
        + (((n*p + m) mod p) choose ((p - 1)) mod p) mod p by B2,MOC
        .=((((n*p + m) choose p) mod p)
        + (((m mod p) choose (p - 1)) mod p)) mod p by NAT_D:61
        .=((((n*p + m) choose p) mod p)
        + ((m choose (p - 1)) mod p)) mod p by C3,NAT_D:24
        .=((((n*p + m) choose p) mod p)
        + (0 mod p)) mod p by C4,NEWTON:def 3
        .=((n*p) choose p) mod p by B1,C1,C2,XXREAL_0:2;
        hence thesis;
      end;
      hence thesis;
    end;
    for k be Nat holds P[k] from NAT_1:sch 2(A1,A2);
    hence thesis;
  end;
