
theorem MOC:
  for p be Prime, n,k be Nat st k < p holds
    (n choose k) mod p = ((n mod p) choose k) mod p
  proof
    let p be Prime;
    defpred P[Nat] means for k be Nat st k < p holds
    ($1 choose k) mod p = (($1 mod p) choose k) mod p;
    A2: P[0];
    A3: for i be Nat holds P[i] implies P[i+1]
    proof
      let i be Nat;
      assume
      B1: P[i];
      P[i + 1]
      proof
        let k be Nat such that
        C1: k < p;
        per cases;
        suppose k = 0;
          hence thesis by NEWTON:19;
        end;
        suppose
          k > 0; then
          reconsider m = k - 1 as Nat;
          m + 0 < m + 1 by XREAL_1:6; then
          m < p by C1,XXREAL_0:2; then
          D3: (i choose m) mod p = ((i mod p) choose m) mod p by B1;
          ((i + 1) choose (m + 1)) mod p =
            (((i choose m) mod p) + ((i choose k) mod p))mod p by CPP
          .= ((((i mod p) choose m) mod p) +
              (((i mod p) choose (m + 1)) mod p)) mod p by D3,B1,C1
          .= (((i mod p) + 1) choose (m + 1)) mod p by CPP;
          hence thesis by C1, CPK;
        end;
      end;
      hence thesis;
    end;
    for c be Nat holds P[c] from NAT_1:sch 2(A2,A3);
    hence thesis;
  end;
