
theorem PCM:
  for p be Prime, n be Nat, k be Nat holds
    k <= n < p implies
      ((p + n) choose k) mod p = (n choose k) mod p
  proof
    let p be Prime;
    defpred P[Nat] means
      for k be Nat holds (k <= $1 < p implies ((p + $1) choose k) mod p =
        ($1 choose k) mod p);
    A2: P[0]
    proof
      let k be Nat;
      assume
      k <= 0 < p; then
      k = 0; then
      ((p + 0) choose k) mod p = 1 mod (1 + (p - 1)) &
      (0 choose k) mod p = 1 mod (1 + (p - 1)) by NEWTON:19;
      hence thesis;
    end;
    A3: for m be Nat st P[m] holds P[m + 1]
    proof
      let m be Nat such that
      B1: for k be Nat holds
        k <= m < p implies ((p + m) choose k) mod p = (m choose k) mod p;
      for k be Nat holds
        k <= (m + 1) < p implies
          ((p + (m+1)) choose k) mod p = ((m+1) choose k) mod p
      proof
        let k be Nat;
        assume
        C1: k <= (m + 1) < p;
        m + 0 < m + 1 by XREAL_1:6; then
        C2: m < p by C1,XXREAL_0:2;
        per cases;
        suppose
          k = 0;
          hence thesis by NEWTON:19;
        end;
        suppose k > 0; then
          reconsider k as non zero Nat;
          reconsider q = k - 1 as Nat;
          D1: ((p + m) choose (q + 1)) mod p = (m choose (q + 1)) mod p
          proof
            per cases by C1,XXREAL_0:1;
            suppose
              E1: q + 1 = m + 1;
              0 = (m choose (m + 1)) mod p &
              0 = ((p + m) choose (q + 1)) mod p by E1,C1,PC0;
              hence thesis by E1;
            end;
            suppose q + 1 < m + 1; then
              q + 1 <= m by INT_1:7;
              hence thesis by B1,C2;
            end;
          end;
          ((p + m + 1) choose (q + 1)) mod p =
              (((p + m) choose q) + ((p + m) choose (q + 1))) mod p
                by NEWTON:22
          .= ((((p + m) choose q) mod p) +
              (((p + m) choose (q + 1)) mod p)) mod p by NAT_D:66
          .= (((m choose q) mod p) + ((m choose (q + 1)) mod p)) mod p
            by C1,D1,B1,C2,XREAL_1:6
          .= ((m choose q) + (m choose (q + 1))) mod p by NAT_D:66
          .= ((m + 1) choose (q + 1)) mod p by NEWTON:22;
          hence thesis;
        end;
      end;
      hence thesis;
    end;
    for c be Nat holds P[c] from NAT_1:sch 2(A2,A3);
    hence thesis;
  end;
