(***********************************************************************
**********************************************************************
**********************************************************************

	BINOMIAL
*)

Fixpoint binomial (a : nat) : nat -> nat :=
  fun b : nat =>
  match a, b with
  | _, O => 1
  | O, S b' => 0
  | S a', S b' => binomial a' (S b') + binomial a' b'
  end.

Lemma binomial_fact : forall m n : nat, binomial (n + m) n * (factorial n * factorial m) = factorial (n + m).