equal
deleted
inserted
replaced
1297 |
1297 |
1298 lemma binomial_code [code]: |
1298 lemma binomial_code [code]: |
1299 "n choose k = |
1299 "n choose k = |
1300 (if k > n then 0 |
1300 (if k > n then 0 |
1301 else if 2 * k > n then n choose (n - k) |
1301 else if 2 * k > n then n choose (n - k) |
1302 else (fold_atLeastAtMost_nat ( * ) (n - k + 1) n 1 div fact k))" |
1302 else (fold_atLeastAtMost_nat (*) (n - k + 1) n 1 div fact k))" |
1303 proof - |
1303 proof - |
1304 { |
1304 { |
1305 assume "k \<le> n" |
1305 assume "k \<le> n" |
1306 then have "{1..n} = {1..n-k} \<union> {n-k+1..n}" by auto |
1306 then have "{1..n} = {1..n-k} \<union> {n-k+1..n}" by auto |
1307 then have "(fact n :: nat) = fact (n-k) * \<Prod>{n-k+1..n}" |
1307 then have "(fact n :: nat) = fact (n-k) * \<Prod>{n-k+1..n}" |