Arguments uniq[A].
(* Georges' trick for easy case analysis *)
Inductive eq_Spec (A: Type) (x y: A): bool -> Prop :=
|eq_Spect:  x = y -> eq_Spec A x y true
|eq_Specf: x <> y -> eq_Spec A x y false.
Arguments eq_Spec[A].
(** Binomial Coefficient defined using Pascal's triangle *)
Fixpoint bin (a b : nat) {struct a} : nat :=
match a, b with
_, O => 1
| O, S b' => 0
| S a', S b' => bin a' (S b') + bin a' b'
end.

(** Basic properties of binomial coefficients *)
Lemma bin_0: forall (n : nat),  bin n 0 = 1.
intros n; induction n; auto.